• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

wemos d1 mini pro + ESP Easy = AP + control

LM317T

New member
с помощью резисторов 10к на плате управления сделал пулл ап пины
набросал для получения в сериал сообщения от кнопки
int buttonRight = 12;
int buttonLeft = 14;
int buttonUp = 5;
int buttonDown = 4;
int ledPin = 16;
void setup() {
Serial.begin(115200); Serial.println();
Serial.println("Starting EspnowController.ino");
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(buttonLeft) == HIGH) {
digitalWrite(ledPin, LOW);
} else {
// turn LED off:
digitalWrite(ledPin, HIGH);
Serial.println("Left");
delay(50);
}
if (digitalRead(buttonRight) == HIGH) {
digitalWrite(ledPin, LOW);
} else {
// turn LED off:
digitalWrite(ledPin, HIGH);
Serial.println("Right");
delay(50);
}
if (digitalRead(buttonUp) == HIGH) {
digitalWrite(ledPin, LOW);
} else {
// turn LED off:
digitalWrite(ledPin, HIGH);
Serial.println("Up");
delay(50);
}
if (digitalRead(buttonDown) == HIGH) {
digitalWrite(ledPin, LOW);
} else {
// turn LED off:
digitalWrite(ledPin, HIGH);
Serial.println("Down");
delay(50);
}
}
текст сообщения пишет при одной из нажатых кнопок
5.jpg
не пойму куда теперь нужно вставить этот кусок кода в мастере, чтоб сообщение отображалось в сериал слейва
наверное у слейва тоже нужно что-то подправить...
 

nikolz

Well-known member
Начните с изучения логики исходного скрипта.
Кроме того , В своем алгоритме Вы не учитываете время на исполнение команды
В итоге у Вас модуль управления будет многократно переключать сигнал управления не дожидаясь его исполнения
 

LM317T

New member
ну пока что на выполнение есть задержка delay(50);
а многократно отправленное сообщение - как бы думаю таким образом сделать отслеживание связи с передатчиком
логики исходного скрипта не могу понять...(
как только пытаюсь там вписать сравнение для кнопок, вылазят всякие ошибки
 

LM317T

New member
как правильно написать код?
если в Serial появляется сообщение "Left"
то выполнить действие - подать на пин 14 высокий уровень
я написал так, но это не работает:
...int LEFT = 14;
...pinMode(LEFT, OUTPUT);
...
if (myData.text == "Left") {
digitalWrite(LEFT, HIGH);
Serial.println("TEST");
} else {
digitalWrite(LEFT, LOW);
 

LM317T

New member
в общем победил я его, не сам... но это уже совсем другая история
 
Сверху Снизу