Измерение влажности почвы и индикация RGB диодом
- Войдите на сайт для отправки комментариев
Пт, 10/01/2014 - 20:16
Доброго времени суток. Полазив но инету в поисках датчика измерения влажности почвы случайно наткнулся на реализацию на Arduino. И как-то сразу заинтересовала меня данная тема. Покурив кучу информации для данного проекта были закуплены:
Далее был написан вот такой код:
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, LOW);
}
void loop()
{
Serial.println(analogRead(0));
digitalWrite(sensor, LOW);
delay(15000); // время через которое опрашивается датчик
digitalWrite(sensor, HIGH);
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);
}
}
Собрана вот такая схема:

И вот готовое устройство в действии:




Видео работы девайса
http://youtu.be/usQ7ud7kmfw
В коде нашлись ошибки и поэтому он притерпел изменения. Теперь выглядит так:
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. Подправлен код, который теперь выглядит вот так:
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 байт. Помогите с нумерацией портов пожалуйста.