Доброго времени суток. Полазив но инету в поисках датчика измерения влажности почвы случайно наткнулся на реализацию на Arduino. И как-то сразу заинтересовала меня данная тема. Покурив кучу информации для данного проекта были закуплены: http://www.ebay.com/itm/Soil-Hygrom...Electrical_Test_Equipment&hash=item3f2c9d6292 http://www.ebay.com/itm/Arduino-Nan...990?pt=LH_DefaultDomain_0&hash=item417594335e http://www.ebay.com/itm/New-RGB-3-C...Parts_Accessories&hash=item2a33e4288f&vxp=mtr Далее был написан вот такой код: Код (Text): int diodBlue=6; int diodGreen=4; int diodRed=2; int sensor=8; // питание датчика подключить к пину 8 void setup() { Serial.begin(9600); pinMode(diodBlue,OUTPUT); pinMode(diodGreen,OUTPUT); pinMode(diodRed,OUTPUT); pinMode(sensor,OUTPUT); digitalWrite(sensor, HIGH); } void loop() { Serial.println(analogRead(0)); digitalWrite(sensor, HIGH); delay(2000); // время за которое опрашивается датчик digitalWrite(sensor, LOW); if (analogRead(0) <= 450) { Serial.print("Ochen Vlagno ");// Очень влажная почва digitalWrite(diodBlue, HIGH); //Включаем синий диод на 2 сек delay(2000); digitalWrite(diodBlue, LOW); digitalWrite(diodGreen, LOW); digitalWrite(diodRed, LOW); } else if( analogRead(0)>450 && analogRead(0)<700) { Serial.print("Vlagnaya pochva ");// Влажная почва digitalWrite(diodGreen,HIGH);//Включаем зелёный диод на 2 сек delay(2000); digitalWrite(diodGreen,LOW); digitalWrite(diodBlue, LOW); digitalWrite(diodRed, LOW); } else { Serial.print("Suhays pochva ");// Сухая почва digitalWrite(diodRed,HIGH);//Включаем красный диод на 2 сек delay(2000); digitalWrite(diodRed,LOW); digitalWrite(diodBlue, LOW); digitalWrite(diodGreen, LOW); } } Собрана вот такая схема: И вот готовое устройство в действии: А вот видео в работе:
Решил что для одной задачи слишком жирно использовать целу Нано. Для этой цели был куплен Аттини 13. Подправлен код, который теперь выглядит вот так: Код (Text): int diodBlue=6; int diodGreen=4; int diodRed=2; void setup() { pinMode(diodBlue,OUTPUT); pinMode(diodGreen,OUTPUT); pinMode(diodRed,OUTPUT); } void loop() { if (analogRead(0) <= 450) { digitalWrite(diodBlue, HIGH); //Включаем синий диод на 2 сек delay(2000); digitalWrite(diodBlue, LOW); digitalWrite(diodGreen, LOW); digitalWrite(diodRed, LOW); } else if( analogRead(0)>450 && analogRead(0)<700) { digitalWrite(diodGreen,HIGH);//Включаем зелёный диод на 2 сек delay(2000); digitalWrite(diodGreen,LOW); digitalWrite(diodBlue, LOW); digitalWrite(diodRed, LOW); } else { digitalWrite(diodRed,HIGH);//Включаем красный диод на 2 сек delay(2000); digitalWrite(diodRed,LOW); digitalWrite(diodBlue, LOW); digitalWrite(diodGreen, LOW); } } Код в Ардуино ИДЕ компилируется, занимает 540 байт. Помогите с нумерацией портов пожалуйста.
Там всего один порт - PORTB. А PB0, PB1... - пины этого порта. Статья про добавление поддержки различных контроллеров (в т.ч. Attiny13) в Arduino IDE.
В Attiny13 нету UART-а, так что не будет. А вот SoftwareSerial должен работать, он реализован через дерганье обычными GPIO-ногами. Но прошиваться все равно придется через ISP.
А в той теме написано, что ATtiny45 поддерживает Serial, а где у неё RX и TX? Не вижу в datasheet'e подписанных ног...
Про датчики влажности, меня всегда люди смешили которые не понимают их работу. Китайцы тоже хороши, но правильно надо их закапывать на нужную глубину и там мерять влажность, а не втыкать его с верху, питание на датчик подавать раз в час и считывать значение, а так пробой идёт где угодно, на глубине его может и не быть.