如何使用 Nodemcu 将字符串值(pin)转换为在 Arduino 中的 digitalWrite(pin,boolean)方法中使用
How to convert String value (pin) to use in digitalWrite(pin,boolean) method in Arduino with Nodemcu
我想将我的 String 变量转换为一个值,我可以在
中用作 PIN 码
digitalwrite(pindata, boolean);
请注意,这是一个 NodeMCU 板,其引脚名称如 D0、D1 等。与 Arduino 编号不同。我的字符串可能包含 "D3"
、"D4"
、"D5"
等值
代码:
void post() {
String data = server.arg("msg");
Serial.println(data);
pinPulse(data,1000); // <<-- what here wola it's a String
server.send(200, "text/plain", "Got this data " + data);
}
void pinPulse(char pin, int pulsetime) {
pinMode(pin, OUTPUT);
digitalWrite(pin, 1);
delay(pulsetime);
digitalWrite(pin, 0);
}
引脚名称到引脚编号的映射在 pins_arduino.h 中定义。
由于名称是连续的,您可以在数组中定义引脚号,然后使用索引访问它们。
例如索引为 5 的 D5 的值为 14.
要将 "D5"
转换为 5
,您需要先用 .substring(1)
去掉 'D'
,然后再转换其余的 ("5"
)转换为 .toInt()
.
的整数
static const uint8_t NAME2PIN[] = {D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10};
// 16 5 4 0 2 14 12 13 15 3 1
void post() {
String data = server.arg("msg");
Serial.println(data);
if (data.length() >= 2 && data[0] == 'D') { //check if it's a valid pin name
uint8_t pin = NAME2PIN[data.substring(1).toInt()]; //skip the first character (D) and convert it to an integer
pinPulse(pin, 1000);
server.send(200, "text/plain", "Got this data " + data);
}
}
void pinPulse(uint8_t pin, int pulsetime) {
pinMode(pin, OUTPUT);
digitalWrite(pin, 1);
delay(pulsetime);
digitalWrite(pin, 0);
}
我想将我的 String 变量转换为一个值,我可以在
中用作 PIN 码digitalwrite(pindata, boolean);
请注意,这是一个 NodeMCU 板,其引脚名称如 D0、D1 等。与 Arduino 编号不同。我的字符串可能包含 "D3"
、"D4"
、"D5"
等值
代码:
void post() {
String data = server.arg("msg");
Serial.println(data);
pinPulse(data,1000); // <<-- what here wola it's a String
server.send(200, "text/plain", "Got this data " + data);
}
void pinPulse(char pin, int pulsetime) {
pinMode(pin, OUTPUT);
digitalWrite(pin, 1);
delay(pulsetime);
digitalWrite(pin, 0);
}
引脚名称到引脚编号的映射在 pins_arduino.h 中定义。
由于名称是连续的,您可以在数组中定义引脚号,然后使用索引访问它们。
例如索引为 5 的 D5 的值为 14.
要将 "D5"
转换为 5
,您需要先用 .substring(1)
去掉 'D'
,然后再转换其余的 ("5"
)转换为 .toInt()
.
static const uint8_t NAME2PIN[] = {D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10};
// 16 5 4 0 2 14 12 13 15 3 1
void post() {
String data = server.arg("msg");
Serial.println(data);
if (data.length() >= 2 && data[0] == 'D') { //check if it's a valid pin name
uint8_t pin = NAME2PIN[data.substring(1).toInt()]; //skip the first character (D) and convert it to an integer
pinPulse(pin, 1000);
server.send(200, "text/plain", "Got this data " + data);
}
}
void pinPulse(uint8_t pin, int pulsetime) {
pinMode(pin, OUTPUT);
digitalWrite(pin, 1);
delay(pulsetime);
digitalWrite(pin, 0);
}