Вот здесь я выкладывал управление батареей на ардуино:
http://cyber-place.ru/showthread.php?t=753
Решил запустить для начала дома на кухне, но столкнулся с проблемой, что реле не включается, если зажигать светодиод, то все отлично, загорается и гаснет когда надо. ни как не могу понять почему, помогите пожалуйста найти ошибку

заранее спасибо
PHP код:
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 10 // пин подключения датчика
//Установка типа вашего датчика
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
LiquidCrystal lcd(12, 11, 2, 3, 4, 5);
int reley = 8;//выбор пина к которому подключено реле с термоголовкой
int ButSetPin = A0;//Кнопка Set к пину А0
int ButMinPin = A1;//Кнопка "-" к пину А1
int ButMaxPin = A2;//Кнопка "+" к пину А2
DHT dht(DHTPIN, DHTTYPE);
int h=45;//Начальный параметр влажности
int t=24;//Начальный параметр температуры
int regim = 0;//Стартовый режим отображения дисплея
//Вспомогательные флаги для кнопок
int flag = 0;
int flagmin = 0;
int flagr = 0;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
dht.begin();
pinMode(reley, OUTPUT);
}
void loop() {
//Читаем температуру и влажность с датчика
float humi = dht.readHumidity();
float temp = dht.readTemperature();
//Переключаем режимы отображения дисплея и ввода данных
if(digitalRead(ButSetPin) == HIGH && flagr == 0)
{
regim ++;
flagr = 1;
if(regim > 2) // Если номер режима превышает требуемого
{ // то отсчет начинается с нуля
regim = 0;
}
}
if(digitalRead(ButSetPin) == LOW && flagr == 1)
{
flagr = 0;
}
//==================В режиме 0 выводим действительные данные температуры и влажности
if(regim == 0)
{
lcd.setCursor(0,0);
lcd.print("HUMI:");
lcd.print(humi);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print("TEMP:");
lcd.print(temp);
lcd.print(" C");
}
//======================В режиме 1 задаем нужную влажность
if(regim == 1)
{
if(digitalRead(ButMaxPin) == HIGH && flag ==0)
{
h++;
flag =1;
}
if(digitalRead(ButMaxPin) == LOW && flag == 1)
{
flag = 0;
}
if(digitalRead(ButMinPin) == HIGH && flagmin==0)
{
h--;
flagmin = 1;
}
if(digitalRead(ButMinPin) == LOW && flagmin == 1)
{
flagmin = 0;
}
lcd.setCursor(0,0);
lcd.print("Set HUMI: ");
lcd.setCursor(0,1);
lcd.print("HUMI: ");
lcd.print(h);
lcd.print(" % ");
}
//==============================В режиме 2 выставляем нужную температуру
if(regim == 2)
{
if(digitalRead(ButMaxPin) == HIGH)
{
t++;
}
if(digitalRead(ButMinPin) == HIGH)
{
t--;
}
lcd.setCursor(0,0);
lcd.print("Set TEMP: ");
lcd.setCursor(0,1);
lcd.print("TEMP: ");
lcd.print(t);
lcd.print(" C ");
}
Serial.print(temp);
if(temp>t)//если действительная температура больше заданной, включается реле и батарея перекрывается, если действительная ниже, то батарея открывается
{
digitalWrite(reley, HIGH);
}
else digitalWrite(reley, LOW);
// Если данные с датчика не верные, пишем ошибку
if (isnan(t) || isnan(h))
{
Serial.println("Failed to read from DHT");
}
}