初始化提交

This commit is contained in:
王立帮
2024-07-19 10:16:00 +08:00
parent 4c7b571f20
commit 4a2d56dcc4
7084 changed files with 741212 additions and 63 deletions

View File

@@ -0,0 +1,182 @@
import { sensor_light, sensor_sound } from './sensor';
export const handbit_button_is_pressed = function (_, generator) {
var btn = this.getFieldValue('btn');
generator.setups_['setup_btn' + btn] = 'pinMode(' + btn + ',INPUT);';
var code = '!digitalRead(' + btn + ')';
return [code, generator.ORDER_ATOMIC];
}
export const handbit_light = sensor_light;
export const handbit_sound = sensor_sound;
// 传感器_重力感应块
export const handbit_MSA300 = function (_, generator) {
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_MSA300'] = '#include <MSA300.h>';
generator.definitions_['var_declare_MSA300'] = 'MSA300 msa;\n';
generator.setups_['setup_msa.begin'] = 'msa.begin();';
generator.setups_['setup_Wire.begin'] = 'Wire.begin();';
var dropdown_type = this.getFieldValue('HANDBIT_MSA300_GETAB');
var code = dropdown_type;
return [code, generator.ORDER_ATOMIC];
}
// 传感器_重力感应块
export const handbit_MSA300_action = function (_, generator) {
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_MSA300'] = '#include <MSA300.h>';
generator.definitions_['var_declare_MSA300'] = 'MSA300 msa;\n';
generator.setups_['setup_msa.begin'] = 'msa.begin();';
generator.setups_['setup_Wire.begin'] = 'Wire.begin();';
var dropdown_type = this.getFieldValue('HANDBIT_MSA300_ACTION');
var code = dropdown_type;
return [code, generator.ORDER_ATOMIC];
}
export const touchAttachInterrupt = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var threshold = generator.valueToCode(this, 'threshold', generator.ORDER_ATOMIC);
generator.setups_['touchAttachInterrupt' + dropdown_pin] = 'touchAttachInterrupt(' + dropdown_pin + ',gotTouch' + dropdown_pin + ', ' + threshold + ');';
//var interrupt_pin=digitalPinToInterrupt(dropdown_pin).toString();
var code = '';
var funcName = 'gotTouch' + dropdown_pin;
var branch = generator.statementToCode(this, 'DO');
var code2 = 'void' + ' ' + funcName + '() {\n' + branch + '}\n';
generator.definitions_[funcName] = code2;
return code;
}
export const inout_touchRead = function (_, generator) {
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'touchRead(' + pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const handbit_rgb = function (_, generator) {
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var COLOR = generator.valueToCode(this, 'COLOR', generator.ORDER_ATOMIC);
COLOR = COLOR.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var code = 'rgb_display_17.setPixelColor(' + value_led + '-1,' + COLOR + ');\n';
return code;
}
export const handbit_rgb2 = function (_, generator) {
var COLOR1 = generator.valueToCode(this, 'COLOR1', generator.ORDER_ATOMIC);
var COLOR2 = generator.valueToCode(this, 'COLOR2', generator.ORDER_ATOMIC);
var COLOR3 = generator.valueToCode(this, 'COLOR3', generator.ORDER_ATOMIC);
COLOR1 = COLOR1.replace(/#/g, "0x");
COLOR2 = COLOR2.replace(/#/g, "0x");
COLOR3 = COLOR3.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var code = 'rgb_display_17.setPixelColor(0,' + COLOR1 + ');\n';
code += 'rgb_display_17.setPixelColor(1,' + COLOR2 + ');\n';
code += 'rgb_display_17.setPixelColor(2,' + COLOR3 + ');\n';
return code;
}
export const handbit_rgb_Brightness = function (_, generator) {
var Brightness = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var code = 'rgb_display_17.setBrightness(' + Brightness + ');\n';
return code;
}
export const handbit_rgb_show = function () {
var code = 'rgb_display_17.show();\n'
// +'rgb_display_17.show();\ndelay(1);\n'
return code;
}
export const handbit_rgb_rainbow1 = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_GRB + NEO_KHZ800);';
var wait_time = generator.valueToCode(this, 'WAIT', generator.ORDER_ATOMIC);
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var funcName2 = 'Wheel';
var code2 = 'uint32_t Wheel(byte WheelPos) {\n';
code2 += 'if(WheelPos < 85) \n{\nreturn rgb_display_17.Color(WheelPos * 3, 255 - WheelPos * 3, 0);\n} \n';
code2 += 'else if(WheelPos < 170) \n{\nWheelPos -= 85; \nreturn rgb_display_17.Color(255 - WheelPos * 3, 0, WheelPos * 3);\n}\n ';
code2 += 'else\n {\nWheelPos -= 170;\nreturn rgb_display_17.Color(0, WheelPos * 3, 255 - WheelPos * 3);\n}\n';
code2 += '}\n';
generator.definitions_[funcName2] = code2;
var funcName3 = 'rainbow';
var code3 = 'void rainbow(uint8_t wait) {\n uint16_t i, j;\n';
code3 += 'for(j=0; j<256; j++) {\n';
code3 += 'for(i=0; i<rgb_display_17.numPixels(); i++)\n {\n';
code3 += 'rgb_display_17.setPixelColor(i, Wheel((i+j) & 255));\n}\n';
code3 += 'rgb_display_17.show();\n';
// code3 += 'delay(wait);'
code3 += ' \n}\n}\n';
generator.definitions_[funcName3] = code3;
var code = 'rainbow(' + wait_time + ');\n'
return code;
}
export const handbit_rgb_rainbow3 = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_GRB + NEO_KHZ800);';
var rainbow_color = generator.valueToCode(this, 'rainbow_color', generator.ORDER_ATOMIC);
var type = this.getFieldValue('TYPE');
var funcName2 = 'Wheel';
var code2 = 'uint32_t Wheel(byte WheelPos) {\n';
code2 += 'if(WheelPos < 85)\n {\nreturn rgb_display_17.Color(WheelPos * 3, 255 - WheelPos * 3, 0);} \n';
code2 += 'else if(WheelPos < 170)\n {\nWheelPos -= 85; return rgb_display_17.Color(255 - WheelPos * 3, 0, WheelPos * 3);}\n ';
code2 += 'else {\nWheelPos -= 170;return rgb_display_17.Color(0, WheelPos * 3, 255 - WheelPos * 3);}\n';
code2 += '}\n';
generator.definitions_[funcName2] = code2;
if (type == "normal")
var code3 = 'for (int i = 0; i < rgb_display_17.numPixels(); i++)\n{rgb_display_17.setPixelColor(i, Wheel(' + rainbow_color + ' & 255));\n}\n';
else
var code3 = 'for (int i = 0; i < rgb_display_17.numPixels(); i++)\n {rgb_display_17.setPixelColor(i, Wheel(((i * 256 / rgb_display_17.numPixels()) + ' + rainbow_color + ') & 255));\n}\n';
return code3;
}
export const OneButton = function (_, generator) {
generator.definitions_['include_OneButton'] = '#include <OneButton.h>';
var dropdown_pin = this.getFieldValue('PIN');
var dropdown_mode = this.getFieldValue('mode');
generator.definitions_['var_declare_button' + dropdown_pin] = 'OneButton 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 handbit_motor_move = function (_, generator) {
var dropdown_type = this.getFieldValue('type');
var value_speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.setups_['setup_i2c_23_22'] = 'Wire.begin(23, 22);';
generator.definitions_['HandBit_Motor_Speed_fun'] = 'void HandBit_Motor_Speed(int pin, int speed){//电机速度设置 pin=1~2,speed=--100~100\n'
+ ' Wire.beginTransmission(0x10);\n'
+ ' Wire.write(pin);\n'
+ ' Wire.write(speed);\n'
+ ' Wire.endTransmission();\n'
+ '}';
var code = 'HandBit_Motor_Speed(' + dropdown_type + ', ' + value_speed + ');\n';
return code;
}
export const handbit_RGB_color_HSV = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_GRB + NEO_KHZ800);';
var dropdown_rgbpin = 17;
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var H = generator.valueToCode(this, 'H', generator.ORDER_ATOMIC);
var S = generator.valueToCode(this, 'S', generator.ORDER_ATOMIC);
var V = generator.valueToCode(this, 'V', generator.ORDER_ATOMIC);
var code = 'rgb_display_' + dropdown_rgbpin + '.setPixelColor(' + value_led + ')-1, ' + 'rgb_display_' + dropdown_rgbpin + '.ColorHSV(' + H + ',' + S + ',' + V + '));\n';
return code;
}

View File

