Одновременно использовать более трех выходных контактов в ESP8266?

esp8266 l298n

Я пытаюсь сделать машину, управляемую через 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. Пожалуйста, помогите, предоставив некоторые разъяснения по этому поводу.


Схема:

schematic

Приносим извинения за ошибку, когда оба двигателя были отмечены цифрой 2, → один — M1 & другое – M2

, 👍-3

Обсуждение

схема? (почему вы добавили теги для других досок? Я их удалил), @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


1 ответ


Лучший ответ:

0

Я обнаружил проблему и & он не имеет ничего общего с ESP8266. Это было что-то вроде конфликта напряжений (более глубокой науки я не знаю, согласен).

На самом деле я тестировал, подключив USB к ESP & в то же время у меня был подключен липо 11В к L298N.

Я тестировал, используя один источник напряжения и усилитель; все работало нормально.

Это выглядело примерно так (здесь → неправильно):

schematic

,

Допускается такое подключение двух источников постоянного напряжения, за исключением того, что вам следует соединить соединения GND вместе., @jose can u c

Я сделал то же самое, но не соединил GND, и, вероятно, в этом была проблема., @exploitr