#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSansOblique9pt7b.h>
#define OLED_RESET -1
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire,
OLED_RESET);
int lademodus_wahl = 0;
int x = 0;
int y=0;
int z=0;
int sekunden=0;
int minuten=0;
int stunden=0;
int led_on =0;
int led_blinkt=10;
int led_leuchtet=20;
int ladung_beendet=0;
int stumm=0;
void setup() {
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(13, OUTPUT);
pinMode(9, INPUT); //muss wieder gelöscht werden nur zur simulation von gleichzeitigem tastendruck
// put your setup code here, to run once:
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
delay(1000);
// dnt brn my house down
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("d");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dn");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt b");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt br");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn d");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dw");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn m");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn my");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn my h");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn my ho");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn my hou");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn my hous");
display.display();
delay(30);
display.setCursor(0,0);
display.print("dnt brn dwn my house");
display.display();
delay(150);
display.display();
delay(300);
// DrALa boXX
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,10);
display.print("Dr");
display.display();
delay(200);
display.setCursor(0,10);
display.print("DrA");
display.display();
delay(200);
display.setCursor(0,10);
display.print("DrASi");
display.display();
delay(200);
display.setCursor(0,10);
display.print("DrASiLa");
display.display();
delay(500);
display.setCursor(90,20);
display.print("BOX");
display.display();
delay(800);
// Drohnen Akku Lade Box Juerch 2022
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,27);
display.print("Drohnen");
display.setCursor(0,37);
display.print("Akku");
display.setCursor(0,47);
display.print("Sicherheits");
display.setCursor(0,57);
display.print("Lade Box");
display.setCursor(92,45);
display.print("Juerch");
display.setCursor(100,55);
display.print("2022");
display.display();
okbuttonclick();
delay(3000);
menuscreen();
}
void menuscreen() {
// put your setup code here, to run once:
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
// dnt brn my house down
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(12,0);
display.print("Lademodus waehlen");
display.setCursor(12,3);
display.print("_________________");
display.setCursor(58,20);
display.print("75 %");
display.setCursor(53,35);
display.print("100 %");
display.setCursor(42,50);
display.print("Dauer EIN");
display.display();
delay(500);
display.drawRoundRect(27,47,78,15,10, WHITE);
display.display();
delay(50);
display.drawRoundRect(27,31,78,15,10, WHITE);
display.display();
delay(50);
display.fillRoundRect(27,15,78,15,10, WHITE);
display.display();
delay(50);
display.drawRoundRect(27,47,78,15,10, BLACK);
display.display();
delay(50);
display.drawRoundRect(27,31,78,15,10, BLACK);
display.display();
delay(50);
display.setTextColor(BLACK);
display.setCursor(58,20);
display.print("75 %");
display.display();
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(9)==LOW ) // (digitalRead(7)==LOW & digitalRead(8)==LOW) <----- muss wieder aktiviert werden wurde zur simulation von zwei gleichzeitigen tastendrücken deaktiviert
{
if (stumm==0)
{
stumm=1;
toene_ausschalten();
}
else
{
stumm=0;
toene_einschalten();
}
}
if (digitalRead(7)==LOW & digitalRead(8)==HIGH)
{
lademodus_wahl++;
buttonclick();
if(lademodus_wahl==3)
{
lademodus_wahl=0;
}
if(lademodus_wahl==0)
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(12,0);
display.print("Lademodus waehlen");
display.setCursor(12,3);
display.print("_________________");
display.fillRoundRect(27,15,78,15,10, WHITE);
display.setTextColor(BLACK);
display.setCursor(58,20);
display.print("75 %");
display.setTextColor(WHITE);
display.setCursor(53,35);
display.print("100 %");
display.setCursor(42,50);
display.print("Dauer EIN");
display.display();
delay(500);
}
if(lademodus_wahl==1)
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(12,0);
display.print("Lademodus waehlen");
display.setCursor(12,3);
display.print("_________________");
display.fillRoundRect(27,31,78,15,10, WHITE);
display.setCursor(58,20);
display.print("75 %");
display.setTextColor(BLACK);
display.setCursor(53,35);
display.print("100 %");
display.setTextColor(WHITE);
display.setCursor(42,50);
display.print("Dauer EIN");
display.display();
delay(500);
}
if(lademodus_wahl==2)
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(12,0);
display.print("Lademodus waehlen");
display.setCursor(12,3);
display.print("_________________");
display.setCursor(58,20);
display.print("75 %");
display.setCursor(53,35);
display.print("100 %");
display.fillRoundRect(27,47,78,15,10, WHITE);
display.setTextColor(BLACK);
display.setCursor(42,50);
display.print("Dauer EIN");
display.display();
delay(500);
}
}
if (digitalRead(8)==LOW & digitalRead(7)==HIGH)
{
okbuttonclick();
ladung();
}
}
void ladung()
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
if (lademodus_wahl==0)
{
display.setCursor(35,0);
display.print("Ladung 75 %");
display.setCursor(33,3);
display.print("____________");
}
if (lademodus_wahl==1)
{
display.setCursor(34,0);
display.print("Ladung 100 %");
display.setCursor(32,3);
display.print("_____________");
}
if (lademodus_wahl==2)
{
display.setCursor(18,0);
display.print("Ladung Dauer EIN");
display.setCursor(18,3);
display.print("________________");
}
display.display();
while (ladung_beendet==0)
{
x=x+1;
if (x>106)
{
display.fillRect(10,15,x,5, BLACK);
display.display();
x=1;
}
display.fillRect(10,15,x,5, WHITE);
display.fillRoundRect(7,25,110,30,10, WHITE);
display.setTextSize(2);
display.setTextColor(BLACK);
display.setCursor(15,32);
display.print(stunden);
display.setCursor(35,32);
display.print(":");
display.setCursor(55,32);
display.print(minuten);
display.setCursor(75,32);
display.print(":");
display.setCursor(90,32);
display.print(sekunden);
y++;
if (y>20)
{
sekunden++;
y=0;
}
if (sekunden==60)
{
sekunden=0,
led_on=0;
minuten++;
}
if (minuten==60)
{
minuten=0,
stunden++;
}
if (digitalRead(6)==LOW)
{
led_on++;
}
if (led_on>led_blinkt & lademodus_wahl==0)
{
ladung_beendet=1;
}
if (led_on>led_leuchtet & lademodus_wahl==1)
{
ladung_beendet=1;
}
display.display();
delay(1);
}
ende_screen();
}
void ende_screen()
{
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(9,0);
display.print("Akkuladung beendet");
display.setCursor(9,3);
display.print("__________________");
display.setCursor(0,18);
display.print("Akku-");
display.setCursor(0,28);
display.print("ladung:");
display.setCursor(0,50);
display.print("Ladezeit:");
display.setCursor(70,50);
display.print(stunden);
display.setCursor(84,50);
display.print(":");
display.setCursor(91,50);
display.print(minuten);
display.setCursor(105,50);
display.print(":");
display.setCursor(113,50);
display.print(sekunden);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(65,20);
if (lademodus_wahl==0)
{
display.print("75 %");
}
if (lademodus_wahl==1)
{
display.print("100 %");
}
display.display();
beendet_sound();
lademodus_wahl = 0;
x = 0;
y=0;
z=0;
sekunden=0;
minuten=0;
stunden=0;
led_on =0;
led_blinkt=10;
led_leuchtet=20;
while (ladung_beendet==1)
{
if (digitalRead(8)==LOW)
{
ladung_beendet=0;
menuscreen();
}
}
}
void buttonclick()
{
if (stumm==0)
{
tone(13, 1000, 80); // Plays 262Hz tone for 0.250 seconds
}
}
void okbuttonclick()
{
if (stumm==0)
{
tone(13, 1620, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 1820, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 2000, 100); // Plays 262Hz tone for 0.250 seconds
}
}
void beendet_sound()
{
if (stumm==0)
{
while (z<3)
{
tone(13, 1620, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 1820, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 2000, 100); // Plays 262Hz tone for 0.250 seconds
delay(400);
tone(13, 1620, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 1820, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 2000, 100); // Plays 262Hz tone for 0.250 seconds
delay(400);
tone(13, 1620, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 1820, 250); // Plays 262Hz tone for 0.250 seconds
delay(100);
tone(13, 2000, 100); // Plays 262Hz tone for 0.250 seconds
delay(500);
tone(13, 1720, 350); // Plays 262Hz tone for 0.250 seconds
z++;
delay(5000);
}
}
}
void toene_ausschalten()
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(35,15);
display.print("Toene");
display.setCursor(50,35);
display.print("aus");
display.display();
delay(1000);
lademodus_wahl=0;
menuscreen();
}
void toene_einschalten()
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(35,15);
display.print("Toene");
display.setCursor(50,35);
display.print("ein");
display.display();
delay(1000);
lademodus_wahl=0;
menuscreen();
}