@@ -0,0 +1,250 @@
import { sensor_light, sensor_sound } from './sensor';
// 执行器_点阵屏显示_字符显示
export const HT16K33_TEXT = function (_, generator) {
generator.definitions_['include_HT16K33'] = '#include <ZT16K33.h>';
generator.definitions_['var_declare_HT16K33'] = 'HT16K33 MixGo_HT16K33;';
generator.setups_['setup_Matrix_1'] = 'MixGo_HT16K33.begin(0x70);';
generator.setups_['setup_Matrix_2'] = 'delay(100);';
var string1 = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT);
var code = 'MixGo_HT16K33.drawStr(' + string1 + ');\n'
return code;
}
// 执行器_点阵屏显示_画点显示
export const HT16K33_POS = function (_, generator) {
generator.definitions_['2_include_HT16K33'] = '#include <ZT16K33.h>';
generator.definitions_['var_declare_HT16K33'] = 'HT16K33 MixGo_HT16K33;';
generator.setups_['setup_Matrix_1'] = 'MixGo_HT16K33.begin(0x70);';
generator.setups_['setup_Matrix_2'] = 'delay(100);';
var pos_x = generator.valueToCode(this, 'XVALUE', generator.ORDER_ASSIGNMENT);
var pos_y = generator.valueToCode(this, 'YVALUE', generator.ORDER_ASSIGNMENT);
var dropdown_type = this.getFieldValue('DrawPixel_TYPE');
var code = 'MixGo_HT16K33.drawPixel(' + pos_x + '-1,' + pos_y + '-1,' + dropdown_type + ');\n'
code += 'MixGo_HT16K33.writeDisplay();\n';
return code;
}
// 执行器_点阵屏显示_显示图案
export const HT16K33_DisplayChar = function (_, generator) {
generator.definitions_['2_include_HT16K33'] = '#include <ZT16K33.h>';
generator.definitions_['var_declare_HT16K33'] = 'HT16K33 MixGo_HT16K33;';
generator.definitions_['var_declare_Matrix1'] = 'uint16_t MixGo_LedArray[8];';
generator.setups_['setup_Matrix_1'] = 'MixGo_HT16K33.begin(0x70);';
generator.setups_['setup_Matrix_2'] = 'delay(100);';
var dropdown_pin = generator.valueToCode(this, 'Chars', generator.ORDER_ASSIGNMENT);
// var code='Matrix_'+SDA+'_'+SCL+'.clear();\n';
var code = '';
code += 'for(int i=0; i<8; i++)\n';
code += '{\n'
code += ' MixGo_LedArray[i]=' + dropdown_pin + '[i];\n';
code += ' for(int j=15; j>=0; j--)\n'
code += ' {\n'
code += ' if((MixGo_LedArray[i]&0x01)>0)\n';
code += ' MixGo_HT16K33.drawPixel(j, i,LED_ON);\n';
code += ' MixGo_LedArray[i] = MixGo_LedArray[i]>>1;\n';
code += ' } \n'
code += '}\n'
code += 'MixGo_HT16K33.writeDisplay();\n'
return code;
}
// 执行器_点阵屏显示_图案数组
export const HT16K33_LedArray = function (_, generator) {
var varName = this.getFieldValue('VAR');
var a = new Array();
for (var i = 1; i < 9; i++) {
a[i] = new Array();
for (var j = 1; j < 17; j++) {
a[i][j] = (this.getFieldValue('a' + i + j) == "TRUE") ? 1 : 0;
}
}
var code = '{';
for (var i = 1; i < 9; i++) {
var tmp = ""
for (var j = 1; j < 17; j++) {
tmp += a[i][j];
}
tmp = (parseInt(tmp, 2)).toString(16)
// alert(tmp);
if (tmp.length == 1)
tmp = "000" + tmp;
else if (tmp.length == 2)
tmp = "00" + tmp;
else if (tmp.length == 3)
tmp = "0" + tmp;
code += '0x' + tmp + ((i != 8) ? ',' : '');
}
code += '};';
generator.definitions_[varName] = "uint16_t " + varName + "[8]=" + code;
//return ["LedArray_"+clearString(this.id), generator.ORDER_ATOMIC];
return [varName, generator.ORDER_ATOMIC];
}
// 辅助块_点阵屏_清除显示
export const HT16K33_Displayclear = function (_, generator) {
generator.definitions_['2_include_HT16K33'] = '#include <ZT16K33.h>';
generator.definitions_['var_declare_HT16K33'] = 'HT16K33 MixGo_HT16K33;';
generator.setups_['setup_Matrix_1'] = 'MixGo_HT16K33.begin(0x70);';
generator.setups_['setup_Matrix_2'] = 'delay(100);';
var code = '';
code += 'MixGo_HT16K33.clear();\n';
return code;
}
// 辅助块_点阵屏_清除显示
export const HT16K33_brightness = function (_, generator) {
var BRIGHTNESS = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
generator.definitions_['2_include_HT16K33'] = '#include <ZT16K33.h>';
generator.definitions_['var_declare_HT16K33'] = 'HT16K33 MixGo_HT16K33;';
generator.setups_['setup_Matrix_1'] = 'MixGo_HT16K33.begin(0x70);';
generator.setups_['setup_Matrix_2'] = 'delay(100);';
var code = '';
code += 'MixGo_HT16K33.setBrightness(' + BRIGHTNESS + ');\n';
return code;
}
export const HT16K33_show_image = function (_, generator) {
var dropdown_img_ = this.getFieldValue('img_');
var code = '"' + dropdown_img_ + '"';
code = '{';
for (var i = 0; i < 31; i += 4) {
code += '0x' + dropdown_img_.substr(i, 4) + ((i != 28) ? ',' : '');
}
code += '};\n';
generator.definitions_['matrix_img_' + dropdown_img_] = "byte " + 'matrix_img_' + dropdown_img_ + "[]=" + code;
return ['matrix_img_' + dropdown_img_, generator.ORDER_ATOMIC];
}
export const sensor_mixgo_light = sensor_light;
export const sensor_mixgo_sound = sensor_sound;
export const mixgo_touch_pin = function (_, generator) {
var touch_pin = this.getFieldValue('touch_pin');
var code = 'touchRead(' + touch_pin + ')';
return [code, generator.ORDER_ATOMIC];
};
export const sensor_mixgo_pin_near = function (_, generator) {
var direction = this.getFieldValue('direction');
var code = 'digitalRead(' + direction + ')';
return [code, generator.ORDER_ATOMIC];
}
export const mixGo_led = function (_, generator) {
var op = this.getFieldValue('STAT');
var bright = generator.valueToCode(this, 'bright', generator.ORDER_ATOMIC);
generator.setups_['setup_pinmode' + op] = 'pinMode(' + op + ',OUTPUT);';
var code = "digitalWrite(" + op + ",!" + bright + ");\n";
return code;
}
export const MixGo_rgb = function (_, generator) {
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var COLOR = generator.valueToCode(this, 'COLOR', generator.ORDER_ATOMIC);
COLOR = COLOR.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display02'] = 'Adafruit_NeoPixel rgb_display_02= Adafruit_NeoPixel(2,2,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_02'] = 'rgb_display_02.begin();';
var code = 'rgb_display_02.setPixelColor(' + value_led + '-1,' + COLOR + ');\n';
return code;
}
export const MixGo_rgb2 = function (_, generator) {
var COLOR1 = generator.valueToCode(this, 'COLOR1', generator.ORDER_ATOMIC);
var COLOR2 = generator.valueToCode(this, 'COLOR2', generator.ORDER_ATOMIC);
COLOR1 = COLOR1.replace(/#/g, "0x");
COLOR2 = COLOR2.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display02'] = 'Adafruit_NeoPixel rgb_display_02= Adafruit_NeoPixel(2,2,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_02'] = 'rgb_display_02.begin();';
var code = 'rgb_display_02.setPixelColor(0,' + COLOR1 + ');\n';
code += 'rgb_display_02.setPixelColor(1,' + COLOR2 + ');\n';
return code;
}
export const MixGo_rgb_Brightness = function (_, generator) {
var Brightness = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display02'] = 'Adafruit_NeoPixel rgb_display_02= Adafruit_NeoPixel(2,2,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_02'] = 'rgb_display_02.begin();';
var code = 'rgb_display_02.setBrightness(' + Brightness + ');\n';
return code;
}
export const MixGo_rgb_rainbow1 = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display02'] = 'Adafruit_NeoPixel rgb_display_02= Adafruit_NeoPixel(2,2,NEO_GRB + NEO_KHZ800);';
var wait_time = generator.valueToCode(this, 'WAIT', generator.ORDER_ATOMIC);
generator.setups_['setup_rgb_display_begin_02'] = 'rgb_display_02.begin();';
var funcName2 = 'Wheel';
var code2 = 'uint32_t Wheel(byte WheelPos) {\n';
code2 += 'if(WheelPos < 85) \n{\nreturn rgb_display_02.Color(WheelPos * 3, 255 - WheelPos * 3, 0);\n} \n';
code2 += 'else if(WheelPos < 170) \n{\nWheelPos -= 85; \nreturn rgb_display_02.Color(255 - WheelPos * 3, 0, WheelPos * 3);\n}\n ';
code2 += 'else\n {\nWheelPos -= 170;\nreturn rgb_display_02.Color(0, WheelPos * 3, 255 - WheelPos * 3);\n}\n';
code2 += '}\n';
generator.definitions_[funcName2] = code2;
var funcName3 = 'rainbow';
var code3 = 'void rainbow(uint8_t wait) {\n uint16_t i, j;\n';
code3 += 'for(j=0; j<256; j++) {\n';
code3 += 'for(i=0; i<rgb_display_02.numPixels(); i++)\n {\n';
code3 += 'rgb_display_02.setPixelColor(i, Wheel((i+j) & 255));\n}\n';
code3 += 'rgb_display_02.show();\n';
//code3 += 'rgb_display_02.show();\n';
//code3 += 'delay(wait);\n';
code3 += '\n}\n}\n';
generator.definitions_[funcName3] = code3;
var code = 'rainbow(' + wait_time + ');\n'
return code;
}
export const MixGo_rgb_rainbow3 = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display02'] = 'Adafruit_NeoPixel rgb_display_02= Adafruit_NeoPixel(2,2,NEO_GRB + NEO_KHZ800);';
var rainbow_color = generator.valueToCode(this, 'rainbow_color', generator.ORDER_ATOMIC);
var type = this.getFieldValue('TYPE');
var funcName2 = 'Wheel';
var code2 = 'uint32_t Wheel(byte WheelPos) {\n';
code2 += 'if(WheelPos < 85)\n {\nreturn rgb_display_02.Color(WheelPos * 3, 255 - WheelPos * 3, 0);} \n';
code2 += 'else if(WheelPos < 170)\n {\nWheelPos -= 85; return rgb_display_02.Color(255 - WheelPos * 3, 0, WheelPos * 3);}\n ';
code2 += 'else {\nWheelPos -= 170;return rgb_display_02.Color(0, WheelPos * 3, 255 - WheelPos * 3);}\n';
code2 += '}\n';
generator.definitions_[funcName2] = code2;
if (type == "normal")
var code3 = 'for (int i = 0; i < rgb_display_02.numPixels(); i++)\n{rgb_display_02.setPixelColor(i, Wheel(' + rainbow_color + ' & 255));\n}\n';
else
var code3 = 'for (int i = 0; i < rgb_display_02.numPixels(); i++)\n {rgb_display_02.setPixelColor(i, Wheel(((i * 256 / rgb_display_02.numPixels()) + ' + rainbow_color + ') & 255));\n}\n';
return code3;
}
export const MixGo_rgb_show = function () {
var code = 'rgb_display_02.show();rgb_display_02.show();\ndelay(1);\n';
return code;
}
export const OneButton = function (_, generator) {
generator.definitions_['include_OneButton'] = '#include <OneButton.h>';
var dropdown_pin = this.getFieldValue('PIN');
var dropdown_mode = this.getFieldValue('mode');
generator.definitions_['var_declare_button' + dropdown_pin] = 'OneButton button' + dropdown_pin + '(' + dropdown_pin + ',false);';
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 mixgo_button_is_pressed = function (_, generator) {
var btn = this.getFieldValue('PIN');
generator.setups_['setup_btn' + btn] = 'pinMode(' + btn + ',INPUT);';
var code = 'digitalRead(' + btn + ')';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_button_is_pressed = mixgo_button_is_pressed;
// export const sensor_pin_pressed = sensor_mixgo_pin_pressed;
export const sensor_pin_near = sensor_mixgo_pin_near;

View File

@@ -0,0 +1,153 @@
export const mixepi_inout_touchRead = function (_, generator) {
var touch_pin = this.getFieldValue('touch_pin');
var code = 'touchRead(' + touch_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const mixepi_button_is_pressed = function (_, generator) {
var btn = this.getFieldValue('btn');
generator.setups_['setup_btn' + btn] = 'pinMode(' + btn + ',INPUT);';
var code = '!digitalRead(' + btn + ')';
return [code, generator.ORDER_ATOMIC];
}
export const mixePi_button_is_pressed = function (_, generator) {
var btn = this.getFieldValue('btn');
generator.setups_['setup_btn' + btn] = 'pinMode(' + btn + ',INPUT_PULLUP);';
var code = '!digitalRead(' + btn + ')';
return [code, generator.ORDER_ATOMIC];
}
export const mixepi_light = function (_, generator) {
return ['analogRead(39)', generator.ORDER_ATOMIC];
}
export const mixepi_sound = function (_, generator) {
return ['analogRead(36)', generator.ORDER_ATOMIC];
}
//传感器_重力感应块
export const mixepi_ADXL345_action = function (_, generator) {
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_I2Cdev'] = '#include <I2Cdev.h>';
generator.definitions_['include_ADXL345'] = '#include <ADXL345.h>';
generator.definitions_['var_declare_ADXL345'] = 'ADXL345 accel;\n';
generator.setups_['setup_accel.begin'] = 'accel.begin();';
generator.setups_['setup_Wire.begin'] = 'Wire.begin();';
var dropdown_type = this.getFieldValue('MIXEPI_ADXL345_ACTION');
var code = dropdown_type;
return [code, generator.ORDER_ATOMIC];
}
export const RGB_color_seclet = function (_, generator) {
var colour = this.getFieldValue('COLOR');
return [colour, generator.ORDER_NONE];
}
export const RGB_color_rgb = function (_, generator) {
var R = generator.valueToCode(this, 'R', generator.ORDER_ATOMIC);
var G = generator.valueToCode(this, 'G', generator.ORDER_ATOMIC);
var B = generator.valueToCode(this, 'B', generator.ORDER_ATOMIC);
// if(parseInt(R).toString(16).length>1)
// var colour = parseInt(R).toString(16);
// else
// var colour = 0+parseInt(R).toString(16);
// if(parseInt(G).toString(16).length>1)
// colour += parseInt(G).toString(16);
// else
// colour += 0+parseInt(G).toString(16);
// if(parseInt(B).toString(16).length>1)
// colour += parseInt(B).toString(16);
// else
// colour += 0+parseInt(B).toString(16);
// colour="#"+colour;
var colour = R + "*65536" + "+" + G + "*256" + "+" + B;
return [colour, generator.ORDER_NONE];
}
export const mixepi_rgb = function (_, generator) {
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var COLOR = generator.valueToCode(this, 'COLOR', generator.ORDER_ATOMIC);
COLOR = COLOR.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_RGB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var code = 'rgb_display_17.setPixelColor(' + value_led + '-1,' + COLOR + ');\n';
code += 'rgb_display_17.show();\nrgb_display_17.show();\n';
return code;
}
export const mixepi_rgb2 = function (_, generator) {
var COLOR1 = generator.valueToCode(this, 'COLOR1', generator.ORDER_ATOMIC);
var COLOR2 = generator.valueToCode(this, 'COLOR2', generator.ORDER_ATOMIC);
var COLOR3 = generator.valueToCode(this, 'COLOR3', generator.ORDER_ATOMIC);
COLOR1 = COLOR1.replace(/#/g, "0x");
COLOR2 = COLOR2.replace(/#/g, "0x");
COLOR3 = COLOR3.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_RGB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var code = 'rgb_display_17.setPixelColor(0,' + COLOR1 + ');\n';
code += 'rgb_display_17.setPixelColor(1,' + COLOR2 + ');\n';
code += 'rgb_display_17.setPixelColor(2,' + COLOR3 + ');\n';
code += 'rgb_display_17.show();\nrgb_display_17.show();\n';
return code;
}
export const mixepi_rgb_Brightness = function (_, generator) {
var Brightness = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_RGB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var code = 'rgb_display_17.setBrightness(' + Brightness + ');\n';
code += 'rgb_display_17.show();\nrgb_display_17.show();\n';
return code;
}
export const mixepi_rgb_rainbow1 = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_RGB + NEO_KHZ800);';
var wait_time = generator.valueToCode(this, 'WAIT', generator.ORDER_ATOMIC);
generator.setups_['setup_rgb_display_begin_17'] = 'rgb_display_17.begin();';
var funcName2 = 'Wheel';
var code2 = 'uint32_t Wheel(byte WheelPos) {\n';
code2 += 'if(WheelPos < 85) \n{\nreturn rgb_display_17.Color(WheelPos * 3, 255 - WheelPos * 3, 0);\n} \n';
code2 += 'else if(WheelPos < 170) \n{\nWheelPos -= 85; \nreturn rgb_display_17.Color(255 - WheelPos * 3, 0, WheelPos * 3);\n}\n ';
code2 += 'else\n {\nWheelPos -= 170;\nreturn rgb_display_17.Color(0, WheelPos * 3, 255 - WheelPos * 3);\n}\n';
code2 += '}\n';
generator.definitions_[funcName2] = code2;
var funcName3 = 'rainbow';
var code3 = 'void rainbow(uint8_t wait) {\n uint16_t i, j;\n';
code3 += 'for(j=0; j<256; j++) {\n';
code3 += 'for(i=0; i<rgb_display_17.numPixels(); i++)\n {\n';
code3 += 'rgb_display_17.setPixelColor(i, Wheel((i+j) & 255));\n}\n';
code3 += 'rgb_display_17.show();\nrgb_display_17.show();\n';
code3 += 'delay(wait);\n}\n}\n';
generator.definitions_[funcName3] = code3;
var code = 'rainbow(' + wait_time + ');\n'
return code;
}
export const mixepi_rgb_rainbow3 = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display17'] = 'Adafruit_NeoPixel rgb_display_17= Adafruit_NeoPixel(3,17,NEO_RGB + NEO_KHZ800);';
var rainbow_color = generator.valueToCode(this, 'rainbow_color', generator.ORDER_ATOMIC);
var type = this.getFieldValue('TYPE');
var funcName2 = 'Wheel';
var code2 = 'uint32_t Wheel(byte WheelPos) {\n';
code2 += 'if(WheelPos < 85)\n {\nreturn rgb_display_17.Color(WheelPos * 3, 255 - WheelPos * 3, 0);} \n';
code2 += 'else if(WheelPos < 170)\n {\nWheelPos -= 85; return rgb_display_17.Color(255 - WheelPos * 3, 0, WheelPos * 3);}\n ';
code2 += 'else {\nWheelPos -= 170;return rgb_display_17.Color(0, WheelPos * 3, 255 - WheelPos * 3);}\n';
code2 += '}\n';
generator.definitions_[funcName2] = code2;
if (type == "normal")
var code3 = 'for (int i = 0; i < rgb_display_17.numPixels(); i++)\n{rgb_display_17.setPixelColor(i, Wheel(' + rainbow_color + ' & 255));\n}\n';
else
var code3 = 'for (int i = 0; i < rgb_display_17.numPixels(); i++)\n {rgb_display_17.setPixelColor(i, Wheel(((i * 256 / rgb_display_17.numPixels()) + ' + rainbow_color + ') & 255));\n}\n';
return code3;
}
export const brightness_select = function (_, generator) {
var code = this.getFieldValue('STAT');
return [code, generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,174 @@
import { sensor_sound } from './sensor';
export const mixgo_button_is_pressed = function (_, generator) {
var btn = this.getFieldValue('PIN');
generator.setups_['setup_btn' + btn] = 'pinMode(' + btn + ',INPUT);';
var code = 'digitalRead(' + btn + ')';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_mixgo_sound = sensor_sound;
export const mixgo_touch_pin = function (_, generator) {
var touch_pin = this.getFieldValue('touch_pin');
var code = 'touchRead(' + touch_pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_mixgo_light = function (_, generator) {
var direction = this.getFieldValue('direction');
var code = 'analogRead(' + direction + ')';
return [code, generator.ORDER_ATOMIC];
}
export const OneButton = function (_, generator) {
generator.definitions_['include_OneButton'] = '#include <OneButton.h>';
var dropdown_pin = this.getFieldValue('PIN');
var dropdown_mode = this.getFieldValue('mode');
generator.definitions_['var_declare_button' + dropdown_pin] = 'OneButton button' + dropdown_pin + '(' + dropdown_pin + ',false);';
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 NTC_TEMP = function (_, generator) {
var PIN = 34;
var NominalResistance = 10000;
var betaCoefficient = 3380;
var seriesResistor = 10000;
generator.definitions_['include_thermistor'] = '#include <thermistor.h>';
generator.definitions_['var_declare_thermistor' + PIN] = 'THERMISTOR thermistor' + PIN + '(' + PIN + ',' + NominalResistance + "," + betaCoefficient + "," + seriesResistor + ");";
var code = 'thermistor' + PIN + '.read()/10.0';
return [code, generator.ORDER_ATOMIC];
}
export const controls_tone = function (_, generator) {
generator.definitions_['include_ESP32Tone'] = '#include <ESP32Tone.h>';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var fre = generator.valueToCode(this, 'FREQUENCY', generator.ORDER_ASSIGNMENT) || '0';
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var DELAY_TIME = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ASSIGNMENT) || '0';
var code = "";
code = " tone(" + dropdown_pin + ", " + fre + ", " + DELAY_TIME + ", " + channel + ");\n";
return code;
}
export const onboard_tone = function (_, generator) {
generator.definitions_['include_ESP32Tone'] = '#include <ESP32Tone.h>';
var fre = generator.valueToCode(this, 'FREQUENCY', generator.ORDER_ASSIGNMENT) || '0';
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var DELAY_TIME = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ASSIGNMENT) || '0';
var code = "";
code = " tone(BUZZER, " + fre + ", " + DELAY_TIME + ", " + channel + ");\n";
return code;
}
//传感器_重力感应块_获取9轴数据
export const mixgo_MPU9250 = function (_, generator) {
var dropdown_type = this.getFieldValue('MixGo_MPU9250_GETAB');
generator.definitions_['include_MPU9250_asukiaaa'] = '#include <MPU9250_asukiaaa.h>';
generator.definitions_['define_CALIB_SEC'] = '#define CALIB_SEC 20';
generator.definitions_['var_declare_MPU9250_asukiaaa'] = 'MPU9250_asukiaaa myMPU9250;\n float aX, aY, aZ, aSqrt, gX, gY, gZ, mDirection, mX, mY, mZ;';
generator.setups_['setup_Wire_begin'] = 'Wire.begin(SDA, SCL);\n';
generator.setups_['setup_myMPU9250_setWire'] = 'myMPU9250.setWire(&Wire);';
generator.setups_['setup_myMPU9250_beginAccel'] = 'myMPU9250.beginAccel();';
generator.setups_['setup_myMPU9250_beginMag'] = 'myMPU9250.beginMag();';
generator.setups_['setup_myMPU9250_beginGyro'] = 'myMPU9250.beginGyro();';
var func_setMagMinMaxAndSetOffset = 'void setMagMinMaxAndSetOffset(MPU9250_asukiaaa* sensor, int seconds) {\n'
+ 'unsigned long calibStartAt = millis();\n'
+ 'float magX, magXMin, magXMax, magY, magYMin, magYMax, magZ, magZMin, magZMax;\n'
+ 'sensor->magUpdate();\n'
+ 'magXMin = magXMax = sensor->magX();\n'
+ 'magYMin = magYMax = sensor->magY();\n'
+ 'magZMin = magZMax = sensor->magZ();\n'
+ 'while(millis() - calibStartAt < (unsigned long) seconds * 1000) {\n'
+ ' delay(100);\n'
+ ' sensor->magUpdate();\n'
+ ' magX = sensor->magX();\n'
+ ' magY = sensor->magY();\n'
+ ' magZ = sensor->magZ();\n'
+ ' if (magX > magXMax) magXMax = magX;\n'
+ ' if (magY > magYMax) magYMax = magY;\n'
+ ' if (magZ > magZMax) magZMax = magZ;\n'
+ ' if (magX < magXMin) magXMin = magX;\n'
+ ' if (magY < magYMin) magYMin = magY;\n'
+ ' if (magZ < magZMin) magZMin = magZ;\n'
+ '}\n'
+ 'sensor->magXOffset = - (magXMax + magXMin) / 2;\n'
+ 'sensor->magYOffset = - (magYMax + magYMin) / 2;\n'
+ 'sensor->magZOffset = - (magZMax + magZMin) / 2;\n'
+ '}'
var code = '';
if (dropdown_type == "a") code += 'myMPU9250.accelX()';
if (dropdown_type == "b") code += 'myMPU9250.accelY()';
if (dropdown_type == "c") code += 'myMPU9250.accelZ()';
if (dropdown_type == "d") code += 'myMPU9250.gyroX()';
if (dropdown_type == "e") code += 'myMPU9250.gyroY()';
if (dropdown_type == "f") code += 'myMPU9250.gyroZ()';
if (dropdown_type == "g") code += 'myMPU9250.magX()';
if (dropdown_type == "h") code += 'myMPU9250.magY()';
if (dropdown_type == "i") code += 'myMPU9250.magZ()';
if (dropdown_type == "j" || dropdown_type == "h" || dropdown_type == "g" || dropdown_type == "i") {
generator.setups_['setup_magnetometer'] = 'Serial.println("Start scanning values of magnetometer to get offset values.Rotate your device for " + String(CALIB_SEC) + " seconds.");';
generator.setups_['setup_setMagMinMaxAndSetOffset'] = 'setMagMinMaxAndSetOffset(&myMPU9250, CALIB_SEC);';
generator.setups_['setup_magnetometerFinished'] = ' Serial.println("Finished setting offset values.");';
generator.definitions_[func_setMagMinMaxAndSetOffset] = func_setMagMinMaxAndSetOffset;
code += 'myMPU9250.magHorizDirection()';
}
return [code, generator.ORDER_ATOMIC];
}
//传感器-MPU9250-更新数据
export const MPU9250_update = function () {
var code = 'myMPU9250.accelUpdate();\nmyMPU9250.gyroUpdate();\nmyMPU9250.magUpdate();\n';
return code;
}
export const Pocket_rgb = function (_, generator) {
var COLOR = generator.valueToCode(this, 'COLOR', generator.ORDER_ATOMIC);
COLOR = COLOR.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display12'] = 'Adafruit_NeoPixel rgb_display_12= Adafruit_NeoPixel(1,12,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_12'] = 'rgb_display_12.begin();';
var code = 'rgb_display_12.setPixelColor(0,' + COLOR + ');\n';
return code;
}
export const Pocket_rgb2 = function (_, generator) {
var COLOR = generator.valueToCode(this, 'COLOR1', generator.ORDER_ATOMIC);
COLOR = COLOR.replace(/#/g, "0x");
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display12'] = 'Adafruit_NeoPixel rgb_display_12= Adafruit_NeoPixel(1,12,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_12'] = 'rgb_display_12.begin();';
var code = 'rgb_display_12.setPixelColor(0,' + COLOR + ');\n';
return code;
}
export const Pocket_rgb_Brightness = function (_, generator) {
var Brightness = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display12'] = 'Adafruit_NeoPixel rgb_display_12= Adafruit_NeoPixel(1,12,NEO_GRB + NEO_KHZ800);';
generator.setups_['setup_rgb_display_begin_12'] = 'rgb_display_12.begin();';
var code = 'rgb_display_12.setBrightness(' + Brightness + ');\n';
return code;
}
export const Pocket_rgb_show = function () {
var code = 'rgb_display_12.show();\ndelay(1);\n';
return code;
}
export const pocket_RGB_color_HSV = function (_, generator) {
generator.definitions_['include_Adafruit_NeoPixel'] = '#include <Adafruit_NeoPixel.h>';
generator.definitions_['var_declare_rgb_display12'] = 'Adafruit_NeoPixel rgb_display_12= Adafruit_NeoPixel(1,12,NEO_GRB + NEO_KHZ800);';
var dropdown_rgbpin = 12;
var H = generator.valueToCode(this, 'H', generator.ORDER_ATOMIC);
var S = generator.valueToCode(this, 'S', generator.ORDER_ATOMIC);
var V = generator.valueToCode(this, 'V', generator.ORDER_ATOMIC);
var code = 'rgb_display_' + dropdown_rgbpin + '.setPixelColor(' + '0, ' + 'rgb_display_' + dropdown_rgbpin + '.ColorHSV(' + H + ',' + S + ',' + V + '));\n';
return code;
}

View File

@@ -0,0 +1,165 @@
export const display_rgb_show = function () {
var dropdown_rgbpin = this.getFieldValue('PIN');
var code = 'rgb_display_' + dropdown_rgbpin + '.show();\n'
// +'rgb_display_' + dropdown_rgbpin + '.show();\n'
//+"delay(1);"
return code;
}
export const servo_move = function (_, generator) {
var dropdown_pin = this.getFieldValue('PIN');
var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '0'
generator.definitions_['include_ESP32_Servo'] = '#include <ESP32_Servo.h>';
generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';';
generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ',500,2500);';
var code = 'servo_' + dropdown_pin + '.write(' + value_degree + ');\n' + 'delay(' + delay_time + ');\n';
return code;
}
export const servo_writeMicroseconds = function (_, generator) {
var dropdown_pin = this.getFieldValue('PIN');
var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);
generator.definitions_['include_ESP32_Servo'] = '#include <ESP32_Servo.h>';
generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';';
generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ');';
var code = 'servo_' + dropdown_pin + '.writeMicroseconds(' + value_degree + ');\n';
return code;
}
export const servo_read_degrees = function (_, generator) {
var dropdown_pin = this.getFieldValue('PIN');
generator.definitions_['include_ESP32_Servo'] = '#include <ESP32_Servo.h>';
generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';';
generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ');';
var code = 'servo_' + dropdown_pin + '.read()';
return [code, generator.ORDER_ATOMIC];
}
export const controls_tone = function (_, generator) {
generator.definitions_['include_ESP32Tone'] = '#include <ESP32Tone.h>';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var fre = generator.valueToCode(this, 'FREQUENCY', generator.ORDER_ASSIGNMENT) || '0';
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var DELAY_TIME = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ASSIGNMENT) || '0';
var code = "";
code = " tone(" + dropdown_pin + ", " + fre + ", " + DELAY_TIME + ", " + channel + ");\n";
return code;
}
export const controls_notone = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var code = "";
code = " noTone(" + dropdown_pin + ", " + channel + ");\n";
return code;
}
export const onboard_tone = function (_, generator) {
generator.definitions_['include_ESP32Tone'] = '#include <ESP32Tone.h>';
var fre = generator.valueToCode(this, 'FREQUENCY', generator.ORDER_ASSIGNMENT) || '0';
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var DELAY_TIME = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ASSIGNMENT) || '0';
var code = "";
code = " tone(BUZZER, " + fre + ", " + DELAY_TIME + ", " + channel + ");\n";
return code;
}
export const onboard_notone = function (_, generator) {
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var code = "";
code = " noTone(BUZZER, " + channel + ");\n";
return code;
}
// 执行器-电机转动
export const Mixly_motor = function (_, generator) {
var SPEED_PIN = generator.valueToCode(this, 'PIN1', generator.ORDER_ATOMIC);
var DIR_PIN = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ASSIGNMENT) || '0';
var code = 'setMotor(' + SPEED_PIN + ', ' + DIR_PIN + ', ' + speed + ');\n';
generator.definitions_['include_Arduino'] = '#include <generator.h>';
generator.setups_['setup_output_' + SPEED_PIN + DIR_PIN + '_S'] = 'pinMode(' + SPEED_PIN + ', OUTPUT);';
generator.setups_['setup_output_' + SPEED_PIN + DIR_PIN + '_D'] = 'pinMode(' + DIR_PIN + ', OUTPUT);';
generator.setups_['setup_output_' + SPEED_PIN + DIR_PIN + '_S_W'] = 'digitalWrite(' + SPEED_PIN + ', LOW);';
generator.setups_['setup_output_' + SPEED_PIN + DIR_PIN + '_D_W'] = 'digitalWrite(' + DIR_PIN + ', LOW);';
var funcName = 'setMotor';
var code2 = 'void ' + funcName + '(int speedpin,int dirpin, int speed)\n '
+ '{\n'
+ ' if (speed == 0)\n'
+ ' {\n'
+ ' digitalWrite(dirpin, LOW);\n'
+ ' analogWrite(speedpin, 0);\n'
+ ' } \n'
+ ' else if (speed > 0)\n'
+ ' {\n'
+ ' digitalWrite(dirpin, LOW);\n'
+ ' analogWrite(speedpin, speed);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' if(speed < -255)\n'
+ ' speed = -255;\n'
+ ' digitalWrite(dirpin, HIGH);\n'
+ ' analogWrite(speedpin, 255 + speed);\n'
+ ' }\n'
+ '}\n';
generator.definitions_[funcName] = code2;
return code;
}
export const motor_id = function (_, generator) {
var code = this.getFieldValue('CHANNEL');
return [code, generator.ORDER_ATOMIC];
}
export const HR8833_Motor_Setup = function (_, generator) {
var motor_id = generator.valueToCode(this, 'MOTOR_ID', generator.ORDER_ATOMIC);
var pin1 = generator.valueToCode(this, 'PIN1', generator.ORDER_ATOMIC);
var pin2 = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC);
generator.definitions_['HR8833_Motor_Setup_fun'] = 'void HR8833_Motor_Setup(int motorID,int pin1,int pin2){//电机初始化 ID=1~4 定义四组电机\n'
+ ' ledcSetup(motorID*2-2, 5000, 8);\n'
+ ' ledcAttachPin(pin1, motorID*2-2);\n'
+ ' ledcSetup(motorID*2-1, 5000, 8);\n'
+ ' ledcAttachPin(pin2, motorID*2-1);\n'
+ '}';
generator.setups_['motorID_' + motor_id] = 'HR8833_Motor_Setup(' + motor_id + ',' + pin1 + ',' + pin2 + ');';
var code = '';
return code;
}
export const HR8833_Motor_Speed = function (_, generator) {
var motor_id = generator.valueToCode(this, 'MOTOR_ID', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'SPEED', generator.ORDER_ATOMIC);
generator.definitions_['HR8833_Motor_Speed_fun'] = 'void HR8833_Motor_Speed(int motorID,int speed){//电机速度设置 ID=1~4,speed=-255~255\n'
+ ' if (speed == 0){ \n'
+ ' ledcWrite(motorID*2-2, 0);\n'
+ ' ledcWrite(motorID*2-1, 0);\n'
+ ' }\n'
+ ' else if (speed > 0){\n'
+ ' ledcWrite(motorID*2-2, speed);\n'
+ ' ledcWrite(motorID*2-1, 0);\n'
+ ' }\n'
+ ' else{\n'
+ ' ledcWrite(motorID*2-2, 0);\n'
+ ' ledcWrite(motorID*2-1, -speed);\n'
+ ' }\n'
+ '}\n';
var code = 'HR8833_Motor_Speed(' + motor_id + ',' + speed + ');\n';
return code;
}
export const handbit_motor_move = function (_, generator) {
var dropdown_type = this.getFieldValue('type');
var value_speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.setups_['setup_i2c_23_22'] = 'Wire.begin(23, 22);';
generator.definitions_['HandBit_Motor_Speed_fun'] = 'void HandBit_Motor_Speed(int pin, int speed){//电机速度设置 pin=1~2,speed=--100~100\n'
+ ' Wire.beginTransmission(0x10);\n'
+ ' Wire.write(pin);\n'
+ ' Wire.write(speed);\n'
+ ' Wire.endTransmission();\n'
+ '}';
var code = 'HandBit_Motor_Speed(' + dropdown_type + ', ' + value_speed + ');\n';
return code;
}

View File

@@ -0,0 +1,38 @@
import { Profile } from 'mixly';
export const spi_transfer = function (_, generator) {
generator.definitions_['include_SPI'] = '#include <SPI.h>';
generator.setups_['setup_spi'] = 'SPI.begin();';
var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);
var value = generator.valueToCode(this, 'value', generator.ORDER_ATOMIC);
generator.setups_['setup_output_' + pin] = 'pinMode(' + pin + ', OUTPUT);';
var code = "digitalWrite(" + pin + ", LOW);\n";
code += "SPI.transfer(" + value + ");\n";
code += "digitalWrite(" + pin + ", HIGH);\n";
return code;
}
export const serialBT_Init = function (_, generator) {
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || Profile.default.serial;
generator.definitions_['include_BluetoothSerial'] = '#include "BluetoothSerial.h"';
generator.definitions_['var_declare_BluetoothSerial'] = 'BluetoothSerial SerialBT;';
generator.setups_['setup_serial_BT'] = 'SerialBT.begin(' + content + ');';
generator.setups_['setup_serial_started'] = 'Serial.println("The device started, now you can pair it with bluetooth!");';
return '';
}
export const serialBT_available = function (_, generator) {
var code = "SerialBT.available() > 0";
return [code, generator.ORDER_ATOMIC];
}
export const serialBT_read = function (_, generator) {
var code = 'SerialBT.read()';
return [code, generator.ORDER_ATOMIC];
}
export const serialBT_write = function (_, generator) {
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""';
var code = 'SerialBT.write(' + content + ');\n';
return code;
}

View File

@@ -0,0 +1,67 @@
import { controls_delay } from '@mixly/arduino-avr/generators/control';
export const controls_runnig_core = function (_, generator) {
var task = this.getFieldValue('task');
var core = this.getFieldValue('core');
var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC);
var branch = generator.statementToCode(this, 'setup');
branch = branch.replace(/(^\s*)|(\s*$)/g, "");
var branch1 = generator.statementToCode(this, 'loop');
branch1 = branch1.replace(/(^\s*)|(\s*$)/g, "");
generator.definitions_['esp32_task_' + task] = 'void task_' + task + '( void * pvParameters ){\nfor(;;){\n ' + branch1 + '\n vTaskDelay(1);\n}\n}\n';
generator.setups_['setups_esp32_task_' + task] = '' + branch + '\n xTaskCreatePinnedToCore(task_' + task + ', "task_' + task + '", ' + value_length + ', NULL, 2, NULL, ' + core + ');\n';
return 'vTaskDelay(1);\n';
}
export const control_core_delay = function (_, generator) {
var value_sleeplength = generator.valueToCode(this, 'sleeplength', generator.ORDER_ATOMIC);
var code = 'vTaskDelay(' + value_sleeplength + ');\n'
return code;
}
export const controls_hw_timer = function (_, generator) {
var time = generator.valueToCode(this, 'TIME', generator.ORDER_ATOMIC);
var TIMER_NUM = this.getFieldValue('TIMER_NUM');
var mode = this.getFieldValue('mode');
generator.definitions_['hw_timer_t' + TIMER_NUM] = 'hw_timer_t * timer' + TIMER_NUM + ' =NULL;';
var funcName = 'IRAM_ATTR onTimer' + TIMER_NUM;
var branch = generator.statementToCode(this, 'DO');
var code = 'void' + ' ' + funcName + '() {\n' + branch + '}\n';
if (!isNaN(parseInt(time))) {
generator.setups_begin_['setup_hw_timer' + funcName] = 'timer' + TIMER_NUM + '=timerBegin(' + TIMER_NUM + ', 80, true);\n timerAttachInterrupt(timer' + TIMER_NUM + ', &onTimer' + TIMER_NUM + ', true);\n timerAlarmWrite(timer' + TIMER_NUM + ', ' + time * 1000 + ', ' + mode + ');';
} else {
generator.setups_begin_['setup_hw_timer' + funcName] = 'timer' + TIMER_NUM + '=timerBegin(' + TIMER_NUM + ', 80, true);\n timerAttachInterrupt(timer' + TIMER_NUM + ', &onTimer' + TIMER_NUM + ', true);\n timerAlarmWrite(timer' + TIMER_NUM + ', ' + time + ', ' + mode + ');';
}
generator.definitions_[funcName] = code;
return '';
}
export const controls_hw_timer_start = function () {
var TIMER_NUM = this.getFieldValue('TIMER_NUM');
return 'timerAlarmEnable(timer' + TIMER_NUM + ');\n';
}
export const controls_hw_timer_stop = function () {
var TIMER_NUM = this.getFieldValue('TIMER_NUM');
return 'timerEnd(timer' + TIMER_NUM + ');\n';
}
export const controls_end_program = function () {
return 'while(true);\n';
}
export const controls_interrupts = function () {
return 'interrupts();\n';
}
export const controls_nointerrupts = function () {
return 'noInterrupts();\n';
}
export const esp32_deep_sleep = function () {
var time = this.getFieldValue('time');
var code = 'esp_sleep_enable_timer_wakeup(' + time + ' * 1000000);\nesp_deep_sleep_start();\n';
return code;
}
export const base_delay = controls_delay;

View File

@@ -0,0 +1,119 @@
export const WIFI_info = function (_, generator) {
var SSID = generator.valueToCode(this, 'SSID', generator.ORDER_ATOMIC);
var PWD = generator.valueToCode(this, 'PWD', generator.ORDER_ATOMIC);
generator.definitions_['include_WiFi'] = '#include <WiFi.h>';
generator.setups_['setup_WiFi_begin'] = 'WiFi.begin(' + SSID + ', ' + PWD + ');\n'
+ ' while (WiFi.status() != WL_CONNECTED) {\n'
+ ' delay(500);\n'
+ ' Serial.print(".");\n'
+ ' }\n'
+ ' Serial.println("Local IP:");\n'
+ ' Serial.print(WiFi.localIP());\n'
return "";
}
// esp_now发送数据
export const esp_now_send = function (_, generator) {
var mac = generator.valueToCode(this, 'mac', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var branch = generator.statementToCode(this, 'success');
//branch = branch.replace(/(^\s*)|(\s*$)/g, "");
var branch1 = generator.statementToCode(this, 'failure');
//branch1 = branch1.replace(/(^\s*)|(\s*$)/g, "");
mac = mac.replaceAll('"', '');
mac = mac.toUpperCase();
const macList = mac.split(':');
mac = macList.join(', 0x');
mac = '0x' + mac;
generator.definitions_['include_ESP8266WiFi'] = '#include <WiFi.h>';
generator.definitions_['include_WifiEspNow'] = '#include <WifiEspNow.h>';
const macName = macList.join('');
generator.definitions_['var_declare_PEER_' + macName] = 'uint8_t PEER_' + macName + '[] = {' + mac + '};\n';
generator.definitions_['function_sendMessage'] = 'bool sendMessage(uint8_t *macAddress, String _data) {\n'
+ ' bool ok = WifiEspNow.addPeer(macAddress, 0, nullptr, WIFI_IF_STA);\n'
+ ' if (!ok) return false;\n'
+ ' uint16_t length = _data.length();\n'
+ ' char _msg[length];\n'
+ ' strcpy(_msg, _data.c_str());\n'
+ ' return WifiEspNow.send(macAddress, reinterpret_cast<const uint8_t*>(_msg), length);\n'
+ '}\n';
generator.setups_['setup_esp_now'] = `
WiFi.mode(WIFI_STA);
Serial.print("当前设备MAC:");
Serial.println(WiFi.macAddress());
bool ok = WifiEspNow.begin();
if (!ok) {
Serial.println("WifiEspNow初始化失败");
ESP.restart();
}`;
var code = `if (sendMessage(PEER_${macName}, ${data})) {\n`
+ branch
+ '} else {\n'
+ branch1
+ '}\n';
return code;
}
// esp_now接收数据
export const esp_now_receive = function (_, generator) {
var branch = generator.statementToCode(this, 'receive_data');
branch = branch.replace(/(^\s*)|(\s*$)/g, "");
generator.definitions_['include_ESP8266WiFi'] = '#include <WiFi.h>';
generator.definitions_['include_WifiEspNow'] = '#include <WifiEspNow.h>';
generator.definitions_['function_onMessageRecv'] = 'void OnMessageRecv(const uint8_t _mac[WIFIESPNOW_ALEN], const uint8_t* _buf, size_t _count, void* arg) {\n'
+ ' // Serial.printf("从MAC:%02X:%02X:%02X:%02X:%02X:%02X处收到数据\\n", _mac[0], _mac[1], _mac[2], _mac[3], _mac[4], _mac[5]);\n'
+ ' String myData = "";\n'
+ ' for (int i = 0; i < static_cast<int>(_count); i++) {\n'
+ ' myData += String(static_cast<char>(_buf[i]));\n'
+ ' }\n'
+ ' ' + branch + '\n'
+ '}\n';
generator.setups_['setup_esp_now_message_receive_cb'] = 'WifiEspNow.onReceive(OnMessageRecv, nullptr);';
generator.setups_['setup_esp_now'] = `
WiFi.mode(WIFI_STA);
Serial.print("当前设备MAC:");
Serial.println(WiFi.macAddress());
bool ok = WifiEspNow.begin();
if (!ok) {
Serial.println("WifiEspNow初始化失败");
ESP.restart();
}`;
var code = '';
return code;
}
export const esp32_wifi_connection_event = function (_, generator) {
var type = this.getFieldValue('type');
var branch = generator.statementToCode(this, 'event');
branch = branch.replace(/(^\s*)|(\s*$)/g, "");
generator.definitions_['include_WiFi'] = '#include <WiFi.h>';
if (type == 1) {
generator.definitions_['function_WiFiStationConnected'] = 'void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){\n'
+ ' ' + branch + '\n'
+ '}\n';
generator.setups_['esp32_wifi_WiFiStationConnected'] = 'WiFi.onEvent(WiFiStationConnected, WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_CONNECTED);';
}
if (type == 2) {
generator.definitions_['function_WiFiGotIP'] = 'void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){\n'
+ ' ' + branch + '\n'
+ '}\n';
generator.setups_['esp32_wifi_WiFiGotIP'] = 'WiFi.onEvent(WiFiGotIP, WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_GOT_IP);';
}
if (type == 3) {
generator.definitions_['function_WiFiStationDisconnected'] = 'void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){\n'
+ ' ' + branch + '\n'
+ '}\n';
generator.setups_['esp32_wifi_WiFiStationDisconnected'] = 'WiFi.onEvent(WiFiStationDisconnected, WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_DISCONNECTED);';
}
var code = '';
return code;
}

View File

@@ -0,0 +1,107 @@
import { Profile } from 'mixly';
export const inout_touchRead = function (_, generator) {
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'touchRead(' + pin + ')';
return [code, generator.ORDER_ATOMIC];
}
export const ledcSetup = function (_, generator) {
var FREQ = generator.valueToCode(this, 'FREQ', generator.ORDER_ATOMIC);
var RESOLUTION = generator.valueToCode(this, 'PWM_RESOLUTION', generator.ORDER_ATOMIC) || '8';
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
generator.setups_['ledcSetup' + channel + FREQ + RESOLUTION] = 'ledcSetup(' + channel + ', ' + FREQ + ', ' + RESOLUTION + ');\n';
return "";
}
export const ledcAttachPin = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
var code = 'ledcAttachPin(' + dropdown_pin + ', ' + channel + ');\n';
return code;
}
export const ledcDetachPin = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'ledcDetachPin(' + dropdown_pin + ');\n';
return code;
}
export const ledcWrite = 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_Arduino'] = '#include <generator.h>';
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 + ', OUTPUT);';
break;
}
}
var code = 'analogWrite(' + dropdown_pin + ', ' + value_num + ');\n';
return code;
}
export const inout_pwm_analog_write = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var FREQ = generator.valueToCode(this, 'FREQ', generator.ORDER_ATOMIC);
var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
var RESOLUTION = this.getFieldValue('RESOLUTION');
var channel = generator.valueToCode(this, 'CHANNEL', generator.ORDER_ASSIGNMENT) || '0';
generator.setups_['ledcSetup' + channel + FREQ + RESOLUTION] = 'ledcSetup(' + channel + ', ' + FREQ + ', ' + RESOLUTION + ');\n';
generator.setups_['ledcAttachPin' + dropdown_pin + channel] = 'ledcAttachPin(' + dropdown_pin + ', ' + channel + ');\n ';
var code = 'ledcWrite(' + channel + ', ' + value_num + ');\n';
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.definitions_['pin_interrupt'] = '#include <generator.h>';
generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT_PULLUP);';
var code = 'attachInterrupt' + '(' + dropdown_pin + ',' + 'attachInterrupt_fun_' + dropdown_pin + ',' + dropdown_mode + ');\n'
var funcName = 'attachInterrupt_fun_' + 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 code = 'detachInterrupt' + '(' + dropdown_pin + ');\n'
return code;
}
export const touchAttachInterrupt = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var threshold = generator.valueToCode(this, 'threshold', generator.ORDER_ATOMIC);
generator.setups_['touchAttachInterrupt' + dropdown_pin] = 'touchAttachInterrupt(' + dropdown_pin + ',gotTouch' + dropdown_pin + ', ' + threshold + ');';
var code = '';
var funcName = 'gotTouch' + dropdown_pin;
var branch = generator.statementToCode(this, 'DO');
var code2 = 'void' + ' ' + funcName + '() {\n' + branch + '}\n';
generator.definitions_[funcName] = code2;
return code;
}
export const inout_esp32_dac = function (_, generator) {
var PIN = this.getFieldValue('PIN');
var value = generator.valueToCode(this, 'value', generator.ORDER_ATOMIC);
var code = 'dacWrite(' + PIN + ', ' + value + ');\n';
return code;
}
export const esp32_led_pwm = function (_, generator) {
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var val = generator.valueToCode(this, 'val', generator.ORDER_ATOMIC);
var resolution = this.getFieldValue('resolution');
var freq = this.getFieldValue('freq');
var ledChannel = this.getFieldValue('ledChannel');
generator.setups_['ledChannel' + ledChannel] = 'ledcSetup(' + ledChannel + ', ' + freq + ', ' + resolution + ');';
generator.setups_['ledChannel' + dropdown_pin] = 'ledcAttachPin(' + dropdown_pin + ', ' + ledChannel + ');';
var code = 'ledcWrite(' + ledChannel + ', ' + val + ');\n';
return code;
}

