10. November 2011
Um mehrere LEDs ansteuern zu können, wird ein Shift Register zwischengeschaltet. So können Anschlüsse am Arduino-Bord "gespart" werden und dementsprechend mehr LEDs angeschlossen werden. Für Shifting ist wichtig, dass das Binärsystem verstanden wird: das hatten wir doch irgendwann mal in der Primarschule...mittlerweile ist das Wissen wieder aufgefrischt und so kann das Shiftregister via Code angesteuert werden. DOT MATRIX Mit Punkten zeichnen so quasi. Anbei einige meiner Icons.//SHIFT REGISTER 01 #define LATCH_PIN 8 #define CLOCK_PIN 12 #define DATA_PIN 11 void setup() { pinMode(LATCH_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); pinMode(DATA_PIN, OUTPUT); } void loop() { digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, B10000000); digitalWrite(LATCH_PIN, HIGH); }
//SHIFT REGISTER 02 #define LATCH_PIN 8 #define CLOCK_PIN 12 #define DATA_PIN 11 void setup() { pinMode(LATCH_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); pinMode(DATA_PIN, OUTPUT); } void loop() { for(int i = 0; i=1; i--) { byte myByte = B00000000; bitWrite(myByte, i, 1); digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, myByte); digitalWrite(LATCH_PIN, HIGH); delay(100); } }
//DOT MATRIX DISPLAY LTP-757KR //11.11.11 //KATZENGEIST #define COLUMN_1 12 //pins mit widerständen (negativ) #define COLUMN_2 11 #define COLUMN_3 10 #define COLUMN_4 9 #define COLUMN_5 8 #define ROW_1 7 //pins ohne widerstände (positive) #define ROW_2 6 #define ROW_3 5 #define ROW_4 4 #define ROW_5 3 #define ROW_6 2 #define ROW_7 1 int column[5] = { COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4, COLUMN_5}; int row[7] = { ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7}; int matrix[7][5]={ {0,0,0,0,0}, {0,1,1,1,0}, {1,1,0,1,1}, {0,1,1,1,1}, {1,1,0,1,1}, {0,1,1,1,0}, {0,0,0,0,0} }; void setup() { for(int i = COLUMN_1; i>= ROW_7; i--) { pinMode(i, OUTPUT); } digitalWrite(COLUMN_1, HIGH); digitalWrite(COLUMN_2, HIGH); digitalWrite(COLUMN_3, HIGH); digitalWrite(COLUMN_4, HIGH); digitalWrite(COLUMN_5, HIGH); } void loop() { for(int j=0;j<=6;j++){ for(int n =0; n<=4;n++) { pulseLED(n,j,matrix[j][n]); } } } void pulseLED(int whichColumn, int whichRow,int t) { digitalWrite(column[whichColumn], LOW); digitalWrite(row[whichRow],t); delayMicroseconds(100); digitalWrite(column[whichColumn], HIGH); digitalWrite(row[whichRow], LOW); }
//DOT MATRIX DISPLAY LTP-757KR //11.11.11 //BUCHSTABE E #define COLUMN_1 12 //pins mit widerständen (negativ) #define COLUMN_2 11 #define COLUMN_3 10 #define COLUMN_4 9 #define COLUMN_5 8 #define ROW_1 7 //pins ohne widerstände (positive) #define ROW_2 6 #define ROW_3 5 #define ROW_4 4 #define ROW_5 3 #define ROW_6 2 #define ROW_7 1 int column[5] = { COLUMN_1, COLUMN_2, COLUMN_3, COLUMN_4, COLUMN_5}; int row[7] = { ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7}; int matrix[7][5]={ {1,1,1,1,1}, {1,1,1,1,1}, {1,1,0,0,0}, {1,1,1,1,1}, {1,1,0,0,0}, {1,1,1,1,1}, {1,1,1,1,1} }; void setup() { for(int i = COLUMN_1; i>= ROW_7; i--) { pinMode(i, OUTPUT); } digitalWrite(COLUMN_1, HIGH); digitalWrite(COLUMN_2, HIGH); digitalWrite(COLUMN_3, HIGH); digitalWrite(COLUMN_4, HIGH); digitalWrite(COLUMN_5, HIGH); } void loop() { for(int j=0;j<=6;j++){ for(int n =0; n<=4;n++) { pulseLED(n,j,matrix[j][n]); } } } void pulseLED(int whichColumn, int whichRow,int t) { digitalWrite(column[whichColumn], LOW); digitalWrite(row[whichRow],t); delayMicroseconds(100); digitalWrite(column[whichColumn], HIGH); digitalWrite(row[whichRow], LOW); }