Как заставить дисплей 1602 мигать при превышении температуры?

valek101
Offline
Зарегистрирован: 06.06.2018

Собственно есть скетч для кого то он очень простой но не для меня нубика:-)

Вопрос впринципе в названии темы как заставить дисплей 1602 подключеный по I2C мигать при привышении определенной температуры?

Если вам не сложно просто поменяйте мой скетч чтоб я смог залить его и использовать, я к сожалению пока плохо понимаю в програмировнии ардуинки и только учусь:-(

Моя задача измерять температуру масла в двигателе и часть по железу я вполне осилил а вот с кодом проблема:-(

/* 
Тестировалось на Arduino IDE 1.6.12
Дата тестирования 23.12.2016г.
*/ 
 
#include <Wire.h>                           // Подключаем библиотеку Wire
//#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
#include <DallasTemperature.h>  // Подключаем библиотеку DallasTempature
#include "LCD_1602_RUS.h"

#define DS18B20 2                           // Указываем, к какому выводу подключена DQ

byte simvol[8]   = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса

LCD_1602_RUS lcd(0x27,16,2);           // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);                   
DallasTemperature sensors(&oneWire);
 
void setup()
{
  sensors.begin();                           // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса 
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  lcd.setCursor(1,0);                        // Устанавливаем курсор на 1 строку, ячейка 2
  lcd.print("МАСЛО");                         // Выводим текст
  lcd.setCursor(4,1);                        // Устанавливаем курсор на 2 строку, ячейка 2 
  lcd.print("TEMP OIL");                 // Выводим текст
}
void loop()
{
  lcd.createChar(1, simvol);                  // Создаем символ под номером 1
  sensors.requestTemperatures();              // Считываем показания температуры 
  lcd.setCursor(7,0);                         // Устанавливаем курсор на 1 строку, ячейка 7 
  lcd.print(sensors.getTempCByIndex(0));      // Выводим показания температуры
  lcd.setCursor(12,0);                        // Устанавливаем курсор на 1 строку, ячейка 12  
  lcd.print("\1");                            // Выводим символ градуса
  lcd.setCursor(13,0);                        // Устанавливаем курсор на 1 строку, ячейка 13 
  lcd.print("C");                             // Выводим текст 
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Шантажируй, угрожай, бей, в конце концов.  Он поймёт. 

valek101
Offline
Зарегистрирован: 06.06.2018

DetSimen пишет:

Шантажируй, угрожай, бей, в конце концов.  Он поймёт. 

Я один дисплей как раз забил почти до смерти припаивая к нему I2C конвертер так что даже дорожка отошла от платы:-) Ну да вот такой я криворукий в плане пайки:-))) Пришлось с бегать в магазин за готовым решением с уже припаянным I2C конвертором, и максимум на что меня хватило это добавить библиотеку поддержки (кривой поддержки) русского языка. Это мой дисплей наконец то понял:-)))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Видно тяжелый случай . Нужна Просветляющая лопата. http://foruma.su/?sub=9192

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

qwone пишет:

Видно тяжелый случай . Нужна Просветляющая лопата. http://foruma.su/?sub=9192

Спасибо, жизненно, до слез.

valek101
Offline
Зарегистрирован: 06.06.2018

qwone пишет:

Видно тяжелый случай . Нужна Просветляющая лопата. http://foruma.su/?sub=9192

Спасибо классная лопата, очень надеюсь что вы еще не раз перечитаете это замечательное произведение когда будете задавать вопросы по интересующей вас теме в которой вы пока что не разбираетесь:-)  

p.s. Судя по полезным советам тут ребята сами учились ходить, читать, писать после рождения и ни кто им в этом не помогал а только лишь им говорили иди учи мат. часть. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Здешние ребята, когда учились ходить, ноги переставляли сами, а не просили маму с папой помочь в этом. И родители не водили за них рукой по бумаге, когда учили писать. 

