byte _[] = {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
byte A[] = {1,1,1,1,1,1,1,1, 0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 1,1,1,1,1,1,1,1};
byte B[] = {0,1,1,1,0,1,1,0, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,1,1,1,1,1,1,1};
byte C[] = {1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 0,1,0,0,0,0,1,0, 0,0,1,1,1,1,0,0};
byte D[] = {0,0,1,1,1,1,0,0, 0,1,0,0,0,0,1,0, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1};
byte E[] = {1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,0,0,0,1,0,0,1, 1,1,1,1,1,1,1,1};
byte F[] = {0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 1,1,1,1,1,1,1,1};
byte G[] = {0,1,1,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,0};
byte H[] = {1,1,1,1,1,1,1,1, 0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0, 0,0,0,1,0,0,0,0, 1,1,1,1,1,1,1,1};
byte I[] = {1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1};
byte J[] = {0,1,1,1,1,1,1,1, 1,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 1,0,0,1,0,0,0,0, 0,1,1,0,0,0,0,0};
byte K[] = {1,0,0,0,0,0,0,1, 0,1,0,0,0,0,1,0, 0,0,1,0,0,1,0,0, 0,0,0,1,1,0,0,0, 1,1,1,1,1,1,1,1};
byte L[] = {1,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1};
byte M[] = {1,1,1,1,1,1,1,1, 0,0,0,0,0,0,1,0, 0,0,0,0,0,1,0,0, 0,0,0,0,0,0,1,0, 1,1,1,1,1,1,1,1};
byte N[] = {1,1,1,1,1,1,1,1, 0,0,1,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,1,0,0, 1,1,1,1,1,1,1,1};
byte O[] = {0,1,1,1,1,1,1,0, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,1, 0,1,1,1,1,1,1,0};
byte P[] = {0,0,0,0,0,1,1,0, 0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 0,0,0,0,1,0,0,1, 1,1,1,1,1,1,1,1};
byte Q[] = {1,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,0, 1,0,1,0,0,0,0,1, 1,0,0,0,0,0,0,1, 0,1,1,1,1,1,1,0};
byte R[] = {1,0,0,0,0,1,1,0, 0,1,0,0,1,0,0,1, 0,0,1,0,1,0,0,1, 0,0,0,1,1,0,0,1, 1,1,1,1,1,1,1,1};
byte S[] = {0,1,1,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,1,0,0,0,1, 1,0,0,0,1,1,1,0};
byte T[] = {0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,1, 0,0,0,0,0,0,0,1};
byte U[] = {0,1,1,1,1,1,1,1, 1,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,1};
byte V[] = {0,0,1,1,1,1,1,1, 0,1,0,0,0,0,0,0, 1,0,0,0,0,0,0,0, 0,1,0,0,0,0,0,0, 0,0,1,1,1,1,1,1};
byte W[] = {1,1,1,1,1,1,1,1, 0,1,0,0,0,0,0,0, 0,0,1,0,0,0,0,0, 0,1,0,0,0,0,0,0, 1,1,1,1,1,1,1,1};
byte X[] = {1,1,0,0,0,0,1,1, 0,0,1,0,0,1,0,0, 0,0,0,1,1,0,0,0, 0,0,1,0,0,1,0,0, 1,1,0,0,0,0,1,1};
byte Y[] = {0,0,0,0,0,0,1,1, 0,0,0,0,0,1,0,0, 1,1,1,1,1,0,0,0, 0,0,0,0,0,1,0,0, 0,0,0,0,0,0,1,1};
byte Z[] = {1,0,0,0,0,0,1,1, 1,0,0,0,0,1,0,1, 1,0,0,0,1,0,0,1, 1,0,0,1,0,0,0,1, 1,1,1,0,0,0,0,1};
String str, newStr;
int letterSpace = 5;
int i;
float delayTime=1;
int state = 500;
void setup() {
Serial.begin(9600);
for (i = 2; i < 10 ; i++ ) {
pinMode(i, OUTPUT); // leduri
}
pinMode(A0, INPUT_PULLUP); // senzor efect Hall
// text initial de afisat
str = String("HELLO");
}
void printLetter(byte letter[]) {
int y = 0;
// afisez pe rand fiecare linie din litera
for (y = 0; y < 8; y++) {
digitalWrite(y + 2, letter[y]);
}
delay(delayTime);
for (y = 0; y < 8; y++) {
digitalWrite(y + 2, letter[y + 8]);
}
delay(delayTime);
for (y = 0; y < 8; y++) {
digitalWrite(y + 2, letter[y + 16]);
}
delay(delayTime);
for (y = 0; y < 8; y++) {
digitalWrite(y + 2, letter[y + 24]);
}
delay(delayTime);
for (y = 0; y < 8; y++) {
digitalWrite(y + 2, letter[y + 32]);
}
delay(delayTime);
// dezactivez ledurile pentru a avea spatiu intre litere
for (y = 0; y < 8; y++) {
digitalWrite(y + 2, 0);
}
delay(letterSpace);
}
void chooseLetter(char letter) {
// identific litera curenta
switch (letter) {
case 'A':
printLetter(A);
break;
case 'B':
printLetter(B);
break;
case 'C':
printLetter(C);
break;
case 'D':
printLetter(D);
break;
case 'E':
printLetter(E);
break;
case 'F':
printLetter(F);
break;
case 'G':
printLetter(G);
break;
case 'H':
printLetter(H);
break;
case 'I':
printLetter(I);
break;
case 'J':
printLetter(J);
break;
case 'K':
printLetter(K);
break;
case 'L':
printLetter(L);
break;
case 'M':
printLetter(M);
break;
case 'N':
printLetter(N);
break;
case 'O':
printLetter(O);
break;
case 'P':
printLetter(P);
break;
case 'Q':
printLetter(Q);
break;
case 'R':
printLetter(R);
break;
case 'S':
printLetter(S);
break;
case 'T':
printLetter(T);
break;
case 'U':
printLetter(U);
break;
case 'V':
printLetter(V);
break;
case 'W':
printLetter(W);
break;
case 'X':
printLetter(X);
break;
case 'Y':
printLetter(Y);
break;
case 'Z':
printLetter(Z);
break;
default:
printLetter(_);
break;
}
}
void displayString(String s) {
for (i = str.length() - 1; i >= 0; i--) {
chooseLetter(str[i]);
}
}
void loop() {
if (Serial.available() > 0) {
newStr = Serial.readString();
if (newStr != "\n") {
str = String(newStr);
}
}
state = analogRead(A0);
if (state < 538) {
displayString(str);
} else {
state = analogRead(A0);
}
}