BT2k
HOME

Rheinturmuhr mit virtuellem Arduino
Rheinunio virtuale
Rheinturm
Wer sich keinen realen Arduino anschaffen möchte oder einfach nicht zu denen gehört, die gerne mit Käbelchen und Lötkolben herumhantieren, für diese Zielgruppe gibt es das Programm "Virtual Breadboard". Ein beeindruckendes Stück Software, welches für mehrere Mikrocontroller konzipiert ist, hier aber nur den Arduino in seinen Grundfunktionen unterstützen soll - und das macht es gut und bis jetzt kostenlos.

Für Windows steht eine freie Version auf der oben verlinkten Seite zur Verfügung. Zum Zeitpunkt dieser Niederschrift ist die Version 4.2.5 verfügbar. Im Shop kann man eine Spezialversion für den Arduino erwerben.

Trotz Emulation der Hardware kann man damit schon einiges ausprobieren. Anzeigen wie LED oder auch LCD-Displays stehen bereit. Vieles kann man 1:1 auf die Hardware übertragen - oder umgekehrt. Mit dem Emulator soll nun die Rheinturmuhr virtuell entwickelt werden.


Ziel dieses kurzen Projekts ist es mit Hilfe des Software-Andruinos ein ähnliches Ergebnis zu erreichen, wie auf der Seite "Rheinturmuhr mit Arduino". Einige wenige Dinge mussten angepasst werde. So ist es wohl nicht möglich das schnelle Multiplexen der Reallösung direkt zu übernehmen. Auch das Schlüsselwort 'sizeof' wurde nicht benutzt. Das Schalten der Analoganschlüsse erfolgt hier ebenfalls anders.

23:59:05 Uhr

Gleich geblieben ist der Schaltplan. Es werden unverändert 39 Dioden auf die gleiche Weise verschaltet. Die voreingestellte LED im VBB (Virtual Breadboard) kann auch einen Masseanschluss bekommen und somit ist das Prinzip aus der realen Welt übernehmbar.

Zugegebenermaßen wurde das Bild oben geringfügig manipuliert. Um das virtuelle Flimmern sichtbar zu machen - oder das Echtzeitproblem zu umgehen, leuchten die drei Säulen jeweils einzeln für 333 Millisekunden. Ein anderes -, aber durchaus interessantes Erscheinungsbild. Die drei oberen LED zeigen testweise den Zustand der Analogleitungen und gehören nicht zur Uhr.


Das Programm

Googelt man "arduino ports" trifft man auf Unterseiten von www.arduino.cc, die zeigen, wie die Ports direkt angespochen werden können. Da diese Methode in der viruellen Umgebung gut funktioniert, wurde für das Umschalten der Säulen das jeweilige Byte für Port C angepasst. Die virtuelle Sekunde beträgt nun ca. 3x333 ms, was für eine Simulation ausreichen sollte. Ansonsten sind Ähnlichkeiten zum Programm für den realen Arduino durchaus erwünscht.

#define INTERVAL 333

//PINS SEKUNDEN MINUTEN STUNDEN
byte oneSecond[] = {0,1,2,3,4,5,6,7,8}; 
byte tenSecond[] = {9,10,11,12,13};    

int s10=0,s1=0; //ONESECOND TENSECOND BAND
int m10=5,m1=9;
int h10=2,h1=3; // 23:59:00

void setup()
{// PORTS ALLE AUSGANG
  DDRC = 255; // A0 - A5
  DDRB = 255; // D8 - D13
  DDRD = 255; // D0 - D7
}

void loop()
{int i;
 for(i=0;i<9;i++) digitalWrite(oneSecond[i], s1 <= i ? LOW : HIGH);
 for(i=0;i<5;i++) digitalWrite(tenSecond[i], s10 <= i ? LOW : HIGH); 
 PORTC = 0xFE; //PIN A0 = 0 
 delay(INTERVAL); /SHOWTIME SEKUNDEN
 for(i=0;i<9;i++)digitalWrite(oneSecond[i], m1 <= i ? LOW : HIGH); 
 for(i=0;i<5;i++)digitalWrite(tenSecond[i], m10 <= i ? LOW : HIGH); 
 PORTC = 0xFD; //PIN A1 = 0
 delay(INTERVAL); //SHOWTIME MINUTEN
 for(i=0;i<9;i++)digitalWrite(oneSecond[i], h1 <= i ? LOW : HIGH); 
 for(i=0;i<5;i++)digitalWrite(tenSecond[i], h10 <= i ? LOW : HIGH);
 PORTC = 0xFB;  //PIN A2 = 0
 delay(INTERVAL); //SHOWTIME STNDEN
 //3x333 ms = 1000 ms?
 s1++;                   //s++;
 if(s1 >= 10){s1 = 0;s10++;} 
 if(s10 >= 6){s10 = 0;m1++;} //m1++;
 if(m1 >= 10){m1 = 0;m10++;}
 if(m10 >= 6){m10 = 0;h1++;} //h1++;
 if(h1 >= 10){h1 = 0;h10++;}
 if(h10 >= 2 && h1 >= 4){h10 = 0;h1 = 0;}
}

Das obige Beispiel kann hier als gepacktes Verzeichnis herunter geladen werden. VBB legt unter XP unter den Dokumenten und Einstellungen des aktuellen Benutzers ein Verzeichnis "My VBB Projects" an. Dort hinein sollte die Zip-Datei entpackt werden. Wenn alles geklappt hat, erscheint das Projekt Rheinunio in der Liste.



.
Startseite Bücher Software Digital TV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt