Термометр на DS18b20 и счетчик на прерываниях для солнечного коллектора
- Войдите на сайт для отправки комментариев
Здравствуйте.
Большинство примеров для Ардуино дают "локальную" информацию, но мало примеров комплексных решений. Объединив код из двух рабочих скетчей, не факт, что в итоге получим удовлетворительный результат.
Решил сделать на ардуино уно управление системой циркуляции теплоносителя в солнечном коллекторе.
Общий алгоритм такой:
1)В главном цикле измеряю температуру с помощью двух датчиков DS18b20. Один установлен в солнечном коллекторе(Т1), второй в бойлере (теплообменнике)(Т2).
2)Вывожу значение температур на индикатор.
3)Если температура Т1>35гр.Ц. и Т1>Т2, включить циркуляционный насос(выставить HIGH на нужном выводе )
4)Если Т1>75гр.Ц., то авария - включить бипер, отправить сообщение.
5)Если выполнено условие п3, т.е. включился циркуляционный насос, то должны пойти импульсы со счетчика воды. Импульсы правильно считать в прерываниях. Если насос генерирует импульсы быстрее, чем проходит цикл измерения температуры, то наступает "забивание" программы в части измерения температуры.
Предполагаю, что я ошибаюсь. Вопрос: Возможно ли организовать гарантированное измерение температуры и подсчет импульсов? Замену датчиков DS18b20 и установку дополнительных элементов к Ардуино не предлагать!
Спасибо за рабочий пример.
У вас будет несеолько проблемм, перечислю их по увеличению сложности:
1. написать программу
2. собрать всё в корпусе.
3. сделать питание этому.
4. в связи с тем, что на солнечном коллекторе температура может достигать 200 и выше градусов- Даллассоские термометры там не годятся и пункт первый плавно переходит в пятый- использование термопар или других высокотемпературных датчиков с соответствующими усложнениями хардваре и софтваре.
Ваше..... Если Т1>75гр.Ц., то авария - включить бипер, отправить сообщение...... нисколько не спасёт от закипания бойлера и куда вы тогда будете скидывать избыток энергии? Сливать кипяток в канализацию?
Ваше всё в принципе будет работать, но есть поговорка: Прибор должен работать не в принципе, а в кожухе.
Гляньте вот это, уже всё включенО, и система меню и нужные датчики и все реле-питание-корпус....
http://www.aliexpress.com/item/CE-approved-SR868C9-solar-heat-water-controller-for-heating-system110V-60Hz-220V-50Hz/879076716.html
Панель индикации выносится в любое удобное место по любому четырёхжильному (тонкому сигнализационному )кабелю.
при заказе не забудьте указать 220 Вольт !!!!!!!!!!!
trembo, этот форум для тех, у кого руки из плеч растут и извилины не прямые. Система давно сделана и работает, но раньше не было в ней счетчика воды, а теперь есть. И примеры решений есть,
https://github.com/adafruit/Adafruit-Flow-Meter/blob/master/Adafruit_Flo...
http://habrahabr.ru/post/232903/
http://cxem.net/arduino/arduino66.php
http://www.seeedstudio.com/wiki/index.php?title=G1/2_Water_Flow_sensor
но они меня не устраивают.
P.S. trembo, не считайте себя самым умным. Это избавит от многих проблем в жизни.
Можно, но придется писать все с нуля, библиотеки использовать не получится. Но поскольку импульсы со счетчика по сравнению с циклом чтения температуры датчика достаточно редки, при грамотном написании скетча, может все получится и со стандартными библиотеками.
Не пытаюсь быть самым умным, но задумался, почему же в профессиональном оборудовании не используют 1-wire термометры, а юзают NTC терморезисторы и... пришел к выводу - надежнее во всех аспектах, проще замена вышедших из строя, больше выбор конструктивных исполнений, несравненная помехоустойчивость и еще очень много почему.
поскольку импульсы со счетчика по сравнению с циклом чтения температуры датчика достаточно редки
Из-за ошибочных предположений рождаются неверные решения.
Я не предполагаю. Я констатирую факт. Переменная лишь одна - исполнитель. Учитесь читать и понимать. А вот вы - 123ksn, явно вопросом не владеете. Так что может правильнее просто помолчать и подумать ?
А за "рабочим примером" вам сначала в карман за кошельком, а потом в "Ищу исполнителя" ;) Могу только лишь намекнуть, что прерывания по инциденту на ноге можно использовать как тригер, и считывать данные из этой псевдозащелки. Но это для понимающих НЕХАЛЯВЩИКОВ :)
Как то неприятно встретить на просторах сети неконтролирующего себя неврастеника, который сначала просит помощи, а потом пытается укусить любого, кто высказывает хоть какую то мысль. Хрен ли тогда к форуму обращаться, лепил бы все сам и блестел бы в своей "безумной крутоте" :)
Как то неприятно встретить на просторах сети неконтролирующего себя неврастеника
1)Я Вас не оскорблял.
Я не предполагаю. Я констатирую факт.
2)Если бы Вы привели аргументацию, то возможно, был бы факт, а так, с точки зрения простого читателя, явно вопросом не владеющим, голословное утверждение.
а потом пытается укусить любого, кто высказывает хоть какую то мысль.
3)Не надо "хоть какую то мысль". Помощь - это когда помогают! С точки зрения инквизиторов, они тоже помогали грешникам.
Поэтому научитесь сначала читать вопросы, а потом, если есть, что сказать - говорите. Но уверен, что с этой мыслью Вы не согласны.
Изначально предполагалось, что вопрошающий "знает о чем говорит", по "недалекой реплике" я понял, что он вовсе не понимает сути. Помогите мне деньгами !!! Пяток сотен баксов меня устроит, работать не хочу, других вариантов не предлагать !
Не ждите от меня рыбы, я вам расскажу как сделать удочку. Кушать то, небось сами, будете ?
Каждый импульс счетчика это 1/1000 куба, иными словами 1 литр. В небольших системах отопления расход больший 50 литров в минуту - уже полный бред, поскольку ТН на больших потоках не сможет осуществлять вменяемый теплообмен, просто будет нагреваться вся система, то есть это никому не нужно. Поэтому циркуляционные насосы для непромышленных применений имеют производительность до 11 кубов в час, что составляет 183 литра в минуту (это насосы с резьбой более 1 дюйма). Примем такой расход за максимально возможный в системе. Таким образом максимальное количество импульсов выдаваемое счетчиком составит 3 в секунду, то есть период 0,34 секунды или 340 милисекунд или 340000 микросекунд.
Если в задержке (кванте) протокола 1-wire встроить всего ОДИН опрос триггера прерывания, то мы сможем считать импульсы с периодом 15 микросекунд, что в 22500 раз больше. То есть реально можно, без потерь отследить поток 250000 кубов в час !!!!
Я бы смог реализовать это скажем за 300 долларов, а бесплатно могу только потрындеть. Это по вашему не хорошо ?
Из-за ошибочных предположений рождаются неверные решения.
по "недалекой реплике"
Опять оскорбляете.
я понял, что он вовсе не понимает сути.
Я написал бы "предположил". И опять: Из-за неправильного понимания рождаются неверные решения.
Помогите мне деньгами !!! Пяток сотен баксов меня устроит, работать не хочу, других вариантов не предлагать !
Это Вы поняли по одному посту? Да Вы, батенька, экстрасенс!
Каждый импульс счетчика это 1/1000 куба, иными словами 1 литр. В небольших системах отопления расход больший 50 литров в минуту - уже полный бред, поскольку ТН на больших потоках не сможет осуществлять вменяемый теплообмен, просто будет нагреваться вся система, то есть это никому не нужно. Поэтому циркуляционные насосы для непромышленных применений имеют производительность до 11 кубов в час, что составляет 183 литра в минуту (это насосы с резьбой более 1 дюйма). Примем такой расход за максимально возможный в системе. Таким образом максимальное количество импульсов выдаваемое счетчиком составит 3 в секунду, то есть период 0,34 секунды или 340 милисекунд или 340000 микросекунд.
Если в задержке (кванте) протокола 1-wire встроить всего ОДИН опрос триггера прерывания, то мы сможем считать импульсы с периодом 15 микросекунд, что в 22500 раз больше. То есть реально можно, без потерь отследить поток 250000 кубов в час !!!!
Тоесть, Вы действительно не понимаете русского языка? Читаем еще раз вопрос:
Название темы: "Термометр на DS18b20 и счетчик на прерываниях для солнечного коллектора"
Решил сделать на ардуино уно.....
Вопрос: Возможно ли организовать гарантированное измерение температуры и подсчет импульсов?
Вопрос предполагает два ответа: 1)На ардуино уно можно реализовать такое измерение
2)Средствами ардуино нельзя реализовать такое измерение.
Если бы кто-то предложил готовый пример, то я заранее сказал СПАСИБО.
В принципе, нужный мне код есть на Си здесь http://kazus.ru/forums/showthread.php?p=180411#post180411
бесплатно могу только потрындеть.
А вот и истинное лицо открылось. А столько "громких" слов было!!!
Можно...
Мой ответ на заданный вопрос. Первое слово в первом посте от меня. Так нет же, весь, блин, такой оскорбленный, решил поучить меня жизни. Некуда девать ума ? Или чем там вас распирает !? :)
Я написал бы "предположил". И опять: Из-за неправильного понимания рождаются неверные решения.
Вот и напишите, хрен ли требовать этого от меня !? Вы кто такой, что пытаетесь учить меня !?
И мое "истинное лицо" не скрывалось. Бесплатно работают только дураки. Я уже и так слишком много времени убил на троля. Плюйся дальше, троль :)
Бесплатно работают только дураки.
Вы так глобально мыслите, а я задаю такие маленькие конкретные вопросы, что боюсь ошибиться в предположениях, поэтому уточню. Это Вы о нем http://kazus.ru/forums/showthread.php?p=180411#post180411 ?
Так нет же, весь, блин, такой оскорбленный, решил поучить меня жизни....
хрен ли требовать этого от меня !?
Помилуйте, учить Вас жизни? Я давно такими глупостями не занимаюсь.
Я от Вас никогда ничего не требовал!!!
Я уже и так слишком много времени убил на троля. Плюйся дальше, троль :)
Опять оскорбляете. Ну кто ж виноват, что Вы так резко опустили себя ниже плинтуса, умный Вы наш?
Бестолоч :)
Ура! Нашел интересующий меня пример кода для двух счетчиков воды (на прерываниях) и одного DS18b20 на Ардуино: http://cyber-place.ru/showthread.php?t=1292 "Допилить" для нескольких уже не проблема. И на этом форуме очень много полезной информации по Ардуино и не только. И денег никто не требует.
Всем успехов!
Скопировал код на всякий
перезалил 12.12.2014 код, так как в нём была ошибка:static*unsigned*long*millis_prev_1; и не было объявления переменной millis_prev_1(2)
без борьбы с дребезгом код выглядит так:
Странно, brokly не плюсанули, а меня не минусонули. Совсем традиции не хранят!
Главное - не забыть:
с номерами 2 (pin 21), 3 (pin 20), 4 (pin 19) и 5 (pin 18).
А еще важно знать, что Arduino Mega2560 - это КАСТРАТ!!! Так как обрезали возможности МК atmega2560, не выведя выводы на разъемы в угоду совместимости шилдов и скетчей с УНО. Это право создателей! Но плохо, что об этом молчат при рекламе.
Паяльник с тонким жалом и тонки провода.
ВЕРНИ ЧИПУ ЯЙЦЫ!
Паяльник с тонким жалом и тонки провода.
ВЕРНИ ЧИПУ ЯЙЦЫ!
1)Тогда зачем Ардуино?
2)Не я "кастрировал". Читаем с включенными мозгами!!!
1) Че ты как неэлектрик ваще?
2) Ты первый.
чего-то я не понял...
Вопрос предполагает два ответа: 1)На ардуино уно можно реализовать такое измерение
2)Средствами ардуино нельзя реализовать такое измерение.
...
В принципе, нужный мне код есть на Си здесь http://kazus.ru/forums/showthread.php?p=180411#post180411
сам спросил, сам ответил, сам выложил код, сам поправил, попутно обругав всех, что не поняли его замыслов....
а чего хотел-то?
сам спросил, сам ответил, сам выложил код, сам поправил, попутно обругав всех, что не поняли его замыслов....
а чего хотел-то?
Неужели непонятно!? Помощи просил.
Просто пока некоторые трепались, я продолжал искать ответ на свои вопросы. А как известно, кто ищет - тот найдет. А дал ссылки и привел код, что бы другие по "граблям" не ходили. Пусть народ пользуется.
понятно, что просил. непонятно зачем. неужели непонятно!?
впрочем, уже и не важно
Провел небольшое исследование кода. Результаты, как я и предполагал плачевные.
Не нашел я пока для Ардуины УНО нормального счетчика с несколькими термометрами DS18b20. Код с моими объяснялками и результатами эксперимента привожу ниже.
Эксперимент:
//если со второй ардуины (скэтч BLINC) подать импульсы (1, 10 и 100Гц) на входы на внешних прерываний (пин2и3) Ардуины УНО, то без кода термометра (//get_temp();) при одном прерывании(пин2)
//при 500мс(1Гц), счетчик за 2 сек прирастает на 2ед, что правильно.
//при 50мс(10Гц) счетчик прирастает на 20ед.Ок.
//при 5мс(100Гц) счетчик должен прирастать на 200ед.Но часто прирастал на 199
//Тоже, только подадим и на второе прерывание паралельно сигнал
//при 500мс(1Гц), счетчик ГОР за 2 сек прирастает на 2ед, а ХОЛ на 4,что правильно. четкое отличие показаний в два раза.ОК.
//при 50мс(10Гц) счетчик ГОР за 2 сек прирастает на 20ед, а ХОЛ не считал. ОК
//при 5мс(100Гц) счетчик ГОР за 2 сек должен прирастать на 200ед.Но часто прирастал на 199. ХОЛ не считал
//Задействуем два прерывания и термометр (один датчик DS18b20) !!!ПРОВАЛЬНЫЙ ТЕСТ!!!
//при 500мс(1Гц), счетчик ГОР за 2 сек прирастает ЧАСТО на 3ед, а ХОЛ на 6-7. Близкое отличие показаний в два раза. Температура правильная. BAD!!!
//при 50мс(10Гц) счетчик ГОР за 2 сек прирастает на 33ед, ХОЛ не считал. Температура правильная. BAD!!!
//при 5мс(100Гц) счетчик ГОР за 2 сек должен прирастать на 200ед.Но прирастал на 338. ХОЛ не считал. Температура правильная. BAD!!!
// http://cyber-place.ru/showthread.php?t=1292 //Программа отвечает на запросы из вне. Сама в сом-порт ничего не гонит и измерение темп не производит
//Ниже переделанная. Выдает инфу каждые 2 сек
//Проверял на Arduino UNO
/*micros()- Возвращает количество микросекунд с момента начала выполнения текущей программы на плате Arduino. Значение переполняется и сбрасывается на ноль, приблизительно через 70 минут. На 16MHz платах Ардуино (Duemilanove и Nano) функция micros() имеет разрешение 4 микросекунды (возвращаемое значение всегда кратно 4). На 8MHz платах (Arduino Lilypad) разрешение функции 8 микросекунд.
Если счетчик переполняется, то лучше просто обнулять счетчик этих функций после измерения:
timer0_millis для millis()
timer0_overflow_count для micros()
Есть два способа вычисления оборотов:
1. Считать количество срабатываний датчика за интервал времени (способ для меня)
2. Считать время между срабатываниями датчика
revolutions - обороты, а не революции
count - "счетчик"-имя переменной в которой хранится количество того, что мы считаем (суммируем)
rpm - оборотов в минуту
volatile - означает указание компилятору не оптимизировать код, поскольку значение переменной изменяется внутри обработчика прерывания
ISR - это Interrupt Service Routine или Процедура Обработки Прерывания
Ключевое слово static используется для создания переменной, которая видна только одной функции. Однако в отличие от локальных переменных, которые создаются и уничтожаются при каждом вызове функции, статические переменные остаются после вызова функции, сохраняя свои значения между её вызовами.
Использование таймера/счетчика 1 в своих целях при программировании плат Ardiono чревато разрушением реализованной в wiring системы реального времени. А таймер/счетчик 2 восьмибитный. подробней здесь
http://www.stepwood.com/avrsuite/2012/02/19/arduino-nastraivaem-taymer-schetchik-2/#more-123
*/
// 2 счетчика (на прерываниях!!!) и DS18b20
//Внешних Прерываний у УНО только два и их входы выведены на пин2 для 0прер и пин3 для 1-го
//Прерывания у Mega2560 пины 2 3 21 20 19 18
// Если датчик DS18B20 лежит на спине (лицом к нам), ногами вниз, то считая слева направо 1-GND, 2-D, 3+U
// Питание на DS18B20 можно подавать как +5в, так и +3.3в. Будет работать.
//Между 2 и 3 выв DS18B20 надо установить резистор 4,7кОм.
// для создания импульсов (при проверке) можно использовать энкодер
// Штатный светодиод УНО пин13 можно использовать для индикации прерываний
//OneWire - универсальная. С ее помощью можно работать с любым устройсвом (вкуснув его даташит), а //DallasTemperatureControl - частный случай для DS18B20
//Arduino Nano V.3 имеет дефект , не поддерживает WDT
/* Выводы счетчика воды
1 пин (красный) +5v с ардуина или внешнего источника
3 пин(черный) на землю ардуина
2 пин(желтый) на pin2 и pin3 ардуина
Выводы Ардуино УНО, а не МК (атмега328)
pin0,pin1 - RX TX
pin2 - Счетчик горячей воды
pin3 - Счетчик холодной воды
pin7 - Dallas DS18B20 Датчики температуры
*/
///////////////////////// Конец всяким пояснялкам //////////////////////////////////
Добрый вечер -))
Тоже начиная с субботы пишу программку как у ТС (123ksn). Счетчик с датчиком Холла и два датчика 1820.
Устройство будут использоваться с тепловым насосом, для определения его детальных характеристики. Поток 2-3 куба в час температуры 0 до+60 градусов.
Пока не тестировал на системе.
Готов объеденить усилия для доводки программу до ума. Мой код:
Совет 123ksn минимизируйте обработчики прерываний. Уберите все лишнее из них.
Сейчас скопирую и подвергну испытанию.
pav2000, не пишите общих фраз!!! Посмотрите код обработчика прерываний!!!
119
//1)Процедура обработки импульса(прерывания) от датчика холодной воды
120
void
add_Cold()
121
{
122
static
unsigned
long
millis_prev_1;
123
if
(millis()-100 > millis_prev_1)
124
Count_Cold=Count_Cold++;
125
millis_prev_1 = millis();
126
}
127
//2)Процедура обработки импульса(прерывания) от датчика горячей воды, который без дребезга
128
void
add_Hot()
129
{
130
Count_Hot=Count_Hot++;
//к текущему значению счетчика Count_Hot прибавляем 1. Можно так: ++Count_Hot
131
132
//Так можно поменять состояние светодиода, что бы увидеть, что прерывание сработало
133
//НО делать этого в прерывании не надо, что бы не пропустить вх.импульс
134
digitalWrite(pin13_LED, LOW);
135
136
//Так можно узнать время между импульсами (прерываниями). Лжет, в момент переполнение (раз в 50 дней)
137
//time = (micros() - time_last);
138
//time_last = micros();
139
}
Что в нем лишнее?!!!
Судя по ругательству компилятора
и черному цвету надписи #include <TimerOne.h>
У меня нет библиотеки TimerOne. Бросьте ссылочку что бы скачать.
Лишее по моему ИХМО
digitalWrite(pin13_LED, LOW);
Я конечно на arduino программирую 3 день, но мне кажется что эта функия долгая (это надстройка).
Также я бы не использовал функцию
millis() в прерывании
- тоже жрет ресурсыСсылка TimerOne.h
https://code.google.com/p/arduino-timerone/downloads/list
Пока ждал ответ, погуглил. В моих записях есть такая мысль:Использование таймера/счетчика 1 в своих целях при программировании плат Ardiono чревато разрушением реализованной в wiring системы реального времени.
http://www.stepwood.com/avrsuite/2012/02/19/arduino-nastraivaem-taymer-schetchik-2/#more-123
Проблема не в счетчике прерываний как таковом. Примеров для прерываний море. Проблема в том, что для таймингов DS18b20 используется таймер-счетчик1. И тут возникает проблема как у мужиков, хотящих одну женщину.
Уверен, что на штатных библиотеках счетчики по прерыванию и DS18b20 "не подружить"(ИМХО). Весь код надо писать на Си. Обратите внимание сколько отрицательных отзывов на библиотеку TimerOne и опять же нет примера для двух таймингозависимых устройств. Все приводят тепличные варианты.
У меня датчики темературы считываются корректно. А вот датчик потока у меня вызывает сомнения (хотя он не привязан к таймеру) Как его калибровать и проверить на адекватность.
Программировать на прямую я пробовал результат тот же т.е. работает.
По поводу библиотеки - нашел что не будет работать шим (на каких то ногах) но он мне не нужен. Других отрицательных моментов не нашел.
DS18B20 не зависит от таймингов. Считывание можно вести в любой момент времени после минимальной задержки. Просто в вашей библе напихано много delay(), попробуйте через OneWire напрямую.
Результаты моего тестирования отличаются от Ваших с точностью до наоборот
DS18B20 не зависит от таймингов. Считывание можно вести в любой момент времени после минимальной задержки. Просто в вашей библе напихано много delay(), попробуйте через OneWire напрямую.
Пожалуйста, будте конкретней.
1)Если Вы посмотрите в даташит на DS18B20, то увидите много интервалов. И что бы считать температуру из DS18B20 надо сделать несколько предварительных операций, для которых очень важны тайминги.
2)О какой моей библиотеке идет речь?
3)У меня используется именно OneWire!!!!
В Вашем коде для работы с DS18B20 надо вводить его номер? То есть жестко прописывать?
У вас согласен,это писал по второму коду.
Но у меня на ciberlib работает два далласа и два диммера (100Гц) на прерывании, друг другу не мешают.
Может сделать считывание датчика как у меня через доп. библиотеку
<DallasTemperature.h>
Но у меня на ciberlib работает два далласа и два диммера (100Гц) на прерывании, друг другу не мешают.
А кодом поделиться?
Может сделать считывание датчика как у меня через доп. библиотеку
<DallasTemperature.h>
Если посмотрите мои заметки к коду, то прочтете:
"//OneWire - универсальная. С ее помощью можно работать с любым устройсвом (вкуснув его даташит), а //DallasTemperatureControl - частный случай для DS18B20"
Добавлю: Просто надстройка над OneWire
Если 1000 строк не лень читать, то вот.
Спасибо. Я уже не одну тысячу прочитал.
А вот и первый подводный булыжник всплыл.
Я в программе не ищу датчики, я заранее знаю адреса по которым стучаться надо. Определение делается с помощью одного из примеров библиотеки
что то типа мульти . . .
<DallasTemperature.h>
Сначала с помощью примера определяете адреса датчиков, потом их жестко зашиваете в свою программу. Как сделано у меня. Чтение температуры по конкретному адресу не припятсвует работе таймера.
Адрес должен быть как у меня длиной.
Я в программе не ищу датчики, я заранее знаю адреса по которым стучаться надо. .. потом их жестко зашиваете в свою программу.
Принципиально не согласен с таким подходом.
Чтение температуры по конкретному адресу не припятсвует работе таймера.
О каком таймере речь?
Адрес должен быть как у меня длиной.
Видимо, да.
bwn, не могли бы Вы поделиться библиотекой LiquidCrystalCyr_I2C.h. Гугл не находит.
Чет я пропустил, при отображении ROM у вас выкинуло нули, адрес 8байт. А если вы проведете определение в Setup и запомните адреса, то потом этой операции не будет и соотв. не должно влиять на прерывания (они delay() ненавидят). У меня диммеры с DS работают без мигания, а вот библиотеку DHT не победил (там все на длинных таймингах), на ней есть помаргивание.
Библу здесь не знаю как выложить, могу скинуть.
А если вы проведете определение в Setup и запомните адреса, то потом этой операции не будет и соотв. не должно влиять на прерывания
Это я уже понял. А информацию выложил, что бы не быть голословным трепачем. Библиотеку в одном месте нашел. Вот ссылка URL: http://blockduino.org/Libs/LiquidCrystalCyr_I2C.zip
Сегодня ночью "обрезАл" Ваш код, так как у меня нет ни ЖКИ, ни кнопок, ни DHT22, Если возможно, поделитесь дополнительно информацией о том, какие Вы подключали к Ардуино прибамбасы и к каким пинам. Например, сколько кнопок в клавиатуре? Схемой на кнопки. Какую внешнюю память используете? Код у Вас хорошо комментирован, но все-таки описание на словах лишним не будет.
Кнопок 3 верх, низ, выбор. Подключены на А0 резистивным делителем (там в комментах были номиналы). SDA,SCL(A4,A5) часы и дисплей. D2 вход прерывания от сетевой синусоиды (через оптрон), D3,D4 - диммеры через оптрон-симистор без отлова нуля. D7 - AM2301(DHT22). D8 - DS18B20 2 штуки. D9 - пищалка активная через ключ. D10, 11, 12 - вентиляторы и освещение через оптрон-симистор с отловом нуля (moc3041). D13 - мигалка+собака на NE555.
Память внутренняя на Atmege. Если будете использовать для нее Ciberlib, там был косяк с полем памяти (возможно ужу подправили) byte и long работали с однобайтовой адресацией.
По всякому библиотеку ломал. Кое-как на Mega запустил, убрав PROGMEM и сделав тип unsigned char (билеберда полезла), на nano не завелась никак.
Добавил бы кто переключатель страниц знакогенератора для дисплеев МЭЛТ и обработку для юникода. :)
По всякому библиотеку ломал. Кое-как на Mega запустил, убрав PROGMEM и сделав тип unsigned char (билеберда полезла), на nano не завелась никак.
Добавил бы кто переключатель страниц знакогенератора для дисплеев МЭЛТ и обработку для юникода. :)
Это вы за Ciberlib?
КиберЛиб у меня работает, я про LiquidCrystalCyr_I2C.zip
У меня с первого раза без проблем. А дисплей с кирилицей?
Да. Патался залить пример в Mega. prog_uchar где объявлено?
Ругань идет при заливке в мега (там PROGMEM нет) и в nano (на prog_uchar)
IDE 1.5.7