Știu că aceasta este o întrebare obișnuită, dar adevărul este că fiecare cod este diferit. Uneori este greu să aplici conceptul la codul tău, nu funcționează. Așa că te rog ajută-mă. Ce este în neregulă cu acest cod? L-am primit de la GitHub. Încerc să îl compilez mai întâi înainte să pot face ceva modificare, trimite date de temperatură și umiditate către serverele cloud ThingSpeak.
#include <DHT.h> // Including library for dht #include <ESP8266WiFi.h> String api_key = "YOUR API KEY"; // Enter your Write API key from ThingSpeak const char *ssid = "YOUR WIFI SSID"; // replace with your wifi ssid and wpa2 key const char *pass = "YOUR WIFI PASSWORD"; const char* server = "api.thingspeak.com"; #define DHTPIN 1 // pin where the dht11 is connected DHT dht; WiFiClient client; void setup() { Serial.begin(115200); delay(10); pinMode(2, OUTPUT); digitalWrite(2, 0); Serial.println("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { int chk = DHT.read(DHTPIN); float hum = DHT.humidity; float temp = DHT.temperature; if (isnan(hum) || isnan(temp)) { Serial.println("Failed to read from DHT sensor!"); return; } if (client.connect(server, 80)) { // "184.106.153.149" or api.thingspeak.com String data_to_send = api_key; data_to_send += "&field1="; data_to_send += hum; data_to_send += "&field2="; data_to_send += temp; data_to_send += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: " + api_key + "\n"); client.print("Content-Type: application/x-www-form- urlencoded\n"); client.print("Content-Length: "); client.print(data_to_send.length()); client.print("\n\n"); client.print(data_to_send); delay(1000); Serial.print("Temperature: "); Serial.print(temp); Serial.print(" degrees Celcius, Humidity: "); Serial.print(hum); Serial.println("%. Send to Thingspeak."); } client.stop(); Serial.println("Waiting..."); // ThingSpeak needs minimum 15 sec delay between updates, I"ve set it to 30 seconds delay(10000); }
Când compilez, primesc această eroare,
Arduino: 1.8.10 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200" C:\Users\Agent 96\Desktop\thingspeak\thingspeak.ino: In function "void loop()": thingspeak:37:20: error: expected primary-expression before "." token int chk = DHT.read(DHTPIN); ^ thingspeak:38:22: error: expected primary-expression before "." token float hum = DHT.humidity; ^ thingspeak:39:23: error: expected primary-expression before "." token float temp = DHT.temperature; ^ Multiple libraries were found for "DHT.h" Used: C:\Users\Agent Not used: C:\Users\Agent Multiple libraries were found for "ESP8266WiFi.h" Used: C:\Users\Agent exit status 1 expected primary-expression before "." token This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.
Vă rugăm să ajutați, sunt un fel de începător.
Răspuns
Ați definit DHT ca dht. Deci, va trebui să înlocuiți acele DHT cu dht și veți fi bine să mergeți.
Răspundeți
Schimbați trei linii imediat după bucla () la acestea:
int chk = dht.read(DHTPIN); float hum = dht.humidity; float temp = dht.temperature;
Schimbați „ DHT ” cu litere mici. DHT este clasa și dht este obiectul clasei DHT.
De asemenea, aveți mai multe copii ale acestor biblioteci: DHT.h și Esp8266WiFi.h Verificați directorul dvs. cuurent unde este codul Arduino și, de asemenea, Documente-> Arduino-> Biblioteci director. Aceste biblioteci ar trebui să fie în directorul Documents-> Arduino-> Biblioteci .