Хотите мигать дисплеем? Не вопрос. Поищите "blink без delay", почитайте и помигайте светодиодом на D13 при превышении температуры. Как справитесь - поможем с подсветкой дисплея.

ToRcH2565
Offline
Зарегистрирован: 16.05.2015

valek101 пишет:

p.s. Судя по полезным советам тут ребята сами учились ходить, читать, писать после рождения и ни кто им в этом не помогал а только лишь им говорили иди учи мат. часть. 

Вы не поверите, но 99% тех ребят что действительно разбираются - учились САМИ. 

Кто то книги читал, кто то даташити, кто то исходые коды чужих программ, но делали это САМИ, и не ходили к соседу чтобы тот сделал за НЕГО.... =)

В данный момент что видно из вашего сообщения:

1) Вы спиздили гдето кусок кода, в котором вы не понимаете ни единой строки.

2) Вам лень учится, или желания нет или еще что, но вы не пытаетесь учится.

 

valek101 пишет:
Если вам не сложно просто поменяйте мой скетч чтоб я смог залить его и использовать

valek101 пишет:
я к сожалению пока плохо понимаю в програмировнии ардуинки и только учусь

Лож и снова лож.

ибо:

http://arduino.ru/forum/proekty/dva-datchika-ds18b20-i-vyvod-na-lcd#comm...

Ничего не напоминает?

valek101 пишет:
Моя задача измерять температуру масла в двигателе и часть по железу я вполне осилил а вот с кодом проблема

Такие задачи озвучивают в ином разделе : http://arduino.ru/forumy/ishchu-ispolnitelya

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

valek101 пишет:

Как заставить дисплей 1602 мигать при превышении температуры?

Добрым словом и пистолетом.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

valek101 пишет:

Вопрос впринципе в названии темы как заставить дисплей 1602 подключеный по I2C мигать при привышении определенной температуры?

А что Вы подразумеваете под словом "мигать"?  

valek101
Offline
Зарегистрирован: 06.06.2018

andriano пишет:

valek101 пишет:

Вопрос впринципе в названии темы как заставить дисплей 1602 подключеный по I2C мигать при привышении определенной температуры?

А что Вы подразумеваете под словом "мигать"?  

Подсведку включать выключаться интервалом например 1 секунда, так скажем для привлечения внимания.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

То есть мигать не экраном, а подсветкой?

Ну тогда Вы сами предложили решение - включать и выключать подсветку с интервалом 1 секунда. 

Но мне кажется, секунда - многовато. Я бы отвел на одну фазу 100-250 мс.

valek101
Offline
Зарегистрирован: 06.06.2018

andriano пишет:

То есть мигать не экраном, а подсветкой?

Ну тогда Вы сами предложили решение - включать и выключать подсветку с интервалом 1 секунда. 

Но мне кажется, секунда - многовато. Я бы отвел на одну фазу 100-250 мс.

Да подсветкой:-) Да и интервал это не то что меня волнует, интервал то поменять не сложно. Для меня сложно понять как правильно написать скетч, точнее дополнить тут скетч что уже есть, в програмированни я почти ноль пытаясь методом тыка изучить этот вопрос но как то плохо выходит. Я понимаю конечно что нужно учить языки програмирования и безусловно стремлюсь к этому. Но вот мне конкретно к выходным надо поставить датчик температуры масла на мот (поскольку производитель зараза не предусмотрел измерение температуры в стоке)

А ребята форумчане тапками закидали вместо того чтоб помочь поправить скетч, обидно однако:-(

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

valek101, если Вы хотите научиться, здесь Вам помогут, а если Вам нужен готовый скетч - то Вы ошиблись разделом, нужно - в "Ищу исполнителя".

Efim
Offline
Зарегистрирован: 04.05.2018

Не обратил внимание что дисплей по I2C, нужно смотреть как подключена подсветка.

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

К какому пину подключена подсветка?

Дисплей подключен по I2c интерфейсу так что затрудняюсь сказать к какому пину. Но на Конверторе I2C есть джампер при размыкании которого подсветка выключаеться, соответственно я могу на любой пин бросить провода с контактов джампера. Уверен что это вообще не правильное решение и в меня опять сейчас тапками будут бросать, так что я зарание спрятался под столом:-)