View File

@@ -0,0 +1,36 @@
export const pins_digital = function (_, generator) {
var code = this.getFieldValue('PIN');
return [code, generator.ORDER_ATOMIC];
};
export const pins_button = pins_digital;
export const pins_analog = pins_digital;
export const pins_pwm = pins_digital;
export const pins_dac = pins_digital;
export const pins_touch = pins_digital;
export const pins_interrupt = pins_digital;
export const pins_serial = pins_digital;
export const pins_builtinimg = pins_digital;
export const pins_imglist = pins_digital;
export const pins_playlist = pins_digital;
export const pins_axis = pins_digital;
export const pins_exlcdh = pins_digital;
export const pins_exlcdv = pins_digital;
export const pins_brightness = pins_digital;
export const pins_tone_notes = pins_digital;
export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;
export const pins_one_more = pins_digital;
//export const serial_select = pins_digital;
export const pins_MOSI = pins_digital;
export const pins_MISO = pins_digital;
export const pins_SCK = pins_digital;
export const pins_scl = pins_digital;
export const pins_sda = pins_digital;
export const brightness = pins_digital;
export const pins_tx = pins_digital;
export const CHANNEL = pins_digital;
export const PWM_RESOLUTION = pins_digital;
export const OCTAVE = pins_digital;
export const TONE_NOTE = pins_digital;
export const pins_digitalWrite = pins_digital;

