Via youtube kwam ik op filmpje van iemand die een Dislplay scherm heeft gemaakt met arduino in samenwerking met 128x32 oled scherm, ik heb de sketch ingevoerd in arduino, en nu werkt alleen de klok en daarnaast staat 0:00, maar de gegeven blijven weg, nu is wel zo dat deze persoon de display wel heeft aangesloten via de witte bord, met 6 pinnen, volgens hem kon je de scherm ook aansluiten zonder de witte bord, maar nu werkt alleen de klok en niet de rest, de 6 pinnen zijn nu ook niet aangesloten, de vraag is heeft iemand hier verstand van? De resultaat wilde ik al deels veranderen, ik wil de klok vervangen voor een 00:00 versie en verder wilde ik een NS logo symbool toevoegen, is dit trouwen wel mogelijk met dit soort schermen of heb je daarvoor weer een andere soort nodig. Waarop moet de pinnen aangesloten worden en de clock veranderen in een cijfer clock
hieronder de sketch:
// OLED-modelstation perrondisplay - Rudy B, augustus 2019
// Er kunnen 6 verschillende berichten getoond worden, gebaseerd op 6 inputs
// OLED SSD1306 - I2C-draden: SDA of A4, SCL of A5
#define MSG1_PIN 2
#define MSG2_PIN 3
#define MSG3_PIN 4
#define MSG4_PIN 5
#define MSG5_PIN 6
#define MSG6_PIN 7
#define COLOR_PIN 8
#define TMIN 5 // vertrektijd volgende trein, minimum willekeurige tijd
#define TMAX 13 // vertrektijd volgende trein, maximum willekeurige tijd
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// oled instellen
Adafruit_SSD1306 oled(4);
#if (SSD1306_LCDHEIGHT != 32)
#error("Hoogte onjuist, repareer Adafruit_SSD1306.h!");
#stop als
byte uur, minuut, seconde;
byte bg, fg, msgnr, msgnr_old, msgflag, msghour, msgminute;
niet-ondertekende lange time_to_update;
zweefhoek;
ongeldig calc_msg_time() {
msgminuut = minuut + willekeurig (TMIN, TMAX);
bericht = uur;
if (berichtminuut > 59) {
bericht = (bericht + 1) % 24;
berichtminuut = berichtminuut - 60;
}
}
ongeldig print_msg_time() {
oled.setTextColor(fg);
oled.setTextSize(1);
oled.setCursor(40,2);
if(bericht < 10) oled.print(" ");
oled.print(bericht);
oled.print(":");
if(msgminute < 10) oled.print("0");
oled.print(berichtminuut);
}
ongeldige setup() {
pinMode (MSG1_PIN, INPUT_PULLUP);
pinMode (MSG2_PIN, INPUT_PULLUP);
pinMode (MSG3_PIN, INPUT_PULLUP);
pinMode (MSG4_PIN, INPUT_PULLUP);
pinMode (MSG5_PIN, INPUT_PULLUP);
pinMode (MSG6_PIN, INPUT_PULLUP);
pinMode (COLOR_PIN, INPUT_PULLUP);
Serieel.begin(9600);
Draad.begin();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialiseer met de I2C-adr 0x3C
// genereer willekeurige opstarttijd
randomSeed (analogRead (A0));
uur = willekeurig (7, 20);
minuut = willekeurig (0, 60);
}
lege lus() {
// bepaal achtergrond- en voorgrondkleur op basis van COLOR_PIN
if (digitalRead (COLOR_PIN) == LAAG) {bg = WIT; fg = ZWART;}
anders {bg = ZWART; fg = WIT;}
// update tijd
if(millis() > time_to_update) {
time_to_update = millis() + 1000UL;
tweede = tweede + 1;
if(seconde == 60) {
seconde = 0;
minuut = minuut + 1;
}
als (minuut == 60) {
minuut = 0;
uur = (uur + 1) % 24;
}
}
// oled wissen
oled.clearDisplay();
oled.fillRect(0,0,127,31,bg);
// teken kloktikken
voor(int z=0; z<360;z=z+30){
hoek = (zwevend)z / 57,3;
int x1=(16+(sin(hoek)15));
int y1=(15-(cos(hoek)15));
int x2=(16+(sin(hoek)(12)));
int y2=(15-(cos(hoek)(12)));
oled.drawLine(x1,y1,x2,y2,fg);
}
// teken klok seconde
hoek=((float)seconde * 6/57.3); // Converteer graden naar radialen
int x2=(16+(sin(hoek)(14)));
int y2=(15-(cos(hoek)(14)));
oled.drawLine(16,15,x2,y2,fg);
// teken klok minuut
hoek=((float)minuut * 6 / 57,3) ; // Converteer graden naar radialen
x2=(16+(sin(hoek)(12)));
y2=(15-(cos(hoek)(12)));
oled.drawLine(16,15,x2,y2,fg);
// teken klokuur
hoek=((float)uur * 30 + (float)minuut / 2) / 57.3 ; // Converteer graden naar radialen
x2=(16+(sin(hoek)(10)));
y2=(15-(cos(hoek)(10)));
oled.drawLine(16,15,x2,y2,fg);
/*
// platformnummer
oled.fillRect(107, 5, 19, 22, fg);
oled.setTextSize(2);
oled.setTextColor(bg);
oled.setCursor(111,9);
oled.print("3");
*/
// tijd en berichten weergeven
if(!digitalRead(MSG1_PIN)) msgnr = 1;
if(!digitalRead(MSG2_PIN)) msgnr = 2;
if(!digitalRead(MSG3_PIN)) msgnr = 3;
if(!digitalRead(MSG4_PIN)) msgnr = 4;
if(!digitalRead(MSG5_PIN)) msgnr = 5;
if(!digitalRead(MSG6_PIN)) msgnr = 6;
if(msgnr != msgnr_oud) {
calc_msg_time();
msgnr_oud = msgnr;
}
print_msg_time();
schakelaar (msgnr) {
zaak 1:
oled.setCursor(72,2); oled.print("Intercity"); // max 10 tekens
oled.setCursor(40,12); oled.print("Eindhoven"); // max 14 tekens
oled.setCursor(40,22); oled.print("via Strijp-S"); // max 14 tekens
pauze;
geval 2:
oled.setCursor(72,2); oled.print("Sprinter");
oled.setCursor(40,12); oled.print("sHertogenbosch");
oled.setCursor(40,22); oled.print("via Boxtel");
pauze;
geval 3:
oled.setCursor(72,2); oled.print("Stoptrein");
oled.setCursor(40,12); oled.print("Maliebaan");
oled.setCursor(40,22); oled.print("via Eindhoven");
pauze;
geval 4:
oled.setCursor(72,2); oled.print("Intercity");
oled.setCursor(40,12); oled.print("Venlo");
oled.setCursor(40,22); oled.print("via Deurne");
pauze;
geval 5:
oled.setCursor(72,2); oled.print("Intercity");
oled.setCursor(40,12); oled.print("Maastricht");
oled.setCursor(40,22); oled.print("via Sittard");
pauze;
geval 6:
oled.setCursor(72,2); oled.print("Intercity");
oled.setCursor(40,12); oled.print("Heerlen");
oled.setCursor(40,22); oled.print("via Weert");
pauze;
}
// ververs scherm
oled.display();
}