arduino stuffs
Diffstat (limited to 'led_matrix/led_matrix.ino')
-rw-r--r--led_matrix/led_matrix.ino154
1 files changed, 154 insertions, 0 deletions
diff --git a/led_matrix/led_matrix.ino b/led_matrix/led_matrix.ino
new file mode 100644
index 0000000..ee70825
--- /dev/null
+++ b/led_matrix/led_matrix.ino
@@ -0,0 +1,154 @@
+//update from SAnwandter
+
+#define ROW_1 2
+#define ROW_2 3
+#define ROW_3 4
+#define ROW_4 5
+#define ROW_5 6
+#define ROW_6 7
+#define ROW_7 8
+#define ROW_8 9
+
+#define COL_1 10
+#define COL_2 11
+#define COL_3 12
+#define COL_4 13
+#define COL_5 A0
+#define COL_6 A1
+#define COL_7 A2
+#define COL_8 A3
+
+const byte rows[] = {
+ ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8
+};
+const byte col[] = {
+ COL_1,COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8
+};
+
+// The display buffer
+// It's prefilled with a smiling face (1 = ON, 0 = OFF)
+byte ALL[] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111};
+byte EX[] = {B00000000,B00010000,B00010000,B00010000,B00010000,B00000000,B00010000,B00000000};
+byte A[] = { B00000000,B00111100,B01100110,B01100110,B01111110,B01100110,B01100110,B01100110};
+byte B[] = {B01111000,B01001000,B01001000,B01110000,B01001000,B01000100,B01000100,B01111100};
+byte C[] = {B00000000,B00011110,B00100000,B01000000,B01000000,B01000000,B00100000,B00011110};
+byte D[] = {B00000000,B00111000,B00100100,B00100010,B00100010,B00100100,B00111000,B00000000};
+byte E[] = {B00000000,B00111100,B00100000,B00111000,B00100000,B00100000,B00111100,B00000000};
+byte F[] = {B00000000,B00111100,B00100000,B00111000,B00100000,B00100000,B00100000,B00000000};
+byte G[] = {B00000000,B00111110,B00100000,B00100000,B00101110,B00100010,B00111110,B00000000};
+byte H[] = {B00000000,B00100100,B00100100,B00111100,B00100100,B00100100,B00100100,B00000000};
+byte I[] = {B00000000,B00111000,B00010000,B00010000,B00010000,B00010000,B00111000,B00000000};
+byte J[] = {B00000000,B00011100,B00001000,B00001000,B00001000,B00101000,B00111000,B00000000};
+byte K[] = {B00000000,B00100100,B00101000,B00110000,B00101000,B00100100,B00100100,B00000000};
+byte L[] = {B00000000,B00100000,B00100000,B00100000,B00100000,B00100000,B00111100,B00000000};
+byte M[] = {B00000000,B00000000,B01000100,B10101010,B10010010,B10000010,B10000010,B00000000};
+byte N[] = {B00000000,B00100010,B00110010,B00101010,B00100110,B00100010,B00000000,B00000000};
+byte O[] = {B00000000,B00111100,B01000010,B01000010,B01000010,B01000010,B00111100,B00000000};
+byte P[] = {B00000000,B00111000,B00100100,B00100100,B00111000,B00100000,B00100000,B00000000};
+byte Q[] = {B00000000,B00111100,B01000010,B01000010,B01000010,B01000110,B00111110,B00000001};
+byte R[] = {B00000000,B00111000,B00100100,B00100100,B00111000,B00100100,B00100100,B00000000};
+byte S[] = {B00000000,B00111100,B00100000,B00111100,B00000100,B00000100,B00111100,B00000000};
+byte T[] = {B00000000,B01111100,B00010000,B00010000,B00010000,B00010000,B00010000,B00000000};
+byte U[] = {B00000000,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000,B00000000};
+byte V[] = {B00000000,B00100010,B00100010,B00100010,B00010100,B00010100,B00001000,B00000000};
+byte W[] = {B00000000,B10000010,B10010010,B01010100,B01010100,B00101000,B00000000,B00000000};
+byte X[] = {B00000000,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B00000000};
+byte Y[] = {B00000000,B01000100,B00101000,B00010000,B00010000,B00010000,B00010000,B00000000};
+byte Z[] = {B00000000,B00111100,B00000100,B00001000,B00010000,B00100000,B00111100,B00000000};
+
+float timeCount = 0;
+
+void setup()
+{
+ // Open serial port
+ Serial.begin(9600);
+
+ // Set all used pins to OUTPUT
+ // This is very important! If the pins are set to input
+ // the display will be very dim.
+ for (byte i = 2; i <= 13; i++)
+ pinMode(i, OUTPUT);
+ pinMode(A0, OUTPUT);
+ pinMode(A1, OUTPUT);
+ pinMode(A2, OUTPUT);
+ pinMode(A3, OUTPUT);
+}
+
+void loop() {
+ // This could be rewritten to not use a delay, which would make it appear brighter
+delay(5);
+timeCount += 1;
+
+if(timeCount < 20)
+{
+drawScreen(A);
+}
+else if (timeCount < 40)
+{
+drawScreen(R);
+}
+else if (timeCount < 60)
+{
+drawScreen(D);
+}
+else if (timeCount < 80)
+{
+drawScreen(U);
+}
+else if (timeCount < 100)
+{
+drawScreen(I);
+}
+else if (timeCount < 120)
+{
+drawScreen(N);
+}
+else if (timeCount < 140) {
+ drawScreen(O);
+}
+else if (timeCount < 160)
+{
+drawScreen(ALL);
+}
+else if (timeCount < 180)
+{
+drawScreen(ALL);
+}
+else {
+// back to the start
+timeCount = 0;
+}
+}
+ void drawScreen(byte buffer2[])
+ {
+ // Turn on each row in series
+ for (byte i = 0; i < 8; i++) // count next row
+ {
+ digitalWrite(rows[i], HIGH); //initiate whole row
+ for (byte a = 0; a < 8; a++) // count next row
+ {
+ // if You set (~buffer2[i] >> a) then You will have positive
+ digitalWrite(col[a], (buffer2[i] >> a) & 0x01); // initiate whole column
+
+ delayMicroseconds(100); // uncoment deley for diferent speed of display
+ //delayMicroseconds(1000);
+ //delay(10);
+ //delay(100);
+
+ digitalWrite(col[a], 1); // reset whole column
+ }
+ digitalWrite(rows[i], LOW); // reset whole row
+ // otherwise last row will intersect with next row
+ }
+}
+//
+ /* this is siplest resemplation how for loop is working with each row.
+ digitalWrite(COL_1, (~b >> 0) & 0x01); // Get the 1st bit: 10000000
+ digitalWrite(COL_2, (~b >> 1) & 0x01); // Get the 2nd bit: 01000000
+ digitalWrite(COL_3, (~b >> 2) & 0x01); // Get the 3rd bit: 00100000
+ digitalWrite(COL_4, (~b >> 3) & 0x01); // Get the 4th bit: 00010000
+ digitalWrite(COL_5, (~b >> 4) & 0x01); // Get the 5th bit: 00001000
+ digitalWrite(COL_6, (~b >> 5) & 0x01); // Get the 6th bit: 00000100
+ digitalWrite(COL_7, (~b >> 6) & 0x01); // Get the 7th bit: 00000010
+ digitalWrite(COL_8, (~b >> 7) & 0x01); // Get the 8th bit: 00000001
+}*/ \ No newline at end of file