View File

@@ -0,0 +1,76 @@
export const chaoshengbo = function (_, generator) {
var dropdown_pin1 = this.getFieldValue('PIN1');
var dropdown_pin2 = this.getFieldValue('PIN2');
generator.setups_['setup_output_' + dropdown_pin1] = 'pinMode(' + dropdown_pin1 + ', OUTPUT);';
generator.setups_['setup_output_' + dropdown_pin2] = 'pinMode(' + dropdown_pin2 + ', INPUT);';
var funcName = 'checkdistance_' + dropdown_pin1 + '_' + dropdown_pin2;
var code = 'float' + ' ' + funcName + '() {\n'
+ ' digitalWrite(' + dropdown_pin1 + ', LOW);\n' + ' delayMicroseconds(2);\n'
+ ' digitalWrite(' + dropdown_pin1 + ', HIGH);\n' + ' delayMicroseconds(10);\n'
+ ' digitalWrite(' + dropdown_pin1 + ', LOW);\n'
+ ' float distance = pulseIn(' + dropdown_pin2 + ', HIGH) / 58.00;\n'
+ ' delay(10);\n' + ' return distance;\n'
+ '}\n';
generator.definitions_[funcName] = code;
return [funcName + '()', generator.ORDER_ATOMIC];
}
export const DHT = function (_, generator) {
var sensor_type = this.getFieldValue('TYPE');
var dropdown_pin = this.getFieldValue('PIN');
var what = this.getFieldValue('WHAT');
generator.definitions_['include_DHT'] = '#include <DHT.h>';
//generator.definitions_['define_dht_pin' + dropdown_pin] = '#define DHTPIN'+dropdown_pin +' ' + dropdown_pin ;
//generator.definitions_['define_dht_type' + dropdown_pin] = '#define DHTTYPE'+dropdown_pin +' '+ sensor_type ;
generator.definitions_['var_declare_dht' + dropdown_pin] = 'DHT dht' + dropdown_pin + '(' + dropdown_pin + ', ' + sensor_type + ');'
generator.setups_['DHT_SETUP' + dropdown_pin] = ' dht' + dropdown_pin + '.begin();';
var code;
if (what == "temperature")
code = 'dht' + dropdown_pin + '.readTemperature()'
else
code = 'dht' + dropdown_pin + '.readHumidity()'
return [code, generator.ORDER_ATOMIC];
}
//ESP32片内霍尔传感器值
export const ESP32_hallRead = function (_, generator) {
var code = 'hallRead()';
return [code, generator.ORDER_ATOMIC];
}
//ESP32片内温度传感器值
export const ESP32_temprature = function (_, generator) {
generator.definitions_['wendu'] = 'extern "C"\n{\nuint8_t temprature_sens_read();\n}\nuint8_t temprature_sens_read();\n';
var code = '(temprature_sens_read() - 32) / 1.8';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_light = function (_, generator) {
return ['analogRead(LIGHT)', generator.ORDER_ATOMIC];
}
export const sensor_sound = function (_, generator) {
return ['analogRead(SOUND)', generator.ORDER_ATOMIC];
}
export const ESP_TCS34725_Get_RGB = function (_, generator) {
generator.definitions_['include_Adafruit_TCS34725'] = '#include <Adafruit_TCS34725.h>';
generator.definitions_['var_declare_TCS34725'] = 'Adafruit_TCS34725 tcs34725 = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_24MS, TCS34725_GAIN_1X);\n';
generator.definitions_['function_TCS34725_getRGB'] = 'uint16_t getRGB(char _type) {\n'
+ ' uint16_t _red, _green, _blue, _c;\n'
+ ' tcs34725.getRawData(&_red, &_green, &_blue, &_c);\n'
+ ' switch (_type) {\n'
+ ' case \'r\':\n'
+ ' return _red;\n'
+ ' case \'g\':\n'
+ ' return _green;\n'
+ ' case \'b\':\n'
+ ' return _blue;\n'
+ ' default:\n'
+ ' return _c;\n'
+ ' }\n'
+ '}\n';
generator.setups_['setup_Adafruit_TCS34725'] = 'tcs34725.begin(0x29);';
const RGB = this.getFieldValue('TCS34725_COLOR');
return ['getRGB(\'' + RGB + '\')', generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,10 @@
export const serial_HardwareSerial = function (_, generator) {
var serial_select = this.getFieldValue('serial_select');
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);
//var serial_no=serial_select.charAt(serial_select.length 1);
generator.definitions_['include_HardwareSerial'] = '#include <HardwareSerial.h>';
var RX = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
var TX = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
generator.setups_['setup_serial_' + serial_select] = '' + serial_select + '.begin(' + content + ',SERIAL_8N1,' + RX + ',' + TX + ');';
return '';
};

View File

@@ -0,0 +1,92 @@
// HSC025A 蓝牙MP3指令
export const hsc025a_instruction = function (_, generator) {
var instruction = this.getFieldValue('instruction');
generator.setups_['setup_serial_Serial'] = 'Serial.begin(9600);';
var code = "";
if (instruction == 1) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x00);\n Serial.write(0xEF);\n';
}
if (instruction == 2) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x01);\n Serial.write(0xEF);\n';
}
if (instruction == 3) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x02);\n Serial.write(0xEF);\n';
}
if (instruction == 4) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x03);\n Serial.write(0xEF);\n';
}
if (instruction == 5) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x04);\n Serial.write(0xEF);\n';
}
if (instruction == 6) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x05);\n Serial.write(0xEF);\n';
}
if (instruction == 7) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x06);\n Serial.write(0xEF);\n';
}
if (instruction == 8) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x07);\n Serial.write(0xEF);\n';
}
if (instruction == 9) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x08);\n Serial.write(0xEF);\n';
}
if (instruction == 10) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x09);\n Serial.write(0xEF);\n';
}
if (instruction == 11) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x0A);\n Serial.write(0xEF);\n';
}
if (instruction == 12) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x0D);\n Serial.write(0x00);\n Serial.write(0xEF);\n';
}
if (instruction == 13) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x0D);\n Serial.write(0x02);\n Serial.write(0xEF);\n';
}
if (instruction == 14) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x0D);\n Serial.write(0x04);\n Serial.write(0xEF);\n';
}
if (instruction == 15) {
code = ' Serial.write(0x7E);\n Serial.write(0x02);\n Serial.write(0x17);\n Serial.write(0xEF);\n';
}
if (instruction == 16) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x46);\n Serial.write(0x01);\n Serial.write(0xEF);\n';
}
if (instruction == 17) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x51);\n Serial.write(0x00);\n Serial.write(0xEF);\n';
}
if (instruction == 18) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x51);\n Serial.write(0x0B);\n Serial.write(0xEF);\n';
}
if (instruction == 19) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x51);\n Serial.write(0x0C);\n Serial.write(0xEF);\n';
}
if (instruction == 20) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x51);\n Serial.write(0x45);\n Serial.write(0xEF);\n';
}
if (instruction == 21) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x51);\n Serial.write(0x44);\n Serial.write(0xEF);\n';
}
if (instruction == 22) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x15);\n Serial.write(0x00);\n Serial.write(0xEF);\n';
}
if (instruction == 23) {
code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x15);\n Serial.write(0x01);\n Serial.write(0xEF);\n';
}
return code;
}
// 指定播放歌曲
export const hsc025a_play = function (_, generator) {
var num = generator.valueToCode(this, 'num', generator.ORDER_ATOMIC);
generator.setups_['setup_serial_Serial'] = 'Serial.begin(9600);';
var code = ' Serial.write(0x7E);\n Serial.write(0x04);\n Serial.write(0x40);\n Serial.write(0x00);\n Serial.write(' + num + ');\n Serial.write(0xEF);\n';
return code;
}
// 音量设置
export const hsc025a_volume = function (_, generator) {
var num = generator.valueToCode(this, 'num', generator.ORDER_ATOMIC);
generator.setups_['setup_serial_Serial'] = 'Serial.begin(9600);';
var code = ' Serial.write(0x7E);\n Serial.write(0x03);\n Serial.write(0x0F);\n Serial.write(' + num + ');\n Serial.write(0xEF);\n';
return code;
}

