LinkNode D1 Serial перестает работать при использовании pinMode

Следующий код работает. Каждую секунду я получаю в консоли вывод «Hello», а затем analogValue фоторезистора.

int greenLedPin = D1;
int yellowLedPin = D2;
int redLedPin = D3;

int lightSensorPin = A0;
int analogValue = 0;

void setup() {
  Serial.begin(9600);
//  pinMode(greenLedPin, OUTPUT);
//  pinMode(yellowLedPin, OUTPUT);
//  pinMode(redLedPin, OUTPUT);
}

void loop() {
  analogValue = analogRead(lightSensorPin);
  Serial.println("Hello.");
  Serial.println(analogValue);
  delay(1000);
//  digitalWrite(greenLedPin, HIGH);
//  digitalWrite(yellowLedPin, HIGH);
//  digitalWrite(redLedPin, HIGH);
}

Теперь, как только я раскомментирую команды pinMode, в консоли ничего не появляется.

int greenLedPin = D1;
int yellowLedPin = D2;
int redLedPin = D3;

int lightSensorPin = A0;
int analogValue = 0;

void setup() {
  Serial.begin(9600);
  pinMode(greenLedPin, OUTPUT);
  pinMode(yellowLedPin, OUTPUT);
  pinMode(redLedPin, OUTPUT);
}

void loop() {
  analogValue = analogRead(lightSensorPin);
  Serial.println("Hello.");
  Serial.println(analogValue);
  delay(1000);
//  digitalWrite(greenLedPin, HIGH);
//  digitalWrite(yellowLedPin, HIGH);
//  digitalWrite(redLedPin, HIGH);
}

Есть идеи, что может происходить?

, 👍0

Обсуждение

Это происходит, когда только один из контактов Dn раскомментирован? (Я думаю, что определение Dn может быть связано с неправильным контактом GPIO) - я проверю ваш код, когда вернусь домой, чтобы увидеть, получу ли я тот же результат., @Code Gorilla


1 ответ


1

Переместите int greenLedPin = D1; и int redLedPin = D3; на другой контакт, поскольку D1 и D3 — это Tx и Rx.

http://esp8266.github.io/Arduino/versions/2.0.0 /doc/reference.html

,

Может ли подключение к контактам D1 и D3 таких вещей, как светодиоды, привести к такой странности? Моей проблемой в итоге стало то, что чип полностью игнорировал любые изменения в моем скетче. Редактирование скетча или даже загрузка совершенно другого скетча приводили к тому, что чип каждый раз просто запускал один и тот же старый код., @fuzzybabybunny

К вашему сведению, вот изображение LinkNode D1: https://m.media-amazon.com/images/S/aplus-seller-content-images-us-east-1/ATVPDKIKX0DER/A2TOL213PF2CAG/B01DD641G6/pdmYH3IESLKD._UX970_TTW__. png D1 помечен как «TX-> D1», а D2 — как «D2», а D3 — как «D15/SCL/D3», поэтому D3 не является RX0., @fuzzybabybunny

https://s3.amazonaws.com/linksprite/Linknode+D1/LinkNode-D1-sch.pdf Показывает, что контакты 15, 16 (D1, D3) подключены к микросхеме USB/Serial. И ДА, старый код прерывает загрузку нового кода. Решение состоит в том, чтобы нажать кнопку сброса до того, как Arduino IDE покажет «Загрузить код», это переведет ESP-12 в режим программирования., @MatsK

На самом деле я нажал кнопку сброса сразу после компиляции, но до того, как IDE отобразила код загрузки. Тот же результат., @fuzzybabybunny

К сожалению, правильная процедура: Подключите LinkNode D1 к вашему ПК. Нажмите и удерживайте кнопку сброса, а затем подключите D8 (вспышка) к земле (GND). Отпустите кнопку сброса, а затем отключите D8 от земли. И вот он в режиме программирования., @MatsK