Помогите с кодом.
- Войдите на сайт для отправки комментариев
Сб, 25/03/2017 - 22:47
Сильно не пинайте) пока постигаю.
#include <TimeAlarms.h> #include <DHT.h> #define DHTPIN 12 #define DHTTYPE DHT22 #define S_ON 0 #define S_OFF 1 #define NO_ACTION 0 #define IN_RANGE 1 #define OUT_RANGE 2 typedef struct RunCondition { int socketPin; float tempBegin; float tempEnd; int tempMode; float humBegin; float humEnd; int humMode; }; #define NUM_SOCKETS 3 RunCondition sockets[NUM_SOCKETS] = { { 2, 26.0, 100.0, IN_RANGE, 0.0, 0.0, NO_ACTION }, { 3, 20.0, IN_RANGE, 0.0, 0.0, NO_ACTION }, { 4, 20.0, 100.0, IN_RANGE, 0.0, 70.0, IN_RANGE } }; int socketStatus[NUM_SOCKETS]; // S_OFF - выключено, S_ON - включено. DHT dht(DHTPIN, DHTTYPE); float temp = 0; float hum = 0; int displayMode = 0; void setSockets() { for (int i = 0; i < NUM_SOCKETS; i++) { digitalWrite(sockets[i].socketPin, socketStatus[i]); } } void printSensors() { Serial.print("[ >> ] Temperature: "); Serial.print(temp); Serial.print(" C;\tHumidity: "); Serial.print(hum); Serial.println("%"); } void setup() { Serial.begin(115200); Serial.println("[ ++ ] v.1.1.d"); dht.begin(); for (int i = 0; i < NUM_SOCKETS; i++) { socketStatus[i] = S_OFF; pinMode(sockets[i].socketPin, OUTPUT); } setSockets(); Alarm.timerRepeat(5, printSensors); displayInfo(); } void displayInfo() { Alarm.delay(1000); temp = dht.readTemperature(); hum = dht.readHumidity(); if (isnan(temp) || isnan(hum)) { for (int i = 0; i < NUM_SOCKETS; i++) socketStatus[i] = S_OFF; setSockets(); Serial.println("[FAIL] Can't read sensor data! Turn everithing OFF!"); return; } for (int s = 0; s < NUM_SOCKETS; s++) { int tempStatus = S_OFF; switch (sockets[s].tempMode) { case NO_ACTION: tempStatus = S_ON; break; case IN_RANGE: if ((temp >= sockets[s].tempBegin) && (temp <= sockets[s].tempEnd)) tempStatus = S_ON; break; case OUT_RANGE: if ((temp <= sockets[s].tempBegin) || (temp >= sockets[s].tempEnd)) tempStatus = S_ON; break; } int humStatus = S_OFF; switch (sockets[s].humMode) { case NO_ACTION: humStatus = S_ON; break; case IN_RANGE: if ((hum >= sockets[s].humBegin) && (hum <= sockets[s].humEnd)) humStatus = S_ON; break; case OUT_RANGE: if ((hum <= sockets[s].humBegin) || (hum >= sockets[s].humEnd)) humStatus = S_ON; break; } int newStatus = S_OFF; if ((tempStatus == S_ON) && (humStatus == S_ON)) newStatus = S_ON; if (socketStatus[s] != newStatus) { Serial.print("[ OK ] Socket #"); Serial.print(s); Serial.print(" status has changed to "); Serial.println(newStatus); socketStatus[s] = newStatus; } setSockets(); } }
при проверке выдает ошибку (warning: 'typedef' was ignored in this declaration)
Извините, но я не понял зачем такая пляска(смешение) в коде.
Где вы увидели ошибку? ворнинг - это предупреждение. Уберите typedef и ворнинг пропадёт...