View File

@@ -0,0 +1,155 @@
// 初始化SPIFFS
export const initialize_spiffs = function (_, generator) {
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File myFile;\n';
generator.setups_['setup_SPIFFS.begin'] = 'SPIFFS.begin(true);';
var code = '';
return code;
}
// 打开文件
export const spiffs_open_file = function (_, generator) {
var file_var = this.getFieldValue('file_var');
var file_path = this.getFieldValue('file_path');
file_path = '"' + file_path + '"';
var mode = this.getFieldValue('MODE');
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File ' + file_var + ';\n';
return file_var + '= SPIFFS.open(String(' + file_path + '), ' + mode + ');\n';
}
export const spiffs_close_file = function (_, generator) {
var file_var = this.getFieldValue('file_var');
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File ' + file_var + ';\n';
return file_var + '.close();\n';
}
// 将数据追加到文件
export const spiffs_write_data = function (_, generator) {
var file_var = this.getFieldValue('file_var');
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File ' + file_var + ';\n';
return file_var + '.print(String(' + data + '));\n';
}
// 文件可读
export const spiffs_read_available = function (_, generator) {
var file_var = this.getFieldValue('file_var');
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File ' + file_var + ';\n';
var code = file_var + '.available()';
return [code, generator.ORDER_ATOMIC];
}
// 读取文件内容
export const spiffs_read_data = function (_, generator) {
var file_var = this.getFieldValue('file_var');
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File ' + file_var + ';\n';
var code = file_var + '.read()';
return [code, generator.ORDER_ATOMIC];
}
// 检查文件大小
export const spiffs_file_size = function (_, generator) {
var file_var = this.getFieldValue('file_var');
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
generator.definitions_['esp32_spiffs'] = 'File ' + file_var + ';\n';
var code = file_var + '.size()';
return [code, generator.ORDER_ATOMIC];
}
// 删除文件
export const spiffs_delete_file = function (_, generator) {
generator.definitions_['include_FS'] = '#include "FS.h"';
generator.definitions_['include_SPIFFS'] = '#include "SPIFFS.h"';
var file_path = this.getFieldValue('file_path');
file_path = '"' + file_path + '"';
return 'SPIFFS.remove(String(' + file_path + '));';
}
export const store_eeprom_write_long = function (_, generator) {
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
var funcName = 'eepromWriteLong';
var code2 = 'void ' + funcName + '(int address, unsigned long value) {\n'
+ ' union u_tag {\n'
+ ' byte b[4];\n'
+ ' unsigned long ULtime;\n'
+ ' }\n'
+ ' time;\n'
+ ' time.ULtime=value;\n'
+ ' EEPROM.write(address, time.b[0]);\n'
+ ' EEPROM.write(address+1, time.b[1]);\n'
+ ' if (time.b[2] != EEPROM.read(address+2) ) EEPROM.write(address+2, time.b[2]);\n'
+ ' if (time.b[3] != EEPROM.read(address+3) ) EEPROM.write(address+3, time.b[3]);\n'
+ ' EEPROM.commit();\n'
+ '}\n';
generator.definitions_[funcName] = code2;
return 'eepromWriteLong(' + address + ', ' + data + ');\n';
}
export const store_eeprom_read_long = function (_, generator) {
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
var code = 'eepromReadLong(' + address + ')';
var funcName = 'eepromReadLong';
var code2 = 'unsigned long ' + funcName + '(int address) {\n'
+ ' union u_tag {\n'
+ ' byte b[4];\n'
+ ' unsigned long ULtime;\n'
+ ' }\n'
+ ' time;\n'
+ ' time.b[0] = EEPROM.read(address);\n'
+ ' time.b[1] = EEPROM.read(address+1);\n'
+ ' time.b[2] = EEPROM.read(address+2);\n'
+ ' time.b[3] = EEPROM.read(address+3);\n'
+ ' return time.ULtime;\n'
+ '}\n';
generator.definitions_[funcName] = code2;
return [code, generator.ORDER_ATOMIC];
}
export const store_eeprom_write_byte = function (_, generator) {
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
return 'EEPROM.write(' + address + ', ' + data + ');\nEEPROM.commit();\n';
}
export const store_eeprom_read_byte = function (_, generator) {
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
var code = 'EEPROM.read(' + address + ')';
return [code, generator.ORDER_ATOMIC];
}
export const store_eeprom_put = function (_, generator) {
generator.setups_['setup_EEPROM_begin'] = 'EEPROM.begin(4000);';
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
return 'EEPROM.put(' + address + ', ' + data + ');\nEEPROM.commit();';
}
export const store_eeprom_get = function (_, generator) {
generator.setups_['setup_EEPROM_begin'] = 'EEPROM.begin(4000);';
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
return 'EEPROM.get(' + address + ', ' + data + ');\n';
}