So I'm a beginner at Arduino and I have to light up an LED grid to show digits from 0-9. I wrote a bit of code (with the help of some people) and it's like 90% done but there's this ONE problem. I used a switch case to light up the LEDs (so if the user writes a 5 then the switch case will make the LEDs show the digit 5) but it only shows up for like a SPLIT second.Any fixes for this?
#define ROW_1 3
#define ROW_2 4
#define ROW_3 5
#define ROW_4 6
#define ROW_5 7
#define COL_1 8
#define COL_2 9
#define COL_3 10
#define COL_4 11
#define COL_5 12
#define COL_6 13
const byte rows[] = {
ROW_1, ROW_2, ROW_3, ROW_4, ROW_5
};
byte Zero[] = {B011110, B010010, B010010, B010010, B011110};
byte One[] = {B001100, B000100, B000100, B000100, B000100};
byte Two[] = {B011110, B000010, B011110, B010000, B011110};
byte Three[] = {B011110, B000010, B001110, B000010, B011110};
byte Four[] = {B010010, B010010, B011110, B000010, B000010};
byte Five[] = {B011110, B010000, B011110, B000010, B011110};
byte Six[] = {B011110, B010000, B011110, B010010, B011110};
byte Seven[] = {B011100, B000100, B000100, B000100, B000100};
byte Eight[] = {B011110, B010010, B011110, B010010, B011110};
byte Nine[] = {B011110, B010010, B011110, B000010, B011110};
void setColumns(byte b) {
digitalWrite(COL_1, (~b >> 0) & 0x01);
digitalWrite(COL_2, (~b >> 1) & 0x01);
digitalWrite(COL_3, (~b >> 2) & 0x01);
digitalWrite(COL_4, (~b >> 3) & 0x01);
digitalWrite(COL_5, (~b >> 4) & 0x01);
digitalWrite(COL_6, (~b >> 5) & 0x01);
}
void drawScreen(byte buffer2[]){
for (byte i = 0; i < 5; i++) {
setColumns(buffer2[i]);
digitalWrite(rows[i], HIGH);
digitalWrite(rows[i], LOW);
}
}
void setup() {
Serial.begin(9600);
for (byte i = 2; i <= 13; i++)
pinMode(i, OUTPUT);
}
void loop()
{
int digit;
if(Serial.available()) {
digit = Serial.read();
Serial.println(digit);
}
switch (digit) {
case 48:
drawScreen(Zero);
break;
case 49:
drawScreen(One);
break;
case 50:
drawScreen(Two);
break;
case 51:
drawScreen(Three);
break;
case 52:
drawScreen(Four);
break;
case 53:
drawScreen(Five);
break;
case 54:
drawScreen(Six);
break;
case 55:
drawScreen(Seven);
break;
case 56:
drawScreen(Eight);
break;
case 57:
drawScreen(Nine);
break;
}
}
48
is the ASCII code for the text character0