Jeg ved, at dette er et almindeligt spørgsmål, men sandheden er, at hver kode er forskellig. Nogle gange er det svært at anvende konceptet på din kode, det virker ikke. Så vær venlig at hjælpe mig. Hvad er der galt med denne kode? Jeg fik det fra GitHub. Jeg prøver først at kompilere det, før jeg kan gøre lidt ændring, det sender data om temp og fugtighed til ThingSpeak cloud-servere.

#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); } 

Når jeg kompilerer, får jeg denne fejl,

 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. 

Hjælp venligst, jeg er en slags begynder.

Svar

Du definerede DHT som dht. Så du bliver nødt til at erstatte disse DHT med dht, og du vil være klar til at gå.

Svar

Skift tre linjer lige efter loop () til disse:

 int chk = dht.read(DHTPIN); float hum = dht.humidity; float temp = dht.temperature; 

Skift “ DHT ” i små bogstaver. DHT er klassen, og dht er genstand for DHT-klassen.

Du har også flere eksemplarer af disse biblioteker: DHT.h og Esp8266WiFi.h Tjek dit cuurent-bibliotek, hvor din Arduino-kode er, og også Dokumenter-> Arduino-> Biblioteker katalog. Disse biblioteker skal være i Dokumenter-> Arduino-> Biblioteker -mappen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *