Одновременно использовать более трех выходных контактов в ESP8266?
Я пытаюсь сделать машину, управляемую через Wi-Fi, из моей старой игрушечной машинки, которая будет работать на ESP8266. Я использую драйвер двигателя L298N, и у меня один двигатель для управления левым и правым & другое для управления направлением вперед-назад.
Проблема в том, что я не могу использовать более трех контактов одновременно. Если я даже попытаюсь, мой код, скорее всего, перестанет работать.
Ниже мой код:
static const uint8_t enFront = D0;
static const uint8_t front_in1 = D1;
static const uint8_t front_in2 = D2;
static const uint8_t enBack = D5;
static const uint8_t back_in1 = D3;
static const uint8_t back_in2 = D4;
#include <ESP8266WebServer.h>
const char* ssid = "espCar <^_^>";
const char* password = "hacksAllowed";
ESP8266WebServer server(80);
void setup() {
pinMode(enFront,OUTPUT);
pinMode(front_in1,OUTPUT);
pinMode(front_in2,OUTPUT);
/* pinMode(enBack,OUTPUT); <--Problem here
pinMode(back_in1,OUTPUT); <--Problem here
pinMode(back_in2,OUTPUT);*/ <--Problem here
Serial.begin(115200);
WiFi.softAP(ssid, password);
WiFi.mode(WIFI_AP);
delay(500);
server.on("/REQ",processRequest);
server.begin();
Serial.println("Server is UP!");
}
void loop() {
// server.handleClient();
analogWrite(enFront,1023);
digitalWrite(front_in1,HIGH);
digitalWrite(front_in2,LOW);
delay(2000);
digitalWrite(front_in2,HIGH);
digitalWrite(front_in1,LOW);
delay(2000);
}
void processRequest() {
/* if (server.arg("move")!=""){
if (server.arg("right")!=""){
analogWrite(enFront,server.arg("right").toInt());
digitalWrite(front_in1,HIGH);
digitalWrite(front_in2,LOW);
/*Debug*/
/* server.send(200, "200", server.arg("right"));
}else if(server.arg("left")!=""){
analogWrite(enFront,server.arg("left").toInt());
digitalWrite(front_in1,LOW);
digitalWrite(front_in2,HIGH);
/*Debug*/
/* server.send(200, "200", server.arg("left"));
}
}*/
}
Весь код работает нормально, пока я не объявлю pinMode(pin,OUTPUT)
для любого 4-го контакта. (Все в порядке для каждого контакта, пока 3-й заявлен)
Я не так уж стар с ESP или Arduino. Пожалуйста, помогите, предоставив некоторые разъяснения по этому поводу.
Схема:
Приносим извинения за ошибку, когда оба двигателя были отмечены цифрой 2, → один — M1 & другое – M2
@exploitr, 👍-3
Обсуждение1 ответ
Лучший ответ:
Я обнаружил проблему и & он не имеет ничего общего с ESP8266. Это было что-то вроде конфликта напряжений (более глубокой науки я не знаю, согласен).
На самом деле я тестировал, подключив USB к ESP & в то же время у меня был подключен липо 11В к L298N.
Я тестировал, используя один источник напряжения и усилитель; все работало нормально.
Это выглядело примерно так (здесь → неправильно):
Допускается такое подключение двух источников постоянного напряжения, за исключением того, что вам следует соединить соединения GND вместе., @jose can u c
Я сделал то же самое, но не соединил GND, и, вероятно, в этом была проблема., @exploitr
- Как установить связь между веб-камерой и Arduino UNO и получать прямую трансляцию на мобильном телефоне с помощью ESP8266?
- Двигатель не вращается при использовании контроллера двигателя L298N.
- NodeMCU V3 ПЕРЕГРЕВАЛСЯ И УМЕР
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
схема? (почему вы добавили теги для других досок? Я их удалил), @Juraj
хорошо. на схеме у вас NodeMcu с метками Dx, в коде вы используете номера пинов io. вы можете использовать константы Dx в коде., @Juraj
контакты io 0 и io 2 должны иметь ВЫСОКИЙ уровень при загрузке. возможно, что подключение их к плате драйвера потянет их вниз., @Juraj
Хорошо. На самом деле я использовал System.println для распечатки D1–D5, а затем использовал их., @exploitr
Хорошо. Затем я проверю, удерживая их ВЫСОКИМ при ЗАГРУЗКЕ... Я думаю, что это происходит здесь. Потому что добавление этих последних трех строк pinMode меня блокирует., @exploitr
на схеме у вас D2(4), D3(io 0), D4(io 2) распаянные, @Juraj
Я использую другие пины. Это похоже на схему, но не точно. Чтобы упростить проводку и разместить все в небольшом месте, я так и сделал. :-(, @exploitr
Почему вы не можете нарисовать схему, которая у вас есть на самом деле? С тем же успехом можно ничего не показывать, как показывать то, что не соответствует действительности., @Delta_G
@Delta_G Я не знал об этом создателе скематиков. **Я предполагаю, что вы уже видели, что сайт назвал меня новым участником*, @exploitr
@jsotola Я не знал об этом создателе скематиков. *Я предполагаю, что вы уже видели, что сайт назвал меня новым участником* . Я знал, что кода будет достаточно, чтобы диагностировать проблему. В следующий раз, когда я задам здесь вопрос, я учту это и только что обновил точную схему., @exploitr
В моем проекте у меня есть 4 реле, выход ШИМ, выходtone(), 2 выходных контакта для светодиодной панели, АЦП I2C, датчик температуры на A0 и кнопка. все это на Wemos D1 R2, который имеет то же отображение io в Dx, что и NodeMcu., @Juraj
@Юрай Спасибо за поддержку! Я понял, в чем была моя ошибка, @exploitr
Я чуть не спросил, подключили ли вы землю, потому что в схеме у вас ее нет. Я увеличил фотографию из первой версии вашего вопроса, и там были черные провода, поэтому я подумал, что это заземление. Или это только тени?, @Juraj
Я был на этом сайте впервые. Итак, была ошибка в задании вопроса, я согласен. Я даже не знал об этом создателе схем. Итак, взял один почти такой же и поместил его в вопрос. Если я правильно задал вопрос, то получение ответа не займет много времени. Я запомню это в следующий раз, когда спрошу здесь. :-D, @exploitr