Efim
Offline
Зарегистрирован: 04.05.2018

Попробуйте заменить lcd.backlight(); на lcd.noBacklight(); и посмотрите будет ли гореть подсветка у дисплея.

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

valek101, проблема не создании мигания, проблема научить вас более "перспективному стилю" понимать и писать программы.

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

Попробуйте заменить lcd.backlight(); на lcd.noBacklight(); и посмотрите будет ли гореть подсветка у дисплея.

 

Нет не горит

Efim
Offline
Зарегистрирован: 04.05.2018

valek101 пишет:

Нет не горит

Вот и отлично! Осталось только дописать в коде условие по которому он будет гаснуть и загораться.

Опишите при каких значениях это должно происходить?

valek101
Offline
Зарегистрирован: 06.06.2018

qwone пишет:

valek101, проблема не создании мигания, проблема научить вас более "перспективному стилю" понимать и писать программы.

Я безусловно это понимаю, и конечно же это и будет моей целью, Я с arduino познакомился буквально месяц назад и начинаю изучать этот вопрос и конечно же результаты будут но позже, железом для ардуинки я уже закупился и уже понял что мне необходимо еще. И вот я на стадии начала понимания и не куда я не спешу, изучая по мере моих сил что это вообще такое ардуино:-)  

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

valek101 пишет:

Нет не горит

Вот и отлично! Осталось только дописать в коде условие по которому он будет гаснуть и загораться.

Опишите при каких значениях это должно происходить?

Условия простые при привышении температуры в 120 градусов начинать нервно мигать при температуре ниже 120 градусов просто гореть. Там конечно хочеться чтоб при других порогах температуры мигал например реже или чаще, но это я потом и сам додумаю как реализовать покопавшись дальше в скетче.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

valek101 пишет:

 И вот я на стадии начала понимания и не куда я не спешу, изучая по мере моих сил что это вообще такое ардуино:-)  

Это просто для еще одной стороны понимания что такое ардуино.http://arduino.ru/forum/programmirovanie/klassy-arduino-po-qwone-dlya-chainikov

valek101
Offline
Зарегистрирован: 06.06.2018

b707 пишет:

черезчур академично. Новички ничего не поймут, а кто разбирается - умрут со скуки.

Кстати, теоретически ваши ссылочные классы таят в себе потенциальные проблемы... вот почитайте

http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/NOTES/CLASSES-PTRS.html

Поддержу пользователя b707 Я сейчас нифига не понял, а через пол года возможно буду умирать от скуки:-) (но это только возможно ведь в данный момент мне не понять)

valek101
Offline
Зарегистрирован: 06.06.2018

У нас в русском языке не всегда все очевидно, про языки програмирования я вообше молчу:-)

Вот как то так

Перед нами стол. На столе стакан и вилка. Что они делают? Стакан стоит, а вилка лежит. Если мы воткнем вилку в столешницу, вилка будет стоять. Т. е. стоят вертикальные предметы, а лежат горизонтальные? Добавляем на стол тарелку и сковороду. Они вроде как горизонтальные, но на столе стоят. Теперь положим тарелку в сковородку. Там она лежит, а ведь на столе стояла. Может быть, стоят предметы готовые к использованию? Нет, вилка-то готова была, когда лежала. Теперь на стол залезает кошка. Она может стоять, сидеть и лежать. Если в плане стояния и лежания она как-то лезет в логику «вертикальный-горизонтальный», то сидение — это новое свойство. Сидит она на попе. Теперь на стол села птичка. Она на столе сидит, но сидит на ногах, а не на попе. Хотя вроде бы должна стоять. Но стоять она не может вовсе. Но если мы убьём бедную птичку и сделаем чучело, оно будет на столе стоять. Может показаться, что сидение — атрибут живого, но сапог на ноге тоже сидит, хотя он не живой и не имеет попы. Так что, поди пойми, что стоит, что лежит, а что сидит.

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

