Files
mixly3/boards/default_src/arduino_esp32/generators/sensor.js
王立帮 e162926286 feat(boards): arduino esp32传感器类别下增加 GPS 模块
由于SoftwareSerial在arduino esp32下不稳定,因此使用HardwareSerial替代它,默认使用esp32 Serial2
2025-04-30 01:06:07 +08:00

93 lines
4.4 KiB
JavaScript

import { ArduinoESP8266SensorGenerators } from '@mixly/arduino-esp8266';
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];
}
export const DS1307_init = ArduinoESP8266SensorGenerators.DS1307_init;
export const gps_init = function (_, generator) {
generator.definitions_['include_TinyGPS++'] = '#include <TinyGPS++.h>';
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);
var bt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC)
generator.definitions_['var_declare_TinyGPSPlus_gps'] = 'TinyGPSPlus gps;';
generator.definitions_['var_declare_gps_ss'] = 'HardwareSerial gps_ss(2);';
generator.setups_['setup_serial_gps_ss'] = `gps_ss.begin(${bt}, SERIAL_8N1, ${rx}, ${tx});`;
return '';
}