5110 и 18В20
- Войдите на сайт для отправки комментариев
Вс, 10/01/2016 - 12:30
// ЭТОТ СКЕТЧ КОМПИЛИРУЕТСЯ НО НЕ ПОКАЗЫВАЕТ НА ДИСПЛЕЕ 5110 ТЕМПЕРАТУРУ ОТ 18В20 #include <OneWire.h> #include <DallasTemperature.h> #include <LCD5110_Basic.h> LCD5110 myGLCD(3,4,5,7,6); OneWire ds(10); extern uint8_t MediumNumbers[]; void setup() { myGLCD.InitLCD(); } void loop(){ byte data[12]; byte addr[8]; if (!ds.search(addr)) { Serial.println("No more addresses."); return; } ds.reset_search(); // должен искать, не мигают Rx, Tx???? или не так считаю? if (OneWire::crc8(addr, 7) != addr[7]) { Serial.println("CRC is not valid!"); delay(1000); return; } ds.select(addr); ds.write(0x44); //0x44 провести измерение температуры и записать данные в оперативную память delay(1000); ds.reset(); // должен искать, но ведь не мигают Rx, Tx ds.select(addr); ds.write(0xBE); // 0xBE – считать последовательно 9 байт оперативной памяти 0xB4 – вернет тип питания (0 – паразитное, 1 – внешнее) for (int i = 0; i < 9; i++) { data[i] = ds.read(); } int raw = (data[1] << 8) | data[0]; // Переводим в температуру if (data[7] == 0x10) raw = (raw & 0xFFF0) + 12 - data[6]; float temperature = raw / 16.0; myGLCD.setFont(MediumNumbers); myGLCD.printNumF(temperature, 2, CENTER, 0); delay(100); myGLCD.clrScr(); }
Помогите разобраться что упустил. Скетч компилируется, ошибок не выдается. Но термометр не работает. Дисплей 5110 прекрасно работает, все тесты проходит и символьные и графические. С ДНТ-11 тоже работает. А вот далласы 18В20 никак не пролазят на его экран. Компиляция проходит сразу. Подключение датчика пробовал на разных входах. Обратил внимание -не моргаютТх (или это только при serial?) Вот этот код
Если дисплей работает нормально, то он тут совсем не при чём. Ищите проблему в работе с датчиком, а не в "пролезании его в дисплей".
А если в сериал выводить, то данные "пролазят"?
Вот есть же туториал прям как Вам надо: http://salda.ws/video.php?id=ga_1dqGjsbo
С далласами все в порядке. Они рабочие. Я с ними хорошо знаком. И на мониторе "пролазят" и на обычном LCD1602. Питание пробовал и паразитное и трехпроводное. Менял ардуины. Может в коде засада? я не смог разобраться. Помогите кто может.
Почему зациклился на 5110 ? Потому что мне нужно мониторить температуру в светобоксе на каждой полке отдельно, а потом регулировать включением вентиляторов.
C далласами всё в порядке, с дисплеем тоже. В чём тогда проблема ?
Попробуйте, как уже посоветовали выше, воспользоваться отладочными средствами и вывести температуру в сериал. Если выведется, попробуйте что-нибудь вывести на дисплей, за место температуры.
Так и доберётесь до причины.
52 строку закомментить, вместо нее : float temperature = 3.62; Выведет али нет? Если нет, копайте ваши 53-54 строки.
kriss, ваш скетч кишит косяками. Большими и малыми. Сразу видно, что надёргали из разных источников, и пытаетесь слепить что-то рабочее. Если сверху вниз:
4 стока - зачем грузить библу, если вы её не используете?
21-31 строка -некорректный поиск адреса, вместо адреса будут ноли
57 строка - по возможности никогда не используйте эту команду. Это очень заметно на глаз.
Зато у человека
kriss, вот исправил :
Спасибо Вам большое!
Ваш скетч сразу заработал. Однако я успел до прочтения вашего, свои косяки поправить. Вот мой код, который тоже заработал! Наверно тоже много лишнего, я методом тыка пробовал закоментировать то, что понятно.
всем спасибо!
Вставил в скетч регулятор температуры с гистерезисом. проверил -выполняет задачу.
Подскажите пожалуйста, как организовать ограничение времени включенного состояния, чтобы управлять реверсивным приводом
millis() , или нет ?
Я про эту функцию читал и понял так, что она выводит в последовательный порт время работы
самой платы, но как ее использовать для подсчета времени включения выхода, не знаю.
Ну, всё верно. Вот в это условие и вставляйте весь код, указанный Вами выше. И он не будет выполняться, пока не пройдёт 10 секунд. соответственно, не будет переключений.
PS: Только что у Вас был код в сообщении, зачем удалили его ? Он правильный.
И millis никаким боком не относится к выводу в сериал.
PS: Только что у Вас был код в сообщении, зачем удалили его ? Он правильный.
И millis никаким боком не относится к выводу в сериал.