Обогрев дома с 4 датчиками 18B20
- Войдите на сайт для отправки комментариев
Сб, 24/10/2015 - 22:51
//0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16 синий //0x28, 0x22, 0xAA, 0xB9, 0x05, 0x00, 0x00, 0x7F красный //0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54 жол с 1точк //0x28, 0xE9, 0x46, 0xB9, 0x05, 0x00, 0x00, 0xE3 жол с 2точк //0x28, 0x7E, 0x7B, 0xB9, 0x05, 0x00, 0x00, 0xBF жол с 3точк // 0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16 чёрный // 0x28, 0x22, 0xAA, 0xB9, 0x05, 0x00, 0x00, 0x7F красный // 0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54 жолтый //ds18b20 140915_1230_датчик температуры 2 и более // http://arduino-project.net/podklyuchenie-ds18b20-arduino/ #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 9 // датчик подключен к пин 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0x7E, 0x7B, 0xB9, 0x05, 0x00, 0x00, 0xBF}; // 3точки DeviceAddress Thermometer2 = { 0x28, 0xE9, 0x46, 0xB9, 0x05, 0x00, 0x00, 0xE3}; // 2точки DeviceAddress Thermometer3 = { 0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54}; // 1точки DeviceAddress Thermometer4 = { 0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16}; // синий #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { // Serial.begin(9600); lcd.init(); // initialize the lcd lcd.init(); // Print a message to the LCD. lcd.backlight(); sensors.begin(); sensors.setResolution(Thermometer1, 10); sensors.setResolution(Thermometer2, 10); sensors.setResolution(Thermometer3, 10); sensors.setResolution(Thermometer4, 10); Serial.begin(9600); } void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.println(tempC); } void loop() { sensors.requestTemperatures(); Serial.print("T1 "); lcd.setCursor(0, 0); lcd.print("T1"); // lcd.println (T1); //lcd.println (T1); //dataString+=sensors.getTempC(Thermometer2) printTemperature(Thermometer1); Serial.print("T2 "); printTemperature(Thermometer2); Serial.print("T3 "); printTemperature(Thermometer3); Serial.print("T4 "); printTemperature(Thermometer4); }
Здравствовать всем, начну сразу с вопроса, небольшой затык с выводом температуры на дисплей, на мониторе всё коректно отоброжаетца но на дисплей вывести немогу, и за этого немогу делать програмку дальше, потому как проект в следующем, часовой блок, 4строчный индикатор, 3 кнопки для менюшки, 4 датчика 18В20, по замыслу будет отоброжатца температура с 4х точек, через меню заводить подогрев на определённое время, и установка заданной температуры, которую ардуинка будет поддерживать на каждом датчике( тоесть в каждой компате отделно), прошу вашего ответа, почему я немогу вывести температуру на дисплей, тока пожалуста непишите что руки кривые, )
Вот, смотрите, в монитор Вы выводите одним способом (через функцию printTemperature), а на дисплей пытаетесь методом тыка писать всё, что попадётся, только бы не так же, как в монитор - т.е. не проверенным, работающим образом. Для монитора вызвать getTempC надо, а для дисплея и без этого сойдёт, так чтоли?. Выводите также, как в монитор (запросите температуру getTempC , преобразуйте её в строку, а уж строку выводите) и всё выведется.
На мой взгляд, выводить на печать внутри функции - не очень удобно, т.к. один раз Вам захотелось выводить в ком-порт, другой раз - на LCD дисплей (третий раз - куда-нибудь отправить через http get). Если бы функция возвращала просто переменную, готовую к выводу куда угодно, то, получив эту переменную, Вы бы легко делали вывод туда, куда требуется уже в теле программы.
Тут еще нюанс в том, что часто дергать DS18B20 - не хорошо, т.к. сам по себе цикл опроса датчиков занимает определенное, весьма ощутимое, время: а так - запросили температуру раз в минуту, и делайте потом с ней что угодно...
Причём тут внутри функции или снаружи. Просто, чтобы вывести в монитор Вы сначала спрашиваете значение температуры, а потом его выводите. А на экран хотите выводить не спрашивая. А что выводить-то, если Вы не спросили? Скетч чужой? Вы не понимаете что он делает?
ЕВГЕНИЙ вы прям в точку попали,естественно скет не мой , я тока изменил адреса по свои датчики, еслиб я понимал всё яб как вы наверно уже догодались, не спрашивал такие приметивные вопросы, дажы когда вы сказали в чём ошибка, я честно говоря пока несооброжу как это поправить, ну да,да, я ещё не профи, ну не ругать же меня за это, :-)
Ну, чего ж Вы там такого не сообразите?
Ну, блин, у Вас есть функция printTemperature, которая нормально работает, так? Ну, сделайте Вы ТОЧНО такую же функцию printTemperature1 только строку Serial.print... в ней замените на вывод на экран. В остальном точно такую же! И вызывайте её точно также - printemperature1(Termomenter1) - выведет.
Что у вас делает 49 строка?
И где такая строка для LCD?
Ответив на два простых вопроса, достигнем второго уровня понимания.
О, Евгений опередил))))
вроде чтото начало показывать, осталось понять что показывает, и почему вместо темп
//0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16 синий //0x28, 0x22, 0xAA, 0xB9, 0x05, 0x00, 0x00, 0x7F красный //0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54 жол с 1точк //0x28, 0xE9, 0x46, 0xB9, 0x05, 0x00, 0x00, 0xE3 жол с 2точк //0x28, 0x7E, 0x7B, 0xB9, 0x05, 0x00, 0x00, 0xBF жол с 3точк // 0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16 чёрный // 0x28, 0x22, 0xAA, 0xB9, 0x05, 0x00, 0x00, 0x7F красный // 0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54 жолтый //ds18b20 140915_1230_датчик температуры 2 и более // #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 9 // датчик подключен к пин 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0x7E, 0x7B, 0xB9, 0x05, 0x00, 0x00, 0xBF}; // 3точки DeviceAddress Thermometer2 = { 0x28, 0xE9, 0x46, 0xB9, 0x05, 0x00, 0x00, 0xE3}; // 2точки DeviceAddress Thermometer3 = { 0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54}; // 1точки DeviceAddress Thermometer4 = { 0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16}; // синий #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { // Serial.begin(9600); lcd.init(); // initialize the lcd lcd.init(); // Print a message to the LCD. lcd.backlight(); sensors.begin(); sensors.setResolution(Thermometer1, 10); sensors.setResolution(Thermometer2, 10); sensors.setResolution(Thermometer3, 10); sensors.setResolution(Thermometer4, 10); Serial.begin(9600); } void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.println(tempC); } void loop() { sensors.requestTemperatures(); Serial.print("T1 "); lcd.setCursor(0, 0); lcd.print("T1 "); lcd.print(int(Thermometer1));//вместо 25 показывает 280 по остальным тоже непонятные цыфры printTemperature(Thermometer1);// на монитор выводит правильно 25.00 Serial.print("T2 "); printTemperature(Thermometer2);// на монитор выводит правильно 25.00 Serial.print("T3 "); printTemperature(Thermometer3);// на монитор выводит правильно 25.00 Serial.print("T4 "); printTemperature(Thermometer4);// на монитор выводит правильно 25.00 }ературы вывело непонятно что, )
Вы просто так строки тычете, куда понравится? По шагам можете рассказать, что и где происходит?
Расскажите последовательно, что делают строки 59, 60 , 47, 48, 49.
Исправлю:
47 - начало функции считывания и печати с параметром
48- присваивает значение температуры переменной tempC инициированной как float
49 - выводит в сериал значение tempC
50 - завершение функции и возврат
59 - выводит в сериал предварительную информацию
60 - вызывает вышеназванную функцию и передает ей параметр.
Так где у вас выводятся данные температуры в сериал и откуда они должны выводится на LCD?
Блин, ну я же Вам написал - сделайте вторую функцию, которая отличается от printTemperature одной строкой и вызывайте её. Вам нравится упорствовать и писать бред вроде
lcd.print(int(Thermometer1));? Ну, удачи!Блин, ну я же Вам написал - сделайте вторую функцию, которая отличается от printTemperature одной строкой и вызывайте её. Вам нравится упорствовать и писать бред вроде
lcd.print(int(Thermometer1));? Ну, удачи!Да похоже человек не представляет, что такое функция и зачем она нужна. Я предпологал, что нынче в школе хотя бы основы Бейсика дают. Ошибся.(((( Логика нынче не в моде.((((
Какие вы всёже терпиливые, а я всё равно эту ардуиновскую лего никак нсоберу,
выб мне как говоритца прям в пример ткнули куда какой кирпич положить, а то говорите этот кирпич не кирпичный, этот вобще нетого цвета, а это не той констинценции, ну это алигория, просто на рабочем примере мне проще уеснить нежели вы так непонятно пытаетесь всё расжевать мне, неее я конечно это ценю, но не понимаю пока этих нюансов, вот последний неудачный эксперемент, хоть на нём ткните куда и сто дописать чтоб собралось задуманое )
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 9 // датчик подключен к пин 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensorss(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0x7E, 0x7B, 0xB9, 0x05, 0x00, 0x00, 0xBF}; // 3точки DeviceAddress Thermometer2 = { 0x28, 0xE9, 0x46, 0xB9, 0x05, 0x00, 0x00, 0xE3 }; // 2точки DeviceAddress Thermometer3 = { 0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54 }; // 1точки DeviceAddress Thermometer4 = { 0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16 }; // синий #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd lcd.init(); lcd.backlight(); sensorss.begin(); sensorss.setResolution(Thermometer1, 10); sensorss.setResolution(Thermometer2, 10); sensorss.setResolution(Thermometer3, 10); sensorss.setResolution(Thermometer4, 10); Serial.begin(9600); } float tempC; void printTemperature(DeviceAddress deviceAddress) { // float tempC = sensorss.getTempC(deviceAddress); tempC = sensorss.getTempC(deviceAddress); Serial.println(tempC); } ///////////////////// void loop() { start: sensorss.requestTemperatures(); printTemperature(Thermometer1); printTemperature(Thermometer2); printTemperature(Thermometer3); printTemperature(Thermometer4); // Serial.print("T1 "); lcd.clear(); lcd.setCursor(0, 0); // тобиш на монитор с этих датчиков выдаёт чётко 25.60 // а на дисплей какуюто фигню. lcd.print(int(Thermometer1));//вместо 25 выводит 280 // lcd.print(float(Thermometer1,DEC));//вместо 25 выводит 280 lcd.print(" T1-"); lcd.print(tempC);//вместо 25 выводит 280 delay (5000); lcd.setCursor(0, 1); // тобиш на монитор с этих датчиков выдаёт чётко 25.60 // а на дисплей какуюто фигню. lcd.print(int(Thermometer2));//вместо 25 выводит 272 lcd.print(" T2-"); lcd.print(tempC);//вместо 25 выводит 280 delay (5000); lcd.clear(); lcd.setCursor(0, 0); // тобиш на монитор с этих датчиков выдаёт чётко 25.60 // а на дисплей какуюто фигню. lcd.print(int(Thermometer3));//вместо 25 выводит 280 lcd.print(" T3-"); lcd.print(tempC);//вместо 25 выводит 264 delay (5000); lcd.setCursor(0, 1); // тобиш на монитор с этих датчиков выдаёт чётко 25.60 // а на дисплей какуюто фигню. lcd.print(int(Thermometer4));//вместо 25 выводит 256 lcd.print(" T4-"); lcd.print(tempC);//вместо 25 выводит 280 // я подозреваю что Thermometer1 -Thermometer4 выводит адреса датчиков а не температуру delay (5000); // lcd.print(sensorss); goto start; //////////////////////////////////////////// //lcd.print(int(tempC)); // если надо выводить знаки после запятой - убери инт и скобки вокруг переменной lcd.print(" T2-"); lcd.print(int(Thermometer2));//вместо 25 выводит 272 lcd.setCursor(0, 1); lcd.print(" T3-");//вместо 25 выводит 264 lcd.print(int(Thermometer3)); // если надо выводить знаки после запятой - убери инт и скобки вокруг переменной lcd.print(" T4-"); lcd.print(int(Thermometer4));//вместо 25 выводит 256 // lcd.println (T1);// не фурычит // lcd.println (Thermometer1);// не фурычит // printTemperature(Thermometer1); }Хосподи, вы это специально? Издеваетесь?
Допишите вы в своем первом коде между 49 и 50 строками еще одну: lcd.print (tempC);
Может это на размышления наведет.
выб мне как говоритца прям в пример ткнули куда какой кирпич положить,
Я это говорю ТРЕТИЙ раз. Вы игнорируете, а потом заявляете, что Вам не помогают.
Чего из того, что я написал Вы не можете сделать? Три строчки скопипастить? Или ещё чего?
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 9 // датчик подключен к пин 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensorss(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0x7E, 0x7B, 0xB9, 0x05, 0x00, 0x00, 0xBF}; // 3точки DeviceAddress Thermometer2 = { 0x28, 0xE9, 0x46, 0xB9, 0x05, 0x00, 0x00, 0xE3 }; // 2точки DeviceAddress Thermometer3 = { 0x28, 0x45, 0xC3, 0xB8, 0x05, 0x00, 0x00, 0x54 }; // 1точки DeviceAddress Thermometer4 = { 0x28, 0x9A, 0xD4, 0xB9, 0x05, 0x00, 0x00, 0x16 }; // синий #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd lcd.init(); lcd.backlight(); sensorss.begin(); sensorss.setResolution(Thermometer1, 10); sensorss.setResolution(Thermometer2, 10); sensorss.setResolution(Thermometer3, 10); sensorss.setResolution(Thermometer4, 10); Serial.begin(9600); } float tempC; // Serial.lcd.println(printTemperature);//не компилируетца void printTemperature(DeviceAddress deviceAddress) { //void lcd.printTemperature(DeviceAddress deviceAddress) { //void printTemperature(DeviceAddress deviceAddress) { // float tempC = sensorss.getTempC(deviceAddress); tempC = sensorss.getTempC(deviceAddress); Serial.println(tempC); // Serial.lcd.println(tempC);// не компилируетца // Serial.lcd.print(Temepature); lcd.print(tempC); } ///////////////////// void loop() { start: sensorss.requestTemperatures(); lcd.print(tempC); // lcd.print Temperature(Thermometer1); printTemperature(Thermometer1); // print("T1"); // lcd.print(Thermometer1);// ошибка компиляции printTemperature(Thermometer2); // printTemperature(Thermometer3); // printTemperature(Thermometer4); // Serial.print("T1 "); lcd.print (tempC); lcd.clear(); lcd.setCursor(0, 0); // тобиш на монитор с этих датчиков выдаёт чётко 25.60 // а на дисплей какуюто фигню. lcd.print (tempC); lcd.print(int(Thermometer1));//вместо 25 выводит 280 // lcd.print(float(Thermometer1,DEC));//вместо 25 выводит 280 lcd.print(" T1-"); lcd.print(tempC);//все датчики показывают одну и туже температуру, delay (5000); lcd.setCursor(0, 1); // тобиш на монитор с этих датчиков выдаёт чётко 25.60 // а на дисплей какуюто фигню. lcd.print(int(Thermometer2));//вместо 25 выводит 272 lcd.print(" T2-"); lcd.print(tempC);//все датчики показывают одну и туже температуру, delay (5000); lcd.clear(); //все датчики показывают одну и туже температуру, // я подозреваю что Thermometer1 -Thermometer4 выводит адреса датчиков а не температуру //выводитца адрес датчика( что мне как то фиолетово // выводитца номер датчика, (Т1....) ну это я научился делать ))) // и теперечи выводитца одна и таже температура на всех датчиках, // грею один меняетца на всех,это когда выводитца на дисплей, //на мониторе отображаетца коректно, все датчики разную температуру, // уххх и почему меня посещяет мысль что я такой невнимательный? ) delay (5000); // lcd.print(sensorss); goto start; }Витек, бросьте вы это дело, дом взорвете(((. Евгений вам предложил продублировать функцию, я предложил поиграть с той, что есть, но в варианте вашего первого кода. Вы не делаете ни того ни другого. Последний вариант, это видения напившегося наркомана, после дозы. Причем с каждым новым релизом вы его улучшаете, придумываете новый формат команд "lcd.print(int(Thermometer2));", зачем то приплели "go to start", нигде не указав метку куда перейти и т.п.
Нетрудно написать за вас этот кусок, но дальше вас ждут исполнительные команды, а главное "меню". Либо вы поймете сами, как это делать, либо сразу в "ищу исполнителя". Давайте попробуем еще раз:
Мой вариант - берете код из вашего первого поста, после строки 49 добавляете lcd.print (tempC);
после строк 60, 62, 64 добавляете ваши 54 и 55, не забывая перемещать курсор в нужные позиции и менять нумерацию температуры. Компилируем, температура выводится в сериале и дублируется на дисплее.
Вариант Евгения - берете код из первого поста, копируете строки с 47 по 50 и вставляете после 50. В скопированном коде меняете void printTemperature на void printTemperature1 а Serial.println (tempC); на lcd.print (tempC);.
После 55 строки вставляете printTemperature1(Thermometer1); после 60, 62, 64 дублируете ваши 54, 55 и вновь вставленную, правите в них позицию курсора, нумерацию температуры и номер датчика. Все.
В моем варианте у вас получилась одна функция printTemperature выводящая значение температуры в сериал и на дисплей. В варианте Евгения вы получили две функции - printTemperature и printTemperature1 первая выводит в сериал, вторая на lcd.
Вся нумерация строк по коду из первого поста, без учета вновь вставленных
Если и сейчас не поняли, читаем первое предложение.
Витёк,
Что печатает 42-ая строка? Надеюсь, то же самое, что и 39-ая?
Похоже, Вы пишете в код что попало, методом тыка, и никакая наша помощь Вам не помогает потому, что у Вас не хватает знаний понять, что Вам говорят.
Поэтому, единственный способ Вам помочь, такой: сейчас Вы:
1. Берёте книгу http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf
2. Читаете её, разбирая все примеры.
3. Читаете ещё раз, вколачивая примеры в компьютер и убеждаясь, что они работают так, как Вы ожидаете.
4. Только после этого (это займёт с неделю) возвращаетесь к своему скетчу и спокойно его дожимаете без посторонней помощи.
А даже если помощь и потребуется, Вы, по краней мере, будете понимать что Вам говорят, и не будете пихать в код произвольные наборы букв в надежде, что хоть как-то заработает.
Удачи!
ЕвгенийП, мне кажется, что вы горячитесь, рекомендуя Ритча начинающим. Я его читаю с удовольствием, но попади он мне первым, боюсь были бы проблемы. Книга заточена под язык, а Ардуино IDE все таки его обрезает. Для начального уровня я рекомендовал бы - Уилли Соммера "Программирование микроконтроллерных плат Arduino/Freeduino", освоив ее уже можно браться за Ритча. ИМХО.
bwn, ну, на вкус и цвет. Мне эта книга нравится своей систематичностью. Там описано всё и при этом всё увязано между собой в некую логику, потому появляются не только знания, но и "чуство языка", позволяющее интуитивно написать правильно, даже если забыл конкретные знания. Я своим студентам всегда рекоммендую её, а следом Страуструпа.
Кстати, а что там обрезано? Вроде, кроме того, что некоторые библиотеки сокращены (типа, нет плавающей точки в форматах printf) сам то язык вполне себе полный (он и не может быть неполным, т.к. в итоге вызывается штатный gcc). Что меня бесит в IDE - это их "упрощение" с include'ами. Какие-то сами вставляются, какие-то пишешь в "", располагаешь в той же директории, ан хрен там. Нахрена было "упрощать" и толком не документировать? Никогда не могу понять их логику.
ЕвгенийП, вы программист и многие вещи уже воспринимаете как данность. Если неофит возьмет самый первый пример и попробует использовать в Ардуино IDE, боюсь у него ничего не выйдет:
"Си-программа, печатающая "здравствуй, мир", выглядит так:
#include <stdio.h>
main()
{
printf ("здравствуй, мир\n");
}
Как запустить эту программу, зависит от системы, которую вы используете. Так, в операционной системе UNIX
необходимо сформировать исходную программу в файле с именем, заканчивающимся символами ".c",
например, в файле hello.c, который затем компилируется с помощью команды
CC hello.с"
Из этого и заключаю, что данная книга для более высокой лиги. У Соммера все сделано под Ардуино и на детском уровне. Поняв, что происходит у него, Ритча уже будешь воспринимать совершенно правильно. Я его нашел по Вашей ссылке и очень Вам благодарен, ибо у самого знания в программировании были на уровне самоучителя Синклер Бейсика, да с 20 летним перерывом. Поэтому говорю именно с позиции неофита.
При том, что если бы функция возвращала в переменной данные от термометра - то потом было бы почти все равно: куда их выводить. Т.е., каждая маленькая функция должна быть универсальна, как молоток.
Плодить фактически дублирующие друг друга функции - имеет смысл только если Вам платят за количество строчек кода. :) Да, а потом Вы будете объяснять новичку - почему плохо каждый цикл дважды опрашивать DS18B20.
Андрей, здесь человек просто тупит откровенно, какая уж оптимизация функций.
Андрей, человек не может скопипастить функцию, а Вы про какую-то универсальность. Я уже сдался с ним работать. Попробуйте, может у Вас получится :)
Просто человек не ориентируется ни в типах данных, ни в массивах... Ему бы все это упростить до:
void loop() {
tempC =
sensorss.getTempC(deviceAddress);....
Serial.print(tempC);
}
А заодно, не знает что такое функция, что такое её вызов и пишет Serial.lcd.print
Нет, ему бы не упростить, а почитать хорошую книжку, что я ему и посоветовал.
Любая другая помощь - просто написать за него. Но это поможет ровно до того момента, как ему снова понадобится что-то вывести (например, к температуре добавить время замера) - опять придётся за него писать.
Ему же самому приятнее будет прочитать, разобраться и делать такие простые вещи самостоятельно.
Ему в итоге и предложили почитать "Буквари", а после уже "Войну и мир" писать.))))
ну ладно не сердитесь, я всё понял, нашёл где лего невставлялось, ну да не с первого раза понял, и не со второго, даже не с третьего, но понял же ))))), яж говорил на примерах оно легче чем на пальцах, спасибо за ваше терпение, буду дальше писать, отталкиваясь от первого примера, тама дальше как было упомянута будет менюшка для уставок заданых температур и регулировка нагревателей на кждый датчик, на энное время покину вас пока не набирутца новые затыки, попожее напишу что получитца с шедевром ))
буду дальше писать, отталкиваясь от первого примера
Сначала книжку почитать! А не то очень быстро
набирутца новые затыки
просто сразу же, при первой попытке!
Лучше возвращайтесь не с новыми затыками, а с новыми знаниями.
И не берите первый код за ядро вашего термостата, плохо получится.
Когда будете готовы писать, нарисуйте блок-схему вашей программы, далее подробные алгоритмы для каждого блока.
Когда сумеете расписать алгоритмы, можете сказать себе "я готов попробовать воплотить это в код"
Как то так.