Почему он показывает, что d2 не был объявлен в области видимости
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#define BLYNK_PRINT Serial
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS D2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
char auth[] ="your auth token";
char ssid[] = "your wifi name";
char pass[] = "your wifi password";
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V5, h); //V5 для влажности
Blynk.virtualWrite(V6, t); //V6 для температуры
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(1000L, sendSensor);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
sensors.begin();
}
int sensor=0;
void sendTemps()
{
sensor=analogRead(A0);
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
Serial.println(temp);
Serial.println(sensor);
Blynk.virtualWrite(V1, temp);
Blynk.virtualWrite(V2,sensor);
delay(1000);
}
void loop()
{
Blynk.run();
timer.run();
sendTemps();
}
@09- Salman, 👍0
Обсуждение1 ответ
Выводы Arduino определяются только простым числом, за исключением того, что аналоговые выводы также называются от «A0» до «A8» (или сколько аналоговых выводов имеет конкретный процессор). Таким образом, D2 не определен. Если вы имеете в виду контакт 2 Arduino, его имя будет просто «2». Итак:
#define ONE_WIRE_BUS D2 -> #define ONE_WIRE_BUS 2
неправильный ответ. Ядро esp8266 имеет константы Dx в заголовке варианта для некоторых плат, чтобы соответствовать меткам на плате. https://github.com/esp8266/Arduino/blob/ca149a23c76ad4da3927d231da8d678484e6fcb9/variants/nodemcu/pins_arduino.h#L40, @Juraj
Джей Роберт, не принимай это на свой счет. комментарий в основном для других читателей. а вы знаете "Правила Крокера"? http://sl4.org/crocker.html, @Juraj
Ааа, нет, не было. Я не полностью подписываюсь под ним, но отзываю свой комментарий в любом случае. .... (прошло)., @JRobert
кстати, ядро STM32 имеет выводы, названные как PB4, @Juraj
- Сдвиговый регистр с релейной платой ведет себя хаотично
- Как управлять скоростью двигателя с помощью L298N и Node MCU?
- Проблема с аналоговой перезаписью ESP12E motorshield при питании двигателя постоянного тока
- Драйвер двигателя L298N не работает
- Селеноидный двигатель не реагирует на инструкции NodeMCU
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
Может быть, это должно быть просто 2 вместо D2?, @KIIV
Пожалуйста, предоставьте полное сообщение об ошибке, включая номер строки. Также вы должны предоставить ссылку на каждую библиотеку, которую вы используете, чтобы другие могли протестировать код самостоятельно (что невозможно, если они не знают, какие именно библиотеки вы использовали на самом деле), @chrisl
Его на линии нет. 10, @09- Salman
#Определить one_wire_bus_ D2, @09- Salman
все перепробовал... помогите плиз, @09- Salman
Вы выбрали NodeMCU в меню «Инструменты»?, @Juraj
Вы пытались изменить D2 только на одну цифру 2? Попробуйте поискать пример arduino onewire. Вы можете обнаружить, что они используют это объявление: #define ONE_WIRE_BUS 2 или подобное., @GMc
Я только что отметил потенциальную новую проблему. У вас есть
#define ONE_WIRE_BUS D2
, а также#define DHTPIN 2
Предполагая, что D2 (на ESP32) совпадает с контактом цифрового ввода-вывода номер 2, у вас вполне может быть конфликт. Отказ от ответственности: я не изучал вашу программу подробно, но похоже, что вы пытаетесь использовать оба объявления (объявленияDHT dht
идатчики DallasTemperature
), @GMc@GMc. Это не ESP32, а ESP8266. Логической связи между именами выводов, начинающимися с «Dx», и фактическими именами «GPIOx» нет. Например, вывод, помеченный «D2» на NodeMCU, на самом деле является «GPIO4». Контакт «D4» — это «GPIO2» (также называемый просто «2» в Arduino IDE). Эта запутанная схема объясняется (несколько) [здесь] (https://www.electronicwings.com/nodemcu/nodemcu-gpio-with-arduino-ide), @StarCat