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

174 lines
9.1 KiB
JavaScript

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;
}