UNPKG

@mixly/arduino-avr

Version:
259 lines (236 loc) 13 kB
import { Profile } from 'mixly'; export const inout_highlow = function (_, generator) { // Boolean values HIGH and LOW. var code = (this.getFieldValue('BOOL') == 'HIGH') ? 'HIGH' : 'LOW'; return [code, generator.ORDER_ATOMIC]; } export const inout_pinMode = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_mode = this.getFieldValue('MODE'); // var code = 'pinMode(' + dropdown_pin + ', ' + dropdown_mode + ');\n'; return code; } export const inout_digital_write2 = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); var code = ""; var isVar = true; for (var pin of Profile.default.digital) { if (pin[1] === dropdown_pin) { isVar = false; break; } } if (isVar) { code = code + 'pinMode(' + dropdown_pin + ', OUTPUT);\n'; } else { if (generator.setups_['setup_input_' + dropdown_pin]) { delete generator.setups_['setup_input_' + dropdown_pin]; } generator.setups_['setup_output_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', OUTPUT);'; } code += 'digitalWrite(' + dropdown_pin + ', ' + dropdown_stat + ');\n' return code; } export const inout_digital_read = function (_, generator) { var dropdown_pin = this.getFieldValue('PIN'); generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; var code = 'digitalRead(' + dropdown_pin + ')'; return [code, generator.ORDER_ATOMIC]; } export const inout_digital_read2 = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var code = 'digitalRead(' + dropdown_pin + ')'; var isVar = true; for (var pin of Profile.default.digital) { if (pin[1] === dropdown_pin) { isVar = false; break; } } if (!isVar) { if (!generator.setups_['setup_output_' + dropdown_pin]) { generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; } if (generator.setups_['setup_setup']) { //解决pullup重复问题 if (generator.setups_['setup_setup'].indexOf('pinMode(' + dropdown_pin) > -1) { delete generator.setups_['setup_input_' + dropdown_pin]; } } } return [code, generator.ORDER_ATOMIC]; } export const inout_analog_write = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); //var dropdown_stat = this.getFieldValue('STAT'); var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); const { pwm } = Profile.default; if (typeof pwm === 'object') { for (let i of pwm) if (dropdown_pin === i[1]) { generator.setups_['setup_output' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', OUTPUT);'; break; } } var code = 'analogWrite(' + dropdown_pin + ', ' + value_num + ');\n'; return code; } export const inout_analog_read = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); const { analog } = Profile.default; if (typeof analog === 'object') { for (let i of analog) if (dropdown_pin === i[1]) { //generator.setups_['setup_output' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; break; } } var code = 'analogRead(' + dropdown_pin + ')'; return [code, generator.ORDER_ATOMIC]; } export const inout_buildin_led = function (_, generator) { var dropdown_stat = this.getFieldValue('STAT'); generator.setups_['setup_output_13'] = 'pinMode(13, OUTPUT);'; var code = 'digitalWrite(13, ' + dropdown_stat + ');\n' return code; } export const OneButton_interrupt = function (_, generator) { generator.definitions_['include_OneButton'] = '#include <OneButton.h>'; var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_mode = this.getFieldValue('mode'); var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC); generator.definitions_['var_declare_button' + dropdown_pin] = 'OneButton button' + dropdown_pin + '(' + dropdown_pin + ', ' + ((dropdown_stat == 'HIGH') ? 'false' : 'true') + ');'; generator.setups_['setup_onebutton_' + dropdown_pin + dropdown_mode] = 'button' + dropdown_pin + '.' + dropdown_mode + '(' + dropdown_mode + dropdown_pin + ');'; var code = 'button' + dropdown_pin + '.tick();'; var funcName = dropdown_mode + dropdown_pin; var branch = generator.statementToCode(this, 'DO'); var code2 = 'void' + ' ' + funcName + '() {\n' + branch + '}\n'; generator.definitions_[funcName] = code2; return code; } export const controls_attachInterrupt = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_mode = this.getFieldValue('mode'); generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT_PULLUP);'; //var interrupt_pin=digitalPinToInterrupt(dropdown_pin).toString(); var interrupt_pin = 'digitalPinToInterrupt(' + dropdown_pin + ')'; var code = 'attachInterrupt' + '(' + interrupt_pin + ',' + 'attachInterrupt_fun_' + dropdown_mode + '_' + dropdown_pin + ', ' + dropdown_mode + ');\n' var funcName = 'attachInterrupt_fun_' + dropdown_mode + '_' + dropdown_pin; var branch = generator.statementToCode(this, 'DO'); var code2 = 'void' + ' ' + funcName + '() {\n' + branch + '}\n'; generator.definitions_[funcName] = code2; return code; } export const controls_detachInterrupt = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; //var interrupt_pin=digitalPinToInterrupt(dropdown_pin).toString(); var interrupt_pin = 'digitalPinToInterrupt(' + dropdown_pin + ')'; var code = 'detachInterrupt' + '(' + interrupt_pin + ');\n' return code; } export const controls_attachPinInterrupt = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_mode = this.getFieldValue('mode'); generator.definitions_['include_PinChangeInterrupt'] = '#include <PinChangeInterrupt.h>'; generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; //var interrupt_pin=digitalPinToInterrupt(dropdown_pin).toString(); var code = 'attachPCINT(digitalPinToPCINT(' + dropdown_pin + '),' + 'attachPinInterrupt_fun_' + dropdown_mode + '_' + dropdown_pin + ', ' + dropdown_mode + ');\n' var funcName = 'attachPinInterrupt_fun_' + dropdown_mode + '_' + dropdown_pin; var branch = generator.statementToCode(this, 'DO'); var code2 = 'void' + ' ' + funcName + '() {\n' + branch + '}\n'; generator.definitions_[funcName] = code2; return code; } export const controls_detachPinInterrupt = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; //var interrupt_pin=digitalPinToInterrupt(dropdown_pin).toString(); var code = 'detachPCINT(digitalPinToPCINT(' + dropdown_pin + '));\n' return code; } export const inout_pulseIn = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_stat = this.getFieldValue('STAT'); generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; var code = 'pulseIn(' + dropdown_pin + ', ' + dropdown_stat + ')'; return [code, generator.ORDER_ATOMIC]; } export const inout_pulseIn2 = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_stat = this.getFieldValue('STAT'); var timeout = generator.valueToCode(this, 'TIMEOUT', generator.ORDER_ATOMIC) || '0'; generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT);'; var code = 'pulseIn(' + dropdown_pin + ', ' + dropdown_stat + ', ' + timeout + ')'; return [code, generator.ORDER_ATOMIC]; } export const inout_shiftout = function (_, generator) { var dropdown_pin1 = generator.valueToCode(this, 'PIN1', generator.ORDER_ATOMIC); var dropdown_pin2 = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC); var dropdown_order = this.getFieldValue('ORDER'); var value = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0'; generator.setups_['setup_output_' + dropdown_pin1] = 'pinMode(' + dropdown_pin1 + ', OUTPUT);'; generator.setups_['setup_output_' + dropdown_pin2] = 'pinMode(' + dropdown_pin2 + ', OUTPUT);'; var code = 'shiftOut(' + dropdown_pin1 + ', ' + dropdown_pin2 + ', ' + dropdown_order + ', ' + value + ');\n' return code; } export const ESP32touchButton = function (_, generator) { generator.definitions_['include_ESP32touchButton'] = '#include <ESP32touchButton.h>'; var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var dropdown_mode = this.getFieldValue('mode'); generator.definitions_['var_declare_button' + dropdown_pin] = 'ESP32touchButton button' + dropdown_pin + '(' + dropdown_pin + ', true);'; generator.setups_['setup_onebutton_' + dropdown_pin + dropdown_mode] = 'button' + dropdown_pin + '.' + dropdown_mode + '(' + dropdown_mode + dropdown_pin + ');'; var code = 'button' + dropdown_pin + '.tick();'; var funcName = dropdown_mode + dropdown_pin; var branch = generator.statementToCode(this, 'DO'); var code2 = 'void' + ' ' + funcName + '() {\n' + branch + '}\n'; generator.definitions_[funcName] = code2; return code; } export const inout_soft_analog_write = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); generator.definitions_['include_SoftPWM'] = '#include <SoftPWM.h>'; generator.setups_['setup_soft_analog_write'] = 'SoftPWMBegin();'; var code = 'SoftPWMSet(' + dropdown_pin + ', ' + value_num + ');\n'; return code; } export const inout_cancel_soft_analog_write = function (_, generator) { var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC); generator.definitions_['include_SoftPWM'] = '#include <SoftPWM.h>'; generator.setups_['setup_soft_analog_write'] = 'SoftPWMBegin();'; var code = 'SoftPWMEnd(' + dropdown_pin + ');\n'; return code; } // ADS1015模数转换模块 设置范围以及精度 export const ADS1015_setGain = function (_, generator) { var GAIN = this.getFieldValue('ADS1015_setGain'); generator.definitions_['include_Wire'] = '#include <Wire.h>'; generator.definitions_['include_Adafruit_ADS1015'] = '#include <Adafruit_ADS1015.h>'; generator.definitions_['var_declare_Adafruit_ADS1015_ads'] = 'Adafruit_ADS1015 ads;\n'; generator.setups_['setup_ads.begin()'] = 'ads.begin();\n'; generator.setups_['setup_ads.setGain'] = 'ads.setGain(' + GAIN + ');'; var code = ''; return code; } // ADS1015模数转换模块 采集数值 export const ADS1015_Get_Value = function (_, generator) { generator.definitions_['include_Wire'] = '#include <Wire.h>'; generator.definitions_['include_Adafruit_ADS1015'] = '#include <Adafruit_ADS1015.h>'; generator.definitions_['var_declare_Adafruit_ADS1015_ads'] = 'Adafruit_ADS1015 ads;\n'; generator.setups_['setup_ads.begin()'] = 'ads.begin();'; var dropdown_type = this.getFieldValue('ADS1015_AIN'); var code = dropdown_type; return [code, generator.ORDER_ATOMIC]; } // PCF8591T模数转换模块 采集数值 export const PCF8591T = function (_, generator) { //generator.definitions_['include_Wire'] = '#include <Arduino.h>'; generator.definitions_['include_PCF8591_h'] = '#include <PCF8591.h>'; generator.definitions_['var_declare_PCF8591'] = 'PCF8591 pcf8591(0x48);'; generator.setups_['setup_pcf8591.begin()'] = 'pcf8591.begin();\n'; var dropdown_type = this.getFieldValue('PCF8591T_AIN'); var code = dropdown_type; return [code, generator.ORDER_ATOMIC]; }