помогите пожайлусто перевести на i2c lcd
- Войдите на сайт для отправки комментариев
Чт, 09/08/2018 - 13:35
/*
9 - КОНТРАСТ НА Vo
10 - DS18B20
13 - реле
A0 - кнопка вверх
A1 - кнопка select
A2 - кнопка вниз
дисплей
12 - RS
11 - E
9 - КОНТРАСТ НА Vo
2 - DB7
3 - DB6
4 - DB5
5 - DB4
GND - K
GND - R\W
GND - Vss
Vcc - Vdd
Vcc - 510 Om - A
*/
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>
#include <LiquidCrystal_1602_RUS.h>
LiquidCrystal_1602_RUS lcd(12, 11, 5, 4, 3, 2);
#define ONE_WIRE_BUS 10
#define rele 13 // пин реле
#define contrs 9 // контраст
#define keyUp A0
#define keySelect A1
#define keyDown A2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float tempTAup; // температура в ТА верх
float tempTAdown; // температура в ТА низ
float tempSolar; // температура на коллекторе
float tempDelta=0.1; // температура дельта на включение насоса
unsigned long currentMillis = millis();
unsigned long Millis = millis();
long loopTime = 4000; // 2 сек время простоя в меню
int Ntemp;
int kontrast=70;
void setup() {
pinMode( keyUp, INPUT); // назначить выводу порт ввода
digitalWrite(keyUp, HIGH);
pinMode(keySelect, INPUT); // назначить выводу порт ввода
digitalWrite(keySelect, HIGH);
pinMode(keyDown, INPUT); // назначить выводу порт ввода
digitalWrite(keyDown, HIGH);
EEPROM.get(20,tempDelta);
EEPROM.get(10,kontrast);
if(kontrast>110){ kontrast=70; tempDelta=9.9; EEPROM.put(20,tempDelta); EEPROM.put(10,kontrast);} // начальная проверка настроек при первом запуске.
pinMode(rele,OUTPUT);
digitalWrite(rele,0);
pinMode(contrs,OUTPUT);
analogWrite(contrs,kontrast); // контраст 0-255
pinMode(10,INPUT); // - DS18B20
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(L"\xDE\xB2");
lcd.setCursor(6, 0);
lcd.print(L"]---\x7EГ");
lcd.setCursor(10, 1);
lcd.print(L"-L");
lcd.setCursor(1, 1);
lcd.print(L"я----(F)-");
sensors.setWaitForConversion(false);
sensors.setResolution(0, 9);
sensors.setResolution(1, 9);
sensors.setResolution(2, 9);
}
void loop()
{
sensors.setWaitForConversion(false);
sensors.requestTemperatures();
lcd.setCursor(2, 0);
lcd.print(tempSolar,1);
lcd.setCursor(12, 0);
lcd.print(tempTAup,1);
lcd.setCursor(12, 1);
lcd.print(tempTAdown,1);
if(tempSolar-tempTAdown>=tempDelta) // включаем насос
{ if( tempTAdown>-100 && tempSolar>-100) {digitalWrite(rele,1);} else {digitalWrite(rele,0);} // проверка датчиков температуры
if(Ntemp==1){lcd.setCursor(6, 1);lcd.print(L"(|");lcd.setCursor(0, 0);lcd.print(L"ы"); lcd.setCursor(7, 0);lcd.print(L"\x7E---"); lcd.setCursor(2, 1);lcd.print(L"-\x7F--");tempTAup=sensors.getTempCByIndex(0);}
if (analogRead(keySelect)<100){ menu(); }
if(Ntemp==15){lcd.setCursor(7, 1);lcd.print(L"/");lcd.setCursor(0, 0);lcd.print(L"ь"); lcd.setCursor(7, 0);lcd.print(L"-\x7E--");lcd.setCursor(2, 1);lcd.print(L"\x7F---");tempTAdown=sensors.getTempCByIndex(1);}
if (analogRead(keySelect)<100){ menu(); }
if(Ntemp==30){lcd.setCursor(7, 1);lcd.print(L"-");lcd.setCursor(0, 0);lcd.print(L"э");lcd.setCursor(7, 0);lcd.print(L"--\x7E-");lcd.setCursor(2, 1);lcd.print(L"---\x7F");tempSolar=sensors.getTempCByIndex(2);}
if (analogRead(keySelect)<100){ menu(); }
if(Ntemp==45){lcd.setCursor(7, 1);lcd.print(L"ё");lcd.setCursor(0, 0);lcd.print(L"ю");lcd.setCursor(7, 0);lcd.print(L"---\x7E");lcd.setCursor(2, 1);lcd.print(L"--\x7F-");delay(100);}
if (analogRead(keySelect)<100){ menu(); }
if (Ntemp==45){Ntemp=0;};
Ntemp++;
}
else
{
digitalWrite(rele,0); // выключаем насос
lcd.setCursor(0, 0);lcd.print(L" ");
lcd.setCursor(7, 0); lcd.print(L"----");
lcd.setCursor(2, 1); lcd.print(L"--(OFF)-");
if (analogRead(keySelect)<100){ menu();}
tempTAup=sensors.getTempCByIndex(0);
tempTAdown=sensors.getTempCByIndex(1)+0.5;
tempSolar=sensors.getTempCByIndex(2);
}
}
void menu()
{
float td=tempDelta;
int kn=kontrast;
lcd.clear();
lcd.setCursor(0, 0);lcd.print(L"НАСТРОЙКА насос");
lcd.setCursor(0, 1);lcd.print(L"t\xB2-tL =");
lcd.setCursor(8, 1);lcd.print(tempDelta,1);lcd.print(L"\xDF ");
lcd.setCursor(14, 1);lcd.print(L"ON");
delay(200);
currentMillis = millis();
while(millis()-currentMillis<=loopTime)
{
if (analogRead(keyDown) < 100 ) { tempDelta=tempDelta-0.1;currentMillis = millis(); if(tempDelta<0.1){tempDelta=0.1;}lcd.setCursor(8, 1); lcd.print(tempDelta,1);lcd.print(L"\xDF "); delay(100);}
if (analogRead(keyUp) < 100 ) { tempDelta=tempDelta+0.1;currentMillis = millis(); if(tempDelta>99.9){tempDelta=99.9;}lcd.setCursor(8, 1); lcd.print(tempDelta,1);lcd.print(L"\xDF "); delay(100);}
if (analogRead(keySelect) < 100 ) {currentMillis = 0; lcd.setCursor(8, 1); lcd.print("OK ");delay(100);}
}
if( tempDelta != td) { EEPROM.put(20,tempDelta);} // если значение поменялось записываем в еером
lcd.clear();
lcd.setCursor(0, 0);lcd.print(L"КОНТРАСТНОСТЬ");
lcd.setCursor(14, 0);lcd.print(kontrast);
delay(300);
currentMillis = millis();
while(millis()-currentMillis<=loopTime)
{
if (analogRead(keyDown) < 100 ) { kontrast=kontrast-1;currentMillis = millis(); if(kontrast<1){kontrast=1;}lcd.setCursor(14, 0); lcd.print(kontrast); analogWrite(9,kontrast);delay(200);}
if (analogRead(keyUp) < 100 ) { kontrast=kontrast+1;currentMillis = millis(); if(kontrast>99){kontrast=99;}lcd.setCursor(14, 0); lcd.print(kontrast); analogWrite(9,kontrast);delay(200);}
if (analogRead(keySelect) < 100 ) {currentMillis = 0; lcd.setCursor(14, 0); lcd.print("OK");}
if(kontrast<10){lcd.setCursor(14, 0); lcd.print(" ");}
}
if( kontrast != kn) { EEPROM.put(10,kontrast);} // если значение поменялось записываем в еером
delay(300);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(L"\xDE\xB2");
lcd.setCursor(6, 0);
lcd.print(L"]---\x7EГ");
lcd.setCursor(10, 1);
lcd.print(L"-L");
lcd.setCursor(1, 1);
lcd.print(L"я----(F)-");
delay(300);
}
Перепости свою хотелку в разделе "Ищу исполнителя". Там тебе помогут за небольшую денюжку.
Здесь торчать бесполезно. Если бы ты сам делал, другое дело, а переделывать стянутый из сети код для человека, который не понимает в нём ни единой буквы, здесь не будет никто. Если будешь продолжать постить в этой теме, клянчить и доказывать. что ты хороший, а мы тут все злыдни и не хотим помочь, получишь ровно то, что описано вот в этой статье, абзац третий, начиная со слов "А вот если подходящих примеров нет ...". Почитай, там всё правильно написано. Именно так и будет Все форумы такие. Наш не хуже и не лучше других.
...получишь ровно то, что описано вот в этой статье, абзац третий, начиная со слов "А вот если подходящих примеров нет ...".
шикарная цитата :)
Мне больше всего понравилось, что «Посылают, кстати, только честные и добрые люди — и исключительно из добрых побуждений». И ведь всё правильно написал, а!
я просто порожаюсь, які ви молодці! помогли!
дякую!
хрена нах, форум якшо всі такі розумні? помохти важко? а говорити багато всі вміють!
нихт ферштеен.
хрена нах, форум якшо всі такі розумні? помохти важко? а говорити багато всі вміють!
имя кончается на -ан, но не армянин... кто же это?
я просто порожаюсь, які ви молодці! помогли!
И правильно. В первом же посте тебе объяснили, что ты ошибся разделом, подсказали в какой раздел перейти и даже объяснили, что будет, если этого не сделать. Рад, что ты отметил оперативность помощи коллег.
хрена нах, форум якшо всі такі розумні?
Щоб троліть нерозумних як ти, які нормальних слів не розуміють.