valek101 пишет:
У нас в русском языке не всегда все очевидно, про языки програмирования я вообше молчу:-)
В любом языке подобные прибабахи, и в английском тоже. Так что грешить на русский не надо.  Да в Си прибабахов мало. Прибабахи они от тех кто пытается лезть в программирование, не изучив язык. Так что удачи в вашем мигании.

Efim
Offline
Зарегистрирован: 04.05.2018

Пробуйте до тела Setup дописать:

boolean x=true;

unsigned long time;

в теле setup

time = millis();

в теле loop следующее

if ((millis()-time>=250)&&(sensors.getTempCByIndex(0)>=35))

{

x=!x;

lcd.backlight(x);

time = millis();

}

else if (sensors.getTempCByIndex(0)<35)

{

lcd.backlight();

x=true;

}

Или так в теле loop если первый варинт не заработает

if ((millis()-time>=250)&&(sensors.getTempCByIndex(0)>=35))

{

x=!x;

if (x)
{
lcd.backlight();

time = millis();
} else
{
lcd.noBacklight();

time = millis();
}



}

else if (sensors.getTempCByIndex(0)<35)

{

lcd.backlight();

x=true;

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

valek101 пишет:

У нас в русском языке не всегда все очевидно, про языки програмирования я вообше молчу:-)

Напрасно. Ественные языки - да, "естественно". А вот языки программирования - они строго формализованы. Там всё однозначно и никаких непоняток не возникает.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

 А вот языки программирования - они строго формализованы. Там всё однозначно и никаких непоняток не возникает.

При всём к Вам безграничном уважении, я бы не стал так утверждать, имея ввиду С++ синтаксис, где одна и та же звездочка, например, означает 4 разных операции в разном контексте.  Однозначно там только для того, кто этим занимается десятки лет без перерыва. :)   Для новичков - это попа. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нет, ну я не о новичках, а о том, что синтаксис формального языка жёстко описан и формализован при помощи формальных грамматик и никаких неоднозначностей там нет и быть не может. Это ведь так, правильно? Ну, а то, что это всё надо знать (а не "вчера скачал скетч, поменял, а он компилироваться перестал"), это, разумеется, никто не отменял.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Согласен.  

Но для меня С++ по прежнему это танцы на граблях с завязанными глазами.  Хотя Страутрупный Коран читаю и перечитываю постоянно. :)  

Видимо, последний IQ пропил. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

DetSimen пишет:
Но для меня С++ по прежнему это танцы на граблях с завязанными глазами.  Хотя Страутрупный Коран читаю и перечитываю постоянно. :) 
Я же повторю , прибабахов в Си/Си++ нет, все прибабахи от людей. Когда пишутся большие программы, то вводятся новые элементы языка. Те же функции, типы, структуры, классы. Опять же можно сказать, что многие устоявшие введеные в язык элементы, на деле ядром языка Си не являются. digitalRead(),digitalWrite() - это не элементы языка Си, а элементы подключаемой библиотеки. И если в Си отключить все подключаемые библиотеки, то этот остаток и будет ядро Си, который и будет строго формализован и без всяких прибабахов. Так что танцуете на граблях оставленых уже в подключаемых библиотеках, которые вы или не очень знаете или бывает написаны немного не так как надо вам.

Efim
Offline
Зарегистрирован: 04.05.2018

Ну что заработало или нет? 

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

Ну что заработало или нет? 

Нет к сожалению, при компиляции выдает ошибку

exit status 1
'x' does not name a type
 
