PHP код:
#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
#define temp 10 //выстовляем вход DS18B20 **********************************************************************************
OneWire oneWire(temp);
DallasTemperature sensors(&oneWire);
float tempext = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Прописываем для ЖКИ
int rtc[7];
int button = 31; // указываем на какой выход подключена кнопка *******************************************************************
int buttonValue = 0; // запомненное значение логического выключателя
int buttonPush = 0; // указывает нажата ли в данный момент кнопка
int buttonState = 0; // текущее значение кнопки взятое со входа ардуино
void setup()
{
pinMode(button, INPUT); // кнопка как вход
sensors.begin(); // Запускаем DS18B20
// устанавливаем время
/*
RTC.stop();
RTC.set(DS1307_SEC,0);
RTC.set(DS1307_MIN,26);
RTC.set(DS1307_HR,15);
RTC.set(DS1307_DOW,6);
RTC.set(DS1307_DATE,29);
RTC.set(DS1307_MTH,11);
RTC.set(DS1307_YR,9);
RTC.start();
*/
lcd.begin(20, 4); // Запускаем ЖКИ и указываем сколько строк
pinMode(22, INPUT); //Дверь пасажир
pinMode(24, INPUT); //Дверь водила
pinMode(26, INPUT); //Дверь зад прав
pinMode(28, INPUT); //Дверь зад лев
pinMode(30, INPUT); //Багажник
pinMode(32, INPUT); // нет Зарядки
pinMode(34, INPUT); //Ручник
pinMode(36, INPUT); //Давление масла
pinMode(38, INPUT); //уровень в радиаторе
pinMode(40, INPUT); //тормоза изношенны
lcd.print("BUONGIORNO"); // Приветствие
delay(1000);
lcd.clear();
}
char* dayOfWeek[] = {"xxx", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"}; // Дни недели
void loop()
{
clock();
knopki();
signal();
}
//******************************************** ЧАСЫ И ТЕРМОМЕТР **************************************************
void clock()
{
sensors.requestTemperatures();
tempext=sensors.getTempCByIndex(0);
RTC.get(rtc,true);
lcd.setCursor(0,0);
//lcd.print(millis());
printDigits(rtc[2],':');
printDigits(rtc[1],' ');
//printDigits(rtc[0],' ');
lcd.print(dayOfWeek[rtc[3]]);
lcd.setCursor(10,0);
printDigits(rtc[4],'/');
printDigits(rtc[5],'/');
printDigits(rtc[6],' ');
lcd.setCursor(4, 1);
lcd.print(tempext);
lcd.setCursor(0, 1);
lcd.print("Tem:");
//lcd.setCursor(19, 1);
//lcd.print("*");
if(tempext < 3) // Указываем температуру " ЛЁД НА ДОРОГЕ"
{
lcd.setCursor(0, 3);
lcd.print(" Pericolo Giacio "); // Надпись которую хотим видеть на ЖКИ " ЛЁД НА ДОРОГЕ"
//tone(37, 550,3000); // можем добавить звук
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
delay(100);
}
void printDigits(int digits, char delimiter)
{
if(digits < 10) {
lcd.print('0');
}
lcd.print(digits,DEC);
lcd.print(delimiter);
}
// ********************************************************** УПРавление КНОПКОЙ *************************************************
void knopki()
{
int delayTime = 10;
buttonState = digitalRead (button); // читаем значение со входа
if (buttonState == 0) // если кнопка нажата...
{
buttonPush = 1; // ...ставим указатель что кнопка зажата
}
else if (buttonState == 1 && buttonPush == 1) // .. если кнопка отпущена после того как нажата
{
if (buttonValue == 2) buttonValue = 0; // меняем значения на кнопке
else buttonValue++;
buttonPush = 0;
}
if (buttonValue == 0) // меняем
// ************************************* Вольтметр*********************************
{
float voltage = 5.0 / 3450.0 * analogRead(0); // читаем со входа для Arduinomega
lcd.setCursor(0, 2);
lcd.print(" "); // Забиваем пустотой строку тобишь стираем :)
lcd.setCursor(0, 2);
float realv = voltage * 19.3;
lcd.setCursor(0, 2);
lcd.print(" Voltage: ");
lcd.print(realv);
lcd.print("v");
delay(1000);
}
else if (buttonValue == 1)
{
lcd.setCursor(0, 2);
lcd.print(" "); // Забиваем пустотой строку тобишь стираем :)
lcd.setCursor(0, 2); // Здесь в планах зделать расход
lcd.print(" 2Soobschenie");
}
else if (buttonValue == 2)
{
lcd.setCursor(0, 2);
lcd.print(" "); // Забиваем пустотой строку тобишь стираем :)
lcd.setCursor(0, 2);
lcd.print(" 3Soobschenie"); // Здесь в планах зделать сколько оствлось проехать на оставшеймся топливе
}
delay(delayTime);
}
// *********************************************** Сообщения*************************************************
void signal()
{
if (digitalRead(22) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print(" Porta ANT DX"); //Дверь пасажир
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(24) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print(" Porta ANT LX"); //Дверь водила
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(26) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print(" Porta POST DX"); //Дверь зад прав
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(28) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print(" Porta POST LX"); //Дверь зад лев
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(30) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print("Porta Bagagliaio"); //Багажник
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(32) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print(" Non carica Batteria"); // нет Зарядки
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(34) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print("Freno Stazionamento"); //Ручник
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(36) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print(" Bassa pressione OLIO"); //Давление масла
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(38) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print("Liquido Raffreddamento"); //уровень в радиаторе
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (digitalRead(40) == HIGH)
{
lcd.setCursor(0, 3);
lcd.print("Pastigli freno"); //тормоза изношенны
delay(3000);
lcd.setCursor(0, 3);
lcd.print(" ");
}
}