#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
const int taster=2; int tasterStatus = 0; int text = 0; // Variable für den Ablauf bool geschaltet = false; bool taster_state, taster_state_alt;// Variablendeklaration (global) #define debounce_delay 15 //Entprellzeit für den Taster
#define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin # (or -1 wenn Sie den Arduino-Reset-Pin teilen) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() { Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 Serial.println(F("SSD1306 allocation failed")); for(;;); } display.display(); delay(2000);
display.clearDisplay();
display.drawPixel(10, 10, SSD1306_WHITE); // ein einzelnes Pixel in Weiß
display.display(); delay(2000); pinMode(taster, INPUT_PULLUP); //wir definieren den tasterPin als Eingang mit Pull Up
}
void loop() { static uint32_t debounce_time; if (millis()-debounce_time>debounce_delay)taster_state = digitalRead(taster); //einlesen des Tasters if (taster_state != taster_state_alt) // bei Pegelwechsel { debounce_time=millis(); taster_state_alt = taster_state; if(!taster_state)//wenn Taster gedrückt { text++; //Text +1 if (text >5) text = 0; //nach dem letzten Text fängt das ganze bei "0" an } if (text == 0) // Text 1 - einmal drücken { void text(void); display.clearDisplay();
display.setTextSize(2); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(10,0); // Position Text display.println(F("Schnecken")); display.setCursor(15,15); // Position Text display.println(F("bergbahn")); display.display(); // Anfangstext anzeigen } }
else if (text == 1) // Text 2 { void text(void); display.clearDisplay();
display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(2, 15); display.println(F("R1")); display.drawRect (0,12,25,20,SSD1306_WHITE); //Rahmen um "R1" (Rechteck [drawRect (xEcke, yEcke, Breite, Höhe)] display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(20, 0); display.println("Schnecken"); display.setCursor(50,15); display.println("berg"); display.display(); } else if (text == 2) // Text 3 {
void text(void); display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(2, 15); display.println(F("R1")); display.drawRect (0,12,25,20, SSD1306_WHITE); display.setTextSize(2); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 0); display.println(F("Lotsch"));
display.display(); // Anfangstext anzeigen } else if (text == 3) // Text 4 Wechselanzeige { void wechselanzeige(void); {switch ((millis()/2500)%2)//millis(Millisikunden)2500=2,5Sekunden { //%2 = 2 Anzeigen, %3 = 3 Anzeigen usw. case 0: display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(2, 15); display.println(F("R2")); display.drawRect (0,12,25,20, SSD1306_WHITE); display.setTextSize(2); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(40, 0); display.println("Gunters"); display.setCursor(50,15); display.println("berge");break;
case 1: display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(2, 15); display.println(F("R2")); display.drawRect (0,12,25,20, SSD1306_WHITE); display.setTextSize(1); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 0); display.println(F("Guntersberge"));
display.setTextSize(1); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 10); display.println(F("via Stausee"));
display.setTextSize(1); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 20); display.println(F("und Bruecke"));break; default: display.println("Error");} display.display(); // Anfangstext anzeigen } } else if (text == 4) // Text 5 Wechelanzeige { void wechselanzeige(void); //Wechselanzeige Serial {switch ((millis()/2500)%2)//millis(Millisikunden)2500=2,5Sekunden //%2 = 2 Anzeigen, %3 = 3 Anzeigen usw. { case 0: display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(2, 15); display.println(F("R2")); display.drawRect (0,12,25,20, SSD1306_WHITE); display.setTextSize(1); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 0); display.println(F("Schneckenberg"));
display.setTextSize(1); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 10); display.println(F("via Bruecke"));
display.setTextSize(1); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(50, 20); display.println(F("und Stausee"));break;
case 1: display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(2, 15); display.println(F("R2")); display.drawRect (0,12,25,20, SSD1306_WHITE); display.setTextSize(2); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(20, 0); display.println("Schnecken"); display.setCursor(50,15); display.println("berg");break; default: display.println("Error"); } display.display(); // Anfangstext anzeigen } } else if (text == 5) // Text 6 "Logo" {
void logo(void); display.clearDisplay(); display.drawLine (0,30,128,30, SSD1306_WHITE); // untere Linie - drawLine(xAnfang, yAnfang, xEnde, yEnde, Farbe); (128x32) display.drawLine (0,31,128,31, SSD1306_WHITE); // untere Linie display.drawRect (33,0,65,30, SSD1306_WHITE); //Rahmen um "SEG" (Rechteck [drawRect (xEcke, yEcke, Breite, Höhe)x=von links; y=von oben] display.drawLine (10,0,33,0, SSD1306_WHITE); //1. Linie links display.drawLine (10,1,118,1, SSD1306_WHITE); // Linie 1 unten geht durch display.drawLine (15,4,33,4, SSD1306_WHITE); //2. Linie links display.drawLine (15,5,33,5, SSD1306_WHITE); display.drawLine (20,8,33,8, SSD1306_WHITE); //3. Linie links display.drawLine (20,9,33,9, SSD1306_WHITE); display.drawLine (98,0,118,0, SSD1306_WHITE); //1. Linie rechts display.drawLine (98,4,113,4, SSD1306_WHITE); //2. Linie rechts display.drawLine (98,5,113,5, SSD1306_WHITE); display.drawLine (98,8,108,8, SSD1306_WHITE); //3. Linie rechts display.drawLine (98,9,108,9, SSD1306_WHITE);
display.drawLine (10,26,33,26, SSD1306_WHITE); //2. Linie von unten links display.drawLine (10,25,33,25, SSD1306_WHITE); display.drawLine (98,26,118,26, SSD1306_WHITE); //2. Linie von unten rechts display.drawLine (98,25,118,25, SSD1306_WHITE); display.setTextSize(3); // Textgröße display.setTextColor(SSD1306_WHITE); display.setCursor(40, 5); display.println(F("SEG"));
display.display(); // Anfangstext anzeigen } }
|