初始化提交
This commit is contained in:
112
boards/default_src/arduino_esp8266/generators/esp8266.js
Normal file
112
boards/default_src/arduino_esp8266/generators/esp8266.js
Normal file
@@ -0,0 +1,112 @@
|
||||
// LM35 Temperature
|
||||
export const LM35 = function (_, generator) {
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = 'analogRead(' + dropdown_pin + ')*0.322';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
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 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_pin + ',' + dropdown_mode + ');\n'
|
||||
var funcName = 'attachInterrupt_fun_' + dropdown_pin;
|
||||
var branch = generator.statementToCode(this, 'DO');
|
||||
var code2 = 'ICACHE_RAM_ATTR void' + ' ' + funcName + '() {\n' + branch + '}\n';
|
||||
generator.definitions_[funcName] = code2;
|
||||
return code;
|
||||
}
|
||||
|
||||
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';
|
||||
}
|
||||
|
||||
export const controls_soft_reset = function () {
|
||||
return ' ESP.restart();\n';
|
||||
}
|
||||
|
||||
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_Servo'] = '#include <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;
|
||||
}
|
||||
82
boards/default_src/arduino_esp8266/generators/ethernet.js
Normal file
82
boards/default_src/arduino_esp8266/generators/ethernet.js
Normal file
@@ -0,0 +1,82 @@
|
||||
// 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 <ESP8266WiFi.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.persistent(false);
|
||||
WiFi.mode(WIFI_AP);
|
||||
WiFi.disconnect();
|
||||
WiFi.softAP("ESPNOW", nullptr, 3);
|
||||
WiFi.softAPdisconnect(false);
|
||||
|
||||
Serial.print("当前设备MAC:");
|
||||
Serial.println(WiFi.softAPmacAddress());
|
||||
|
||||
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 <ESP8266WiFi.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 message = "";\n'
|
||||
+ ' for (int i = 0; i < static_cast<int>(_count); i++) {\n'
|
||||
+ ' message += 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.persistent(false);
|
||||
WiFi.mode(WIFI_AP);
|
||||
WiFi.disconnect();
|
||||
WiFi.softAP("ESPNOW", nullptr, 3);
|
||||
WiFi.softAPdisconnect(false);
|
||||
|
||||
Serial.print("当前设备MAC:");
|
||||
Serial.println(WiFi.softAPmacAddress());
|
||||
|
||||
bool ok = WifiEspNow.begin();
|
||||
if (!ok) {
|
||||
Serial.println("WifiEspNow初始化失败");
|
||||
ESP.restart();
|
||||
}`;
|
||||
var code = '';
|
||||
return code;
|
||||
}
|
||||
Reference in New Issue
Block a user