x=!x; // Вот на этой строчки кода застревает компиляция.
 
 

 

Efim
Offline
Зарегистрирован: 04.05.2018

Да тяжелый случай, еще раз внимательно перечитайте сообщение с листингом программы.

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

Да тяжелый случай, еще раз внимательно перечитайте сообщение с листингом программы.

Вот по этому и сижу молчу ничего больше не спрашиваю, поскольку у меня не тяжелый, у меня клинический случай:-)

Efim
Offline
Зарегистрирован: 04.05.2018
 
boolean x=true;
 
unsigned long time;
В самом начале программы добавте
valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

 
boolean x=true;
 
unsigned long time;
В самом начале программы добавте

Так я вроде как добавил

/* 
Тестировалось на Arduino IDE 1.6.12
Дата тестирования 23.12.2016г.
*/ 
 
#include <Wire.h>                           // Подключаем библиотеку Wire
#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
#include <DallasTemperature.h>  // Подключаем библиотеку DallasTempature
#include "LCD_1602_RUS.h"

#define DS18B20 2                           // Указываем, к какому выводу подключена DQ

byte simvol[8]   = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса

LCD_1602_RUS lcd(0x27,16,2);           // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);                   
DallasTemperature sensors(&oneWire);
boolean x=true;
unsigned long time;
void setup()
{
  time = millis();

  sensors.begin();                           // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса 
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  lcd.setCursor(1,0);                        // Устанавливаем курсор на 1 строку, ячейка 2
  lcd.print("МАСЛО");                         // Выводим текст
  lcd.setCursor(4,1);                        // Устанавливаем курсор на 2 строку, ячейка 2 
  lcd.print("");                 // Выводим текст
}
void loop()
{
  if ((millis()-time>=250)&&(sensors.getTempCByIndex(0)>=35))

  lcd.createChar(1, simvol);                  // Создаем символ под номером 1
  sensors.requestTemperatures();              // Считываем показания температуры 
  lcd.setCursor(7,0);                         // Устанавливаем курсор на 1 строку, ячейка 7 
  lcd.print(sensors.getTempCByIndex(0));      // Выводим показания температуры
  lcd.setCursor(12,0);                        // Устанавливаем курсор на 1 строку, ячейка 12  
  lcd.print("\1");                            // Выводим символ градуса
  lcd.setCursor(13,0);                        // Устанавливаем курсор на 1 строку, ячейка 13 
  lcd.print("C");                             // Выводим текст 
}

x=!x;

if (x)
{
lcd.backlight();

time = millis();
} else
{
lcd.noBacklight();

time = millis();
}



}

else if (sensors.getTempCByIndex(0)<35)

{

lcd.backlight();

x=true;

}

 

Efim
Offline
Зарегистрирован: 04.05.2018

facepalm

Efim
Offline
Зарегистрирован: 04.05.2018

ща перепешу 

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

ща перепешу 

Я знаю что я полный олень, мне проще разобрать и собрать двигатель чем прочитав скетч понять его хоть на 25% процентов. В этом сейчас моя проблема и состоит.

Efim
Offline
Зарегистрирован: 04.05.2018
/* 
Тестировалось на Arduino IDE 1.6.12
Дата тестирования 23.12.2016г.
*/ 
 
#include <Wire.h>                           // Подключаем библиотеку Wire
//#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
#include <DallasTemperature.h>  // Подключаем библиотеку DallasTempature
#include "LCD_1602_RUS.h"

#define DS18B20 2                           // Указываем, к какому выводу подключена DQ

byte simvol[8]   = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса

LCD_1602_RUS lcd(0x27,16,2);           // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);                   
DallasTemperature sensors(&oneWire);
boolean x=true;
unsigned long time;
 
