Microcontrôleur pour les modélismes ferroviaires

Pour nos lecteurs du magazine numérique 2026, nous mettons à disposition ici les codes de programme pour l'article. Ceux-ci peuvent être copiés directement et collés dans l'environnement de développement Arduino IDE, puis compilés à partir de là.
Voici le code du premier exemple de l'article :
#include
#include
#include
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire;, -1);
const char* destinations[] = {
"Hersbruck r. d. Peg.",
"Wuerzburg\nvia Neustadt a.d.Aisch\net Kitzingen",
"Neumarkt Opf.",
"Bamberg Oberfr."
};
const int nombreDeDestinations = 4; // indiquer ici le nombre d'entrées dans le tableau " destinations "
int destinationActuelle = 0;
unsigned long dernierChangement = 0;
const unsigned long intervalle = 5000; // 5 secondes
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
for(;;); // Arrêt si l'écran n'est pas détecté
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
}
void loop() {
unsigned long maintenant = millis();
if (maintenant - dernièreCommutation >= intervalle) {
dernièreCommutation = maintenant;
cibleActuelle = (cibleActuelle + 1) % nombreDeCibles; // prochaine cible
display.clearDisplay();
display.setCursor(0,0);
display.println(cibles[cibleActuelle]);
display.display();
}
}
Voici maintenant le deuxième exemple de code, qui remplace la section à partir de „ void loop “ :
void loop() {
unsigned long jetzt = millis();
if (jetzt - letzteUmschaltung >= intervall) {
letzteUmschaltung = jetzt;
aktuellesZiel = (aktuellesZiel + 1) % anzahlZiele; // nächstes Ziel
display.clearDisplay();
display.setCursor(0,20);
display.println(ziele[aktuellesZiel]);
// --- Zusatztext bei Ziel 1 ---
if (aktuellesZiel == 0) {
display.setCursor(0,0);
display.println("5 min. spaeter");
}
else if (aktuellesZiel == 3) {
display.setCursor(0,0);
display.println("Heute Gleis 3 ")

