Помогите с кодом
- Войдите на сайт для отправки комментариев
Сб, 16/06/2012 - 00:27
Здравствуйте!
Вот день уже мучаю Arduino Uno до этого даже и не видел в живую :) Так что прозьба сильно не ругать если в коде косяков много....
Вот сижу мучаю код из 2 примеров соединенные вместе...
В наличии датчик DHT11 и парочка светодиодов
В общем ситуация такая нужно просто управлять выходами (вкл\выкл) и читать с датчика температуру через com порт.....
char val = 0; char port1 = 0; char port2 = 0; int p=0; #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 // датчик температуры и влажности DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); // Подключение к порту delay (2000); // Дает время чтобы открыть порт Serial.println("Device Connected"); //Порт открыт dht.begin(); } void loop () { float h = dht.readHumidity(); float t = dht.readTemperature(); if( Serial.available() ) { port1 = Serial.read(); // Чтение порта port2 = Serial.read(); val = Serial.read(); // Serial.print(port1); Serial.print(" "); Serial.println((int)port1); // Serial.print(port2); Serial.print(" "); Serial.println((int)port2); // Serial.println(val); int p1=(int)port1-48; int p2=(int)port2-48; p=p1*10+p2; pinMode(p,OUTPUT); if( val == 'H' || val == 'h' ) { digitalWrite(p, HIGH); Serial.print(p); Serial.println(" High"); // Выдает в порт сообщение что команда выполнена delay (1000); //Задержка на всякий случай } else if(val=='L' || val == 'l') { digitalWrite(p, LOW); Serial.print(p); Serial.println(" Low"); // Выдает в порт сообщение что команда выполнена delay (1000); //Задержка на всякий случай } else { if(val=='T' || val == 't') // 02t идет передача значений датчика в порт { Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); Serial.println("Temperatura Ok"); // Выдает в порт сообщение что команда выполнена delay (1000); //Задержка на всякий случай } } } delay(10); }
Собственно проблема в том что датчик весит на 2 порту... Тоесть если я включу порт 2 то датчику плохо может стать.Я понимаю что можно написать программу чтобы не включала 2 порт но хочу так сказать меру предосторожности.Подскажите пожалуйста как решить эту проблему ?
А зачем вам условие if(val=='T' || val == 't') если 2 вывод у вас занят только датчиком? Быть может сделать условие при котором если р == 2, то просто выводится значения с датчика.
Ммм полезно спасибо большое :) что то я даже о таком и не подумал