void setup()
{
  sensors.begin();                           // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса 
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  lcd.setCursor(1,0);                        // Устанавливаем курсор на 1 строку, ячейка 2
  lcd.print("МАСЛО");                         // Выводим текст
  lcd.setCursor(4,1);                        // Устанавливаем курсор на 2 строку, ячейка 2 
  lcd.print("TEMP OIL");                 // Выводим текст
  time = millis();
}
void loop()
{
  lcd.createChar(1, simvol);                  // Создаем символ под номером 1
  sensors.requestTemperatures();              // Считываем показания температуры 
  lcd.setCursor(7,0);                         // Устанавливаем курсор на 1 строку, ячейка 7 
  lcd.print(sensors.getTempCByIndex(0));      // Выводим показания температуры
  lcd.setCursor(12,0);                        // Устанавливаем курсор на 1 строку, ячейка 12  
  lcd.print("\1");                            // Выводим символ градуса
  lcd.setCursor(13,0);                        // Устанавливаем курсор на 1 строку, ячейка 13 
  lcd.print("C");                             // Выводим текст
  if ((millis()-time>=250)&&(sensors.getTempCByIndex(0)>=35))
  {
      x=!x;
      if (x)
      {
        lcd.backlight();
        time = millis();
       } else
      {
       lcd.noBacklight();
       time = millis();
       }
  }
   else if (sensors.getTempCByIndex(0)<35)
   {
    lcd.backlight();
    x=true;
   }
}

 

Efim
Offline
Зарегистрирован: 04.05.2018

Ну?

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

Пробуй

Вот блин какая красота:-) Все работает поклон вам большой:-)

Вот тперь могу со спокойной душой сидеть и смотреть в ваш рабочий скетч, радоваться тому что в пятницу поставлю это дело на мотик:-)   

Efim
Offline
Зарегистрирован: 04.05.2018

При какой температуре срабатывает?

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

При какой температуре срабатывает?

35:-) сейчас махну на 120

Efim
Offline
Зарегистрирован: 04.05.2018

Нука махни и код выложи)

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

Нука махни и код выложи)

Не ну циверки то с 35 на 120 поменять в двух местах ума не надо:-)

Фейл, на 105 градусах у зажигалки которой нагревал датчик вылетел кремень вместе с пружиной нафиг:-)

Я руки в ноги побежал в магаз за новой зажигалкой:-))))

/* 
Тестировалось на Arduino IDE 1.6.12
Дата тестирования 23.12.2016г.
*/ 
 
#include <Wire.h>                           // Подключаем библиотеку Wire
//#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
#include <DallasTemperature.h>  // Подключаем библиотеку DallasTempature
#include "LCD_1602_RUS.h"

#define DS18B20 2                           // Указываем, к какому выводу подключена DQ

byte simvol[8]   = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса

LCD_1602_RUS lcd(0x27,16,2);           // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);                   
DallasTemperature sensors(&oneWire);
boolean x=true;
unsigned long time;
 
void setup()
{
  sensors.begin();                           // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса 
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  lcd.setCursor(1,0);                        // Устанавливаем курсор на 1 строку, ячейка 2
  lcd.print("МАСЛО");                         // Выводим текст
  lcd.setCursor(4,1);                        // Устанавливаем курсор на 2 строку, ячейка 2 
  lcd.print("TEMP OIL");                 // Выводим текст
  time = millis();
}
void loop()
{
  lcd.createChar(1, simvol);                  // Создаем символ под номером 1
  sensors.requestTemperatures();              // Считываем показания температуры 
  lcd.setCursor(7,0);                         // Устанавливаем курсор на 1 строку, ячейка 7 
  lcd.print(sensors.getTempCByIndex(0));      // Выводим показания температуры
  lcd.setCursor(12,0);                        // Устанавливаем курсор на 1 строку, ячейка 12  
  lcd.print("\1");                            // Выводим символ градуса
  lcd.setCursor(13,0);                        // Устанавливаем курсор на 1 строку, ячейка 13 
  lcd.print("C");                             // Выводим текст
  if ((millis()-time>=250)&&(sensors.getTempCByIndex(0)>=120))
  {
      x=!x;
      if (x)
      {
        lcd.backlight();
        time = millis();
       } else
      {
       lcd.noBacklight();
       time = millis();
       }
  }
   else if (sensors.getTempCByIndex(0)<120)
   {
    lcd.backlight();
    x=true;
   }
}

 

