Files
mixly3/boards/default_src/micropython_k210_mixgoai/generators/inout.js
2024-07-19 10:16:00 +08:00

106 lines
4.7 KiB
JavaScript

import * as Blockly from 'blockly/core';
export const PGA_SELET = function (_, generator) {
var code = this.getFieldValue('PGA');
return [code, generator.ORDER_ATOMIC];
}
export const inout_highlow = function (_, generator) {
// Boolean values HIGH and LOW.
var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0';
return [code, generator.ORDER_ATOMIC];
}
// ok
export const inout_digital_init = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var dropdown_mode = this.getFieldValue('MODE');
var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);
var code = varName + ' = board.pin(' + dropdown_pin + ', board.' + dropdown_mode + ')\n';
return code;
}
export const inout_digital_write = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
var code = "";
code = 'pin' + dropdown_pin + '.value(' + dropdown_stat + ')\n'
return code;
}
export const inout_digital_read = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = "";
code = 'pin' + dropdown_pin + '.value()';
return [code, generator.ORDER_ATOMIC];
}
export const inout_pwm_init = function (_, generator) {
generator.definitions_['import board'] = 'import board';
generator.definitions_['from machine import PWM'] = 'from machine import PWM';
generator.definitions_['from machine import Timer'] = 'from machine import Timer';
var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);
var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC);
var sub = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var Timer = sub % 3
var CHANNEL = parseInt(sub / 3)
var code1 = 'tim' + sub + ' = Timer(Timer.TIMER' + Timer + ',Timer.CHANNEL' + CHANNEL + ', mode=Timer.MODE_PWM)\n';
var code2 = varName + ' = PWM(tim' + sub + ',freq=' + freq + ',duty=0, pin=' + dropdown_pin + ')\n';
return code1 + code2;
}
export const inout_pwm_write = function (_, generator) {
generator.definitions_['from machine import PWM'] = 'from machine import PWM';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var dropdown_stat = generator.valueToCode(this, 'pwm', generator.ORDER_ATOMIC);
var code = "";
code = 'pin' + dropdown_pin + '.duty(' + dropdown_stat + ')\n'
return code;
}
export const inout_adc_init = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var key = generator.valueToCode(this, 'key', generator.ORDER_ATOMIC);
var code = 'board.adc_init(' + key + ')\n';
return code;
}
export const inout_adc_read = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'board.adc_read(' + pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const inout_adc_Vread = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'board.adc_vread(' + pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const inout_pin_attachInterrupt = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var dropdown_mode = this.getFieldValue('mode');
var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);
var code1 = 'key' + dropdown_pin + '=board.pin(' + dropdown_pin + ', board.GPIO.IN, board.GPIO.PULL_NONE)\n'
var code2 = 'key' + dropdown_pin + '.irq(' + atta + ',board.' + dropdown_mode + ',board.GPIO.WAKEUP_NOT_SUPPORT, 7)\n'
return code1 + code2;
}
export const inout_pin_disirq = function (_, generator) {
generator.definitions_['import board'] = 'import board';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'key' + dropdown_pin + '.disirq()\n'
return code;
}
/////////////////////////////////////////////