Помогите пожалуйста разобраться.

Всем привет. столкнулся с некоторыми проблемами при работе с Ардуино нано. Конкретно: не работает термодатчик и проблемы с герконом.

На счет термодатчика (DS18B20) проблема в том что в инете нашел 2 схемы подключения:

1. левая нога - земля, средняя аналоговый выход, правая - питание. После подключения с датчика постоянно снимается 4.99 вольт и иногда 4.98 на понижение  и повышение температуры не реагирует.

2.все так же но аналог и питание соединены резистором на 4.7 КОм. здесь значение абсолютно случайные никакой закономерности или зависимости не увидел. код привожу ниже


void setup() {

Serial.begin(9600);

}


void loop() {

int reading = analogRead(0);

float voltage = reading * 5.0;

voltage /= 1024.0;

Serial.print(voltage); Serial.println(" volts");

float temperatureC = voltage * 100;

Serial.print(temperatureC); Serial.println(" degress C");

delay(1000);

}


Геркон. тестером проверял на магнит реагирует, но почему то на Ардуино не работает(или у меня руки кривые, что более вероятно). Подключен был так: во 2 цифровой порт и на землю. Так же была подключена лампочка(для проверки) отдельно от геркона. Идея в том что, когда через геркон течет ток - лампочка светится. код привожу


byte check;

void setup() {

pinMode(5,1);

pinMode(2,0);

}


void loop() {

check=digitalRead(2);

if (check == 1){

digitalWrite(5,1);

}

else{

digitalWrite(5,0);}

delay(3);

}


Перепробовал кучу вариантов, не могу понять в чем проблема помогите, если разбираетесь))

P.S. извините за ошибки, если есть.

2
Автор поста оценил этот комментарий
Геркон на плюс, мониторить через прерывание interupt, если не изменяет память. Термодатчик по моему не аналоговый, там шина 1ware или как-то так, читать через библиотеку. Гуглить видео уроки на канале амперка, там амера одного перевели, излагает годно.
1
Автор поста оценил этот комментарий

пауза в 3 мс маловато, ставь 3 000


не выставлены режимы работы пинов

pinMode(pinNum, OUTPUT);


http://arduino-project.net/podklyuchenie-ds18b20-arduino/

раскрыть ветку
Автор поста оценил этот комментарий

delay() работает только в ветке else. Паузу между циклами вставить было бы неплохо.

Макросы весь мир не зря использует. Вставлять вместо них значения напрямую - дурной тон, а не показатель крутости.

Автор поста оценил этот комментарий

RTFM не? http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

Для ардуины библиотека должна быть 1wire

Автор поста оценил этот комментарий

http://playground.arduino.cc/Learning/OneWire
вот статейка с куском кода, правда на английском
видимо, без библиотеки OneWire не обойтись

раскрыть ветку