U kódu jsem změnil akorát displej, můžete použit buď SH1106-SSD1306 oled.
Co se tyče výstrahy můžete změnít parametry, třeba u oleju:
/Temperature Oil
if(TempOil>100 && Flash==1 || TempOil<30 && Flash==1){
display.setTextColor(BLACK, WHITE);
}else{
display.setTextColor(WHITE);
}
Změna je u 100 a 30, displej začne blikat.
Kód: Vybrat vše
/**************************************************************************
Zapojení: pin:
Arduino nano V3
Oled 0.96 i2c SDA-A4
SH1106-SSD1306 SCL-A5
DS1307 SDA-A4
SCK-A5
Trimr 10K-volty A0
LM35:
Tep.oleje A1
Tep.vody A2
**************************************************************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);
#define SH1106_LCDHEIGHT 64
#include "RTClib.h" // Incluye la librería RTClib
RTC_DS1307 RTC;
float Voltage = 0;
int TempOil = 0;
int TempExt = 0;
float Voltage1 = 0;
int TempOil1 = 0;
int TempExt1 = 0;
unsigned long time;
int hour = 0;
int minute = 0;
int Voltage_Pin = A0;
int TempOil_Pin = A1;
int TempExt_Pin = A2;
int Flash = 0;
int counter = 0;
// 'auto Logo', 128x64px
const unsigned char myBitmap [] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x18,0x01,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xC1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x8A,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x8B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0x44,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0xE4,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0xF4,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0x56,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xF8,0x00,0x03,0x53,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0xE0,0x0F,0xC0,0x02,0x61,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x40,0x0C,0x00,0x00,0x78,0x02,0xE1,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x40,0x18,0x00,0x00,0x0F,0xFE,0xC6,0x0D,0xF8,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,
0x60,0x10,0x00,0x00,0x00,0x0F,0x98,0x18,0xF4,0x07,0xFF,0xF8,0xE0,0x00,0x00,0x00,
0x70,0x20,0x00,0x00,0x03,0xF9,0x18,0x28,0x1E,0x1C,0x00,0x00,0x18,0x00,0x00,0x00,
0x78,0x47,0x8F,0x00,0xDE,0xC5,0x8F,0x08,0x1E,0x30,0x00,0x00,0x0C,0x00,0x00,0x00,
0x48,0xDF,0x8F,0x0F,0xD9,0x81,0x03,0x08,0x0F,0x30,0xFB,0xFF,0x06,0x00,0x00,0x00,
0x48,0x9F,0x8F,0x97,0xAD,0x03,0x00,0x08,0x0F,0x33,0xF8,0xFF,0xC3,0x00,0x00,0x00,
0x79,0xBF,0x8F,0x9F,0xAF,0x81,0x80,0x08,0x0F,0x67,0xF8,0xFF,0xF9,0x80,0x00,0x00,
0x01,0x3F,0x8F,0xCF,0xA7,0x41,0x00,0x08,0x07,0x6F,0xF8,0xFF,0xFC,0xC0,0x00,0x00,
0x3F,0x7F,0x8F,0xC7,0xA7,0xB9,0x00,0x00,0x07,0xFF,0xF8,0xFF,0xFE,0x60,0x00,0x00,
0x10,0x3F,0x8F,0xE3,0x9B,0xB1,0xFC,0x7F,0x7F,0xDF,0xF8,0xFF,0xFF,0x30,0x00,0x00,
0x10,0x00,0x87,0xE1,0x8F,0xC1,0x02,0x5F,0xFF,0x9F,0xF8,0xFF,0xFF,0x18,0x00,0x00,
0x10,0x00,0x07,0xE1,0x83,0xB0,0x06,0x60,0x07,0x3F,0xF8,0xFF,0xFF,0x8F,0xFC,0x00,
0x10,0x00,0x03,0xC0,0x03,0xFC,0x0B,0xE0,0x16,0xFF,0xF8,0xFF,0xFF,0x80,0x3F,0x00,
0x30,0xFC,0x00,0x00,0x00,0x1F,0x0B,0x7F,0xFC,0x80,0xF8,0x00,0x1F,0x80,0x0D,0x80,
0x21,0xF4,0x00,0x00,0x00,0xFE,0x8B,0x00,0x00,0x80,0x00,0x00,0x00,0x03,0xFF,0x80,
0x23,0x74,0x00,0x00,0x01,0x8F,0x0B,0xBF,0x81,0xF0,0x00,0x00,0x00,0x00,0x7F,0x40,
0x23,0xFC,0x00,0x00,0x01,0x1F,0x0E,0x07,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x60,
0x27,0xFC,0x00,0x00,0x01,0xBF,0x06,0x00,0xE0,0x07,0xFF,0xFF,0xE0,0x01,0xBF,0xF0,
0x26,0x3C,0x00,0x00,0x00,0xE0,0x7E,0x03,0xC0,0x01,0x80,0x00,0xC0,0x00,0xC0,0x10,
0x3E,0x1E,0x00,0x00,0x00,0x7F,0xDA,0x07,0x1F,0x00,0xC0,0x01,0x80,0x00,0x60,0x10,
0x3E,0x1E,0x00,0x00,0x00,0x7F,0xDA,0x07,0x1F,0x00,0xC0,0x01,0x80,0x00,0x60,0x10,
0x06,0x0F,0x00,0xFC,0x00,0xC0,0x3E,0x1E,0x31,0xF0,0x40,0x03,0x1F,0xC0,0x60,0x10,
0x05,0x0F,0x01,0x66,0x00,0x80,0xCC,0x1C,0x7F,0xF8,0x60,0x02,0x31,0xF0,0x20,0x10,
0x05,0x87,0x82,0xDF,0x01,0x81,0x8F,0x88,0x5F,0xFC,0x00,0x04,0x7F,0xFC,0x30,0x10,
0x06,0xEF,0xC3,0xB5,0x81,0x0E,0x7F,0x80,0xFC,0x7E,0x00,0x04,0x5F,0xF7,0x80,0x10,
0x03,0x3F,0xFF,0xC6,0xC1,0xF0,0x60,0x80,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x80,0x10,
0x03,0xFF,0x87,0xC2,0xC0,0x00,0x20,0x8F,0x70,0x1F,0x00,0x01,0xF8,0x1F,0x80,0x10,
0x03,0xFF,0x87,0xC2,0xC0,0xE0,0x20,0xFF,0x60,0x1F,0x00,0x03,0x70,0x0B,0x80,0x30,
0x01,0xFF,0x07,0xC6,0xE1,0x80,0xFE,0x7F,0x70,0x1F,0x8F,0xFF,0xD0,0x0B,0x80,0x60,
0x00,0x7E,0x07,0xDD,0x61,0x07,0x60,0x0E,0x70,0x17,0xFF,0xFF,0xD8,0x1F,0xC0,0x40,
0x00,0x00,0x07,0xF3,0xFF,0xFF,0x80,0x00,0x78,0x1F,0x80,0x00,0x58,0x37,0xFF,0xC0,
0x00,0x00,0x07,0xFE,0xC1,0xFC,0x00,0x00,0x7F,0xFF,0x00,0x00,0x58,0x6F,0x80,0x00,
0x00,0x00,0x07,0xC7,0x80,0x00,0x00,0x00,0x7F,0xFF,0x00,0x00,0x7F,0xFE,0x80,0x00,
0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x3F,0xFE,0x00,0x00,0x6F,0xFD,0x00,0x00,
0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x3F,0xFB,0x00,0x00
};
void setup() {
{
delay(500);
display.begin(SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.drawBitmap(0, 0, myBitmap, 128, 64, WHITE);
display.display();
delay(3500);
Wire.begin(); // Establece la velocidad de datos del bus I2C
RTC.begin(); // Establece la velocidad de datos del RTC
display.clearDisplay();
display.display();
}
}
void loop() {
{
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
if( counter > 7){
Voltage = Voltage1/counter;
TempOil = TempOil1/counter;
TempExt = TempExt1/counter;
Voltage1 = 0;
TempOil1 = 0;
TempExt1 = 0;
counter = 0;
}else{
counter++;
Voltage1 = Voltage1 + float(analogRead(Voltage_Pin))*17.6/1023;
TempOil1 = TempOil1 + map(analogRead(TempOil_Pin), 0, 1023, 0, 500); //LM335
TempExt1 = TempExt1 + map(analogRead(TempExt_Pin), 0, 1023, 0, 500); //LM335
}
display.drawLine(63, 0, 63, 63,WHITE);//(x0,y0,x1,y1)
display.drawLine(0, 32, 127, 32,WHITE);//(x0,y0,x1,y1)
display.drawLine(0, 0, 127, 0,WHITE);//(x0,y0,x1,y1)
display.drawLine(0, 63, 127, 63,WHITE);//(x0,y0,x1,y1)
display.drawLine(0, 0, 0, 63,WHITE);//(x0,y0,x1,y1)
display.drawLine(127, 0, 127, 63,WHITE);//(x0,y0,x1,y1)
//Voltaje
if(Voltage<12 && Flash==1 || Voltage>14.8 && Flash==1){ //nastavení poplach blikání displeje
display.setTextColor(BLACK, WHITE);
}else{
display.setTextColor(WHITE);
}
display.setTextSize(1);
display.setCursor(10,3);
display.println("Baterie");
display.setTextSize(2);
display.setCursor(2,14);
display.print(int(Voltage));
display.print(".");
display.print(int(Voltage*10-int(Voltage)*10));
display.println("V");
//Temperature Oil
if(TempOil>100 && Flash==1 || TempOil<30 && Flash==1){ //nastavení poplach blikání displeje
display.setTextColor(BLACK, WHITE);
}else{
display.setTextColor(WHITE);
}
display.setTextSize(1);
display.setCursor(70,3);
display.println("Tep.oleje");
display.setTextSize(2);
display.setCursor(77,14);
display.print(int(TempOil));
display.println("C");
if(TempExt>40 && Flash==1 || TempExt<10 && Flash==1){ //nastavení poplach blikání displeje
display.setTextColor(BLACK, WHITE);
}else{
display.setTextColor(WHITE);
}
display.setTextSize(1);
display.setCursor(8,35);
display.println("Tep.vody");
display.setTextSize(2);
display.setCursor(14,46);
display.print(int(TempExt));
display.println("C");
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(67,40);
hour = (now.hour());
minute = (now.minute());
if (hour<10){
display.print("0");
}
display.print(now.hour(), DEC);
display.print(":");
if (minute<10){
display.print("0");
}
display.print(now.minute(), DEC);
display.display();
if (Flash==1){
Flash=0;
}else{
Flash=1;
}
display.clearDisplay();
}
}