|
LED-Matrix: Ein Smiley zeigt Gefühle
Im nächsten Experiment, ein Projekt von Martin Manz, kommen
viele Dinge zusammen.
1. Eine elektronische Schaltung kommuniziert mit dem Menschen über
Gefühls-Symbolik.
2. Die Schaltung wird von einem Computerprogramm gesteuert, das
mit Arduino über USB kommuniziert.
Gefühls-Symbolik:
Das Dot-Matrix-Display kann auf Knopfdruck lächeln oder traurig
sein:
Schaltung:
Das hier verwendete Dot-Matrix-Display nennt sich: SBM788CSR E
Seine Anoden und Katoden sind leider in sehr ungeordneter
Reihenfolge:
Hier unten steht die Beschriftung: SBM788CSR E
Wenn Du ein anderes Dot-Matrix-Display verwendest, besorg Dir
dessen Datenblatt und sieh nach, wo sich die Anoden und Katoden
Deines Displays befinden.
Zwischen jeder Anode und dem Arduino-Pin habe ich einen 220 Ohm
Widerstand geschaltet.
Computerprogramm:
Hier kannst Du es herunterladen. Es ist
ein in Java geschriebenes Programm, das auf jedem Betriebssystem
läuft, das .jar-Dateien starten kann (es muss eine
Java-Laufzeitumgebung vorhanden sein).
Das Programm sendet über die gewünschte serielle Schnittstelle
entweder eine 1 (Froh) oder eine 0 (Traurig). Arduino empfängt
diese 0 oder 1 und wertet sie aus:
Arduino-Code:
int spalte[] = { 2, 5, 6, 4,
7, 3, 18, 19 }; //Anoden
int zeile[] = { 10, 8, 16, 9,
11, 15, 12, 14 }; //Katoden
char sendeInhalt;
int laufOn;
void setup()
{
pinMode(zeile[0], OUTPUT);
pinMode(zeile[1], OUTPUT);
pinMode(zeile[2], OUTPUT);
pinMode(zeile[3], OUTPUT);
pinMode(zeile[4], OUTPUT);
pinMode(zeile[5], OUTPUT);
pinMode(zeile[6], OUTPUT);
pinMode(zeile[7], OUTPUT);
pinMode(spalte[0], OUTPUT);
pinMode(spalte[1], OUTPUT);
pinMode(spalte[2], OUTPUT);
pinMode(spalte[3], OUTPUT);
pinMode(spalte[4], OUTPUT);
pinMode(spalte[5], OUTPUT);
pinMode(spalte[6], OUTPUT);
pinMode(spalte[7], OUTPUT);
//Alle Kathoden auf HIGH
setzen
for (int i=0; i<=7; i++)
digitalWrite(zeile[i], HIGH);
Serial.begin(9600);
Serial.flush();
delay(100);
}
void loop()
{
if
(Serial.available() == 1)
{
sendeInhalt =
Serial.read();
}
if (sendeInhalt == '1' ||
sendeInhalt == '2')
{
laufOn=sendeInhalt;
}
if (laufOn == '1')
{
smileFroh();
}
if (laufOn == '2')
{
smileSad();
}
}
void smileFroh()
{
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[3], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[3], LOW);
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[4], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[4], LOW);
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[5], LOW);
digitalWrite(zeile[1], LOW);
digitalWrite(spalte[1], HIGH);
digitalWrite(zeile[1], HIGH);
digitalWrite(spalte[1], LOW);
digitalWrite(zeile[1], LOW);
digitalWrite(spalte[6], HIGH);
digitalWrite(zeile[1], HIGH);
digitalWrite(spalte[6], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[5], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[3], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[3], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[3], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[3], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[4], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[4], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[4], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[4], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[4], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[4], HIGH);
digitalWrite(spalte[5], LOW);
digitalWrite(zeile[4], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[4], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[3], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[3], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[4], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[4], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[6], LOW);
digitalWrite(spalte[1], HIGH);
digitalWrite(zeile[6], HIGH);
digitalWrite(spalte[1], LOW);
digitalWrite(zeile[6], LOW);
digitalWrite(spalte[6], HIGH);
digitalWrite(zeile[6], HIGH);
digitalWrite(spalte[6], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[3], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[3], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[4], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[4], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[5], LOW);
}
void smileSad()
{
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[3], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[3], LOW);
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[4], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[4], LOW);
digitalWrite(zeile[0], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[0], HIGH);
digitalWrite(spalte[5], LOW);
digitalWrite(zeile[1], LOW);
digitalWrite(spalte[1], HIGH);
digitalWrite(zeile[1], HIGH);
digitalWrite(spalte[1], LOW);
digitalWrite(zeile[1], LOW);
digitalWrite(spalte[6], HIGH);
digitalWrite(zeile[1], HIGH);
digitalWrite(spalte[6], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[5], LOW);
digitalWrite(zeile[2], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[2], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[3], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[3], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[3], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[3], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[4], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[4], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[6], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[6], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[6], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[6], HIGH);
digitalWrite(spalte[5], LOW);
digitalWrite(zeile[4], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[4], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[0], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[0], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[3], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[3], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[4], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[4], LOW);
digitalWrite(zeile[5], LOW);
digitalWrite(spalte[7], HIGH);
digitalWrite(zeile[5], HIGH);
digitalWrite(spalte[7], LOW);
digitalWrite(zeile[6], LOW);
digitalWrite(spalte[1], HIGH);
digitalWrite(zeile[6], HIGH);
digitalWrite(spalte[1], LOW);
digitalWrite(zeile[6], LOW);
digitalWrite(spalte[6], HIGH);
digitalWrite(zeile[6], HIGH);
digitalWrite(spalte[6], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[2], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[2], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[3], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[3], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[4], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[4], LOW);
digitalWrite(zeile[7], LOW);
digitalWrite(spalte[5], HIGH);
digitalWrite(zeile[7], HIGH);
digitalWrite(spalte[5], LOW);
}
|