valek101
Offline
Зарегистрирован: 06.06.2018

valek101 пишет:

Efim пишет:

Нука махни и код выложи)

Не ну циверки то с 35 на 120 поменять в двух местах ума не надо:-)

Фейл, на 105 градусах у зажигалки которой нагревал датчик вылетел кремень вместе с пружиной нафиг:-)

Я руки в ноги побежал в магаз за новой зажигалкой:-))))

/* 
Тестировалось на Arduino IDE 1.6.12
Дата тестирования 23.12.2016г.
*/ 
 
#include <Wire.h>                           // Подключаем библиотеку Wire
//#include <LiquidCrystal_I2C.h>              // Подключаем библиотеку LiquidCrystal_I2C 
#include <DallasTemperature.h>  // Подключаем библиотеку DallasTempature
#include "LCD_1602_RUS.h"

#define DS18B20 2                           // Указываем, к какому выводу подключена DQ

byte simvol[8]   = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса

LCD_1602_RUS lcd(0x27,16,2);           // Задаем адрес и размер дисплея
OneWire oneWire(DS18B20);                   
DallasTemperature sensors(&oneWire);
boolean x=true;
unsigned long time;
 
void setup()
{
  sensors.begin();                           // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса 
  lcd.init();                                // Инициализация lcd    
  lcd.backlight();                           // Включаем подсветку
  lcd.setCursor(1,0);                        // Устанавливаем курсор на 1 строку, ячейка 2
  lcd.print("МАСЛО");                         // Выводим текст
  lcd.setCursor(4,1);                        // Устанавливаем курсор на 2 строку, ячейка 2 
  lcd.print("TEMP OIL");                 // Выводим текст
  time = millis();
}
void loop()
{
  lcd.createChar(1, simvol);                  // Создаем символ под номером 1
  sensors.requestTemperatures();              // Считываем показания температуры 
  lcd.setCursor(7,0);                         // Устанавливаем курсор на 1 строку, ячейка 7 
  lcd.print(sensors.getTempCByIndex(0));      // Выводим показания температуры
  lcd.setCursor(12,0);                        // Устанавливаем курсор на 1 строку, ячейка 12  
  lcd.print("\1");                            // Выводим символ градуса
  lcd.setCursor(13,0);                        // Устанавливаем курсор на 1 строку, ячейка 13 
  lcd.print("C");                             // Выводим текст
  if ((millis()-time>=250)&&(sensors.getTempCByIndex(0)>=120))
  {
      x=!x;
      if (x)
      {
        lcd.backlight();
        time = millis();
       } else
      {
       lcd.noBacklight();
       time = millis();
       }
  }
   else if (sensors.getTempCByIndex(0)<120)
   {
    lcd.backlight();
    x=true;
   }
}

 

Но все работает, спасибо я побежал за новым крикетом:-)))
Efim
Offline
Зарегистрирован: 04.05.2018

Домашнее задание прочитать про все что я дописал в коде и описать весь процесс обычными словами).

valek101
Offline
Зарегистрирован: 06.06.2018

Efim пишет:

Домашнее задание прочитать про все что я дописал в коде и описать весь процесс обычными словами).

Окей этим я и займусь:-) Тогда риторический вопрос, каким текстовым редактором с подсветкой синтаксиса народ пользуеться чтоб не писать прямо в Arduino IDE ?  Мой Notepad ++ что то нифига не подсвечивает зараза:-(

Понятно конечно что каждому свое, но наверняка есть что то что использует большинство:-)