Доброго времени суток. Использую NodeMcu v3, датчик dht11 и fc-37. Цель - объеденить 2 скетча в один, что бы при запуске, выводилась информацию сразу по 2ум датчикам, помогите пожалуйста. Возможность как я понимаю у самой NodeMcu есть, тк один из датчиков выдает аналоговый сигнал, другой цифровой, все датчики подключены одновременно к разным ногам. Скетч ардуино dht11: Код (C++): #include "DHT.h" #define DHTPIN D4 // пин к которому подключен датчик #define DHTTYPE DHT11 // DHT 11 // инициализация DHT датчика DHT dht(DHTPIN, DHTTYPE); //--------------------------------------------- void setup() { Serial.begin(115200); Serial.println("DHTxx тест!"); dht.begin(); } //--------------------------------------------- void loop() { // ждем пару сек. delay(2000); // чтение занимает 250 мСек, у старых датчиков данные обновляются не чаще чем 1 раз в 2 сек float h = dht.readHumidity();// читаем влажность в % float t = dht.readTemperature();// читаем температуру, по умолчанию в градусах float f = dht.readTemperature(true);// читаем температуру в Фаренге́йтах // смотрим получилось ли прочитать if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("ошибка чтения с DHT датчика!"); return; } float hif = dht.computeHeatIndex(f, h);// рассчитываем индекс жары в Фаренге́йтах float hic = dht.computeHeatIndex(t, h, false);// рассчитываем индекс жары в град ц. (isFahreheit = false) Serial.println("----------------------------------------"); Serial.print("Влажность: "); Serial.print(h); Serial.println(" %\t"); Serial.print("Температура: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.println(" *F\t"); Serial.print("Ощущения: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); } Скетч ардуино fc-37: Код (C++): const int sensorMin = 0; // sensor minimum const int sensorMax = 1024; // sensor maximum void setup() { Serial.begin(115200); pinMode(2, OUTPUT); // red led pinMode(3, OUTPUT); // yellow led pinMode(4, OUTPUT); // green led } void loop() { int sensorReading = analogRead(A0); // read the sensor on analog A0 Serial.println(sensorReading); int range = map(sensorReading, sensorMin, sensorMax, 0, 3); // map the sensor range (four options) switch (range) { // range value case 0: // Sensor getting wet Serial.println("Затопление"); digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); break; case 1: // Sensor getting wet Serial.println("Влажно"); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); break; case 2: // Sensor dry - To shut this up delete the " Serial.println("Not Raining"); " below. Serial.println("Сухо"); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); break; } delay(2000); }
При чем тут это? Вы полагаете, что к МК можно подключить только один цифровой и один аналоговый датчик? Что касается обьединения скетчей - вряд ли кто-то будет это делать за вас. Попробуйте сделать это сами, и если будут проблемы - приходите. Но приходите со своим кодом, а не с найденным в инете
тебе правда интересно? Меня всегда умиляют подобные посты - сначала вопрос уровня "Сколько будет 2 х 2?" - а потом "Разобрался - будет 4!!! Выкладываю решение! может кому пригодится!" А этот даже решение не выкладывает... в ЛС зовет
Код (C++): #include "DHT.h" #define DHTPIN D4 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); const int sensorMin = 0; const int sensorMax = 1024; void setup() { dht.begin(); Serial.begin(115200); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("ошибка чтения с DHT датчика!"); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.println("----------------------------------------"); Serial.print("Влажность: "); Serial.print(h); Serial.println(" %\t"); Serial.print("Температура: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.println(" *F\t"); Serial.print("Ощущения: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); int sensorReading = analogRead(A0); Serial.println(sensorReading); int range = map(sensorReading, sensorMin, sensorMax, 0, 3); switch (range) { case 0: Serial.println("Затопление"); digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); break; case 1: Serial.println("Влажно"); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); break; case 2: Serial.println("Сухо"); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); break; } }
Ок!Красавчег!Видно что разобрался.Только в сетапе можно установить начальное состояние светодиодов HIGH или LOW.