Archiwa tagu: klawiatura

Matryca LED sterowana klawiaturą membranową

Cześć, To mój drugi projekt dotyczący matryc LED, tym razem wyświetlany tekst będziemy wprowadzać za pomocą klawiatury membranowej. W dużej części korzystamy tutaj z programu z poprzedniego wpisu na temat Matrycy LED z przesuwającym, wcześniej ustawionym tekstem. Części potrzebne do realizacji projektu to: płytka Arduino UNO matrycaLED 8x8 ze sterownikiem MAX7219 klawiatura membranowa Program jest napisany w taki sposób aby można było użyć dowolnej liczby matryc Schemat: Sketch:   #include <LedControl.h> #include <Keypad.h> int DIN = 12; int CS =  11; int CLK = 10; int ilosc_ekranow = 2; //String tekscik = "PRZYKLADOWY TEKST: WWW.ABC-RC.PL"; char po_zamianie; String napis; byte ascii_table[130][8]; LedControl lc=LedControl(DIN,CLK,CS,0); const byte ROWS = 4; //four rows const byte COLS = 4; //four columns //define the cymbols on the buttons of the keypads char hexaKeys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','S','D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad //initialize an instance of class NewKeypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void wypelnij() { ascii_table[32][0]=B00000000; ascii_table[32][1]=B00000000; ascii_table[32][2]=B00000000; ascii_table[32][3]=B00000000; ascii_table[32][4]=B00000000; ascii_table[32][7]=5; ascii_table[33][0]=B00000000; ascii_table[33][1]=B01011111; ascii_table[33][2]=B00000000; ascii_table[33][7]=3; ascii_table[34][0]=B00000000; ascii_table[34][1]=B00001110; ascii_table[34][2]=B00000000; ascii_table[34][3]=B00001110; ascii_table[34][4]=B00000000; ascii_table[34][7]=5; ascii_table[35][0]=B00000000; ascii_table[35][1]=B00010100; ascii_table[35][2]=B01111111; ascii_table[35][3]=B00010100; ascii_table[35][4]=B01111111; ascii_table[35][5]=B00010100; ascii_table[35][6]=B00000000; ascii_table[35][7]=7; ascii_table[36][0]=B00000000; ascii_table[36][1]=B00100100; ascii_table[36][2]=B00101010; ascii_table[36][3]=B01111111; ascii_table[36][4]=B00101010; ascii_table[36][5]=B00100100; ascii_table[36][6]=B00000000; ascii_table[36][7]=7; ascii_table[37][0]=B00000000; ascii_table[37][1]=B01100010; ascii_table[37][2]=B01100100; ascii_table[37][3]=B00001000; ascii_table[37][4]=B00010011; ascii_table[37][5]=B00100011; ascii_table[37][6]=B00000000; ascii_table[37][7]=7; ascii_table[38][0]=B00000000; ascii_table[38][1]=B01010000; ascii_table[38][2]=B00100010; ascii_table[38][3]=B01010101; ascii_table[38][4]=B01001001; ascii_table[38][5]=B00110110; ascii_table[38][6]=B00000000; ascii_table[38][7]=7; ascii_table[39][0]=B00000000; ascii_table[39][1]=B00000011; ascii_table[39][2]=B00000101; ascii_table[39][3]=B00000000; ascii_table[39][7]=4; ascii_table[40][0]=B00000000; ascii_table[40][1]=B01000001; ascii_table[40][2]=B00100010; ascii_table[40][3]=B00011100; ascii_table[40][4]=B00000000; ascii_table[40][7]=5; ascii_table[41][0]=B00000000; ascii_table[41][1]=B00011100; ascii_table[41][2]=B00100010; ascii_table[41][3]=B01000001; ascii_table[41][4]=B00000000; ascii_table[41][7]=5; ascii_table[42][0]=B00000000; ascii_table[42][1]=B00010100; ascii_table[42][2]=B00001000; ascii_table[42][3]=B00111110; ascii_table[42][4]=B00001000; ascii_table[42][5]=B00010100; ascii_table[42][6]=B00000000; ascii_table[42][7]=7; ascii_table[43][0]=B00000000; ascii_table[43][1]=B00001000; ascii_table[43][2]=B00001000; ascii_table[43][3]=B00111110; ascii_table[43][4]=B00001000; ascii_table[43][5]=B00001000; ascii_table[43][6]=B00000000; ascii_table[43][7]=7; ascii_table[44][0]=B00000000; ascii_table[44][1]=B00110000; ascii_table[44][2]=B01010000; ascii_table[44][3]=B00000000; ascii_table[44][7]=4; ascii_table[45][0]=B00000000; ascii_table[45][1]=B00001000; ascii_table[45][2]=B00001000; ascii_table[45][3]=B00001000; ascii_table[45][4]=B00001000; ascii_table[45][5]=B00000000; ascii_table[45][7]=6; ascii_table[46][0]=B00000000; ascii_table[46][1]=B01100000; ascii_table[46][2]=B01100000; ascii_table[46][3]=B00000000; ascii_table[46][7]=4; ascii_table[47][0]=B00000000; ascii_table[47][1]=B00000010; ascii_table[47][2]=B00000100; ascii_table[47][3]=B00001000; ascii_table[47][4]=B00010000; ascii_table[47][5]=B00100000; ascii_table[47][6]=B00000000; ascii_table[47][7]=7; ascii_table[48][0]=B00000000; ascii_table[48][1]=B00111110; ascii_table[48][2]=B01000001; ascii_table[48][3]=B01000001; ascii_table[48][4]=B00111110; ascii_table[48][5]=B00000000; ascii_table[48][7]=6; ascii_table[49][0]=B00000000; ascii_table[49][1]=B01000000; ascii_table[49][2]=B01111111; ascii_table[49][3]=B01000010; ascii_table[49][4]=B00000000; ascii_table[49][7]=5; ascii_table[50][0]=B00000000; ascii_table[50][1]=B01000110; ascii_table[50][2]=B01001001; ascii_table[50][3]=B01010001; ascii_table[50][4]=B01100011; ascii_table[50][5]=B01000010; ascii_table[50][6]=B00000000; ascii_table[50][7]=7; ascii_table[51][0]=B00000000; ascii_table[51][1]=B00110001; ascii_table[51][2]=B01001011; ascii_table[51][3]=B01000101; ascii_table[51][4]=B01000001; ascii_table[51][5]=B00100001; ascii_table[51][6]=B00000000; ascii_table[51][7]=7; ascii_table[52][0]=B00000000; ascii_table[52][1]=B00010000; ascii_table[52][2]=B01111111; ascii_table[52][3]=B00010010; ascii_table[52][4]=B00010100; ascii_table[52][5]=B00011000; ascii_table[52][6]=B00000000; ascii_table[52][7]=7; ascii_table[53][0]=B00000000; ascii_table[53][1]=B00111001; ascii_table[53][2]=B01000101; ascii_table[53][3]=B01000101; ascii_table[53][4]=B01000101; ascii_table[53][5]=B00100111; ascii_table[53][6]=B00000000; ascii_table[53][7]=7; ascii_table[54][0]=B00000000; ascii_table[54][1]=B00110000; ascii_table[54][2]=B01001001; ascii_table[54][3]=B01001001; ascii_table[54][4]=B01001010; ascii_table[54][5]=B00111100; ascii_table[54][6]=B00000000; ascii_table[54][7]=7; ascii_table[55][0]=B00000000; ascii_table[55][1]=B00000111; ascii_table[55][2]=B00001001; ascii_table[55][3]=B01110001; ascii_table[55][4]=B00000001; ascii_table[55][5]=B00000011; ascii_table[55][6]=B00000000; ascii_table[55][7]=7; ascii_table[56][0]=B00000000; ascii_table[56][1]=B00110110; ascii_table[56][2]=B01001001; ascii_table[56][3]=B01001001; ascii_table[56][4]=B01001001; ascii_table[56][5]=B00110110; ascii_table[56][6]=B00000000; ascii_table[56][7]=7; ascii_table[57][0]=B00000000; ascii_table[57][1]=B00011110; ascii_table[57][2]=B00101001; ascii_table[57][3]=B01001001; ascii_table[57][4]=B01001001; ascii_table[57][5]=B00000110; ascii_table[57][6]=B00000000; ascii_table[57][7]=7; ascii_table[58][0]=B00000000; ascii_table[58][1]=B00110110; ascii_table[58][2]=B00110110; ascii_table[58][3]=B00000000; ascii_table[58][7]=4; ascii_table[59][0]=B00000000; ascii_table[59][1]=B00110110; ascii_table[59][2]=B01010110; ascii_table[59][3]=B00000000; ascii_table[59][7]=4; ascii_table[60][0]=B00000000; ascii_table[60][1]=B01000001; ascii_table[60][2]=B00100010; ascii_table[60][3]=B00010100; ascii_table[60][4]=B00001000; ascii_table[60][5]=B00000000; ascii_table[60][7]=6; ascii_table[61][0]=B00000000; ascii_table[61][1]=B00010100; ascii_table[61][2]=B00010100; ascii_table[61][3]=B00010100; ascii_table[61][4]=B00010100; ascii_table[61][5]=B00010100; ascii_table[61][6]=B00000000; ascii_table[61][7]=7; ascii_table[62][0]=B00000000; ascii_table[62][1]=B00001000; ascii_table[62][2]=B00010100; ascii_table[62][3]=B00100010; ascii_table[62][4]=B01000001; ascii_table[62][5]=B00000000; ascii_table[62][7]=6; ascii_table[63][0]=B00000000; ascii_table[63][1]=B00000110; ascii_table[63][2]=B00001001; ascii_table[63][3]=B01010001; ascii_table[63][4]=B00000001; ascii_table[63][5]=B00000010; ascii_table[63][6]=B00000000; ascii_table[63][7]=7; ascii_table[64][0]=B00000000; ascii_table[64][1]=B00111110; ascii_table[64][2]=B01000001; ascii_table[64][3]=B01111001; ascii_table[64][4]=B01001001; ascii_table[64][5]=B00110010; ascii_table[64][6]=B00000000; ascii_table[64][7]=7; ascii_table[65][0]=B00000000; ascii_table[65][1]=B01111110; ascii_table[65][2]=B00010001; ascii_table[65][3]=B00010001; ascii_table[65][4]=B00010001; ascii_table[65][5]=B01111110; ascii_table[65][6]=B00000000; ascii_table[65][7]=7; ascii_table[66][0]=B00000000; ascii_table[66][1]=B00110110; ascii_table[66][2]=B01001001; ascii_table[66][3]=B01001001; ascii_table[66][4]=B01001001; ascii_table[66][5]=B01111111; ascii_table[66][6]=B00000000; ascii_table[66][7]=7; ascii_table[67][0]=B00000000; ascii_table[67][1]=B00100010; ascii_table[67][2]=B01000001; ascii_table[67][3]=B01000001; ascii_table[67][4]=B01000001; ascii_table[67][5]=B00111110; ascii_table[67][6]=B00000000; ascii_table[67][7]=7; ascii_table[68][0]=B00000000; ascii_table[68][1]=B00011100; ascii_table[68][2]=B00100010; ascii_table[68][3]=B01000001; ascii_table[68][4]=B01000001; ascii_table[68][5]=B01111111; ascii_table[68][6]=B00000000; ascii_table[68][7]=7; ascii_table[69][0]=B00000000; ascii_table[69][1]=B01000001; ascii_table[69][2]=B01001001; ascii_table[69][3]=B01001001; ascii_table[69][4]=B01111111; ascii_table[69][5]=B00000000; ascii_table[69][7]=6; ascii_table[70][0]=B00000000; ascii_table[70][1]=B00000001; ascii_table[70][2]=B00001001; ascii_table[70][3]=B00001001; ascii_table[70][4]=B01111111; ascii_table[70][5]=B00000000; ascii_table[70][7]=6; ascii_table[71][0]=B00000000; ascii_table[71][1]=B01111010; ascii_table[71][2]=B01001001; ascii_table[71][3]=B01001001; ascii_table[71][4]=B01000001; ascii_table[71][5]=B00111110; ascii_table[71][6]=B00000000; ascii_table[71][7]=7; ascii_table[72][0]=B00000000; ascii_table[72][1]=B01111111; ascii_table[72][2]=B00001000; ascii_table[72][3]=B00001000; ascii_table[72][4]=B01111111; ascii_table[72][5]=B00000000; ascii_table[72][7]=6; ascii_table[73][0]=B00000000; ascii_table[73][1]=B01000001; ascii_table[73][2]=B01111111; ascii_table[73][3]=B01000001; ascii_table[73][4]=B00000000; ascii_table[73][7]=5; ascii_table[74][0]=B00000000; ascii_table[74][1]=B00000001; ascii_table[74][2]=B01111111; ascii_table[74][3]=B01000001; ascii_table[74][4]=B01000000; ascii_table[74][5]=B00100000; ascii_table[74][6]=B00000000; ascii_table[74][7]=7; ascii_table[75][0]=B00000000; ascii_table[75][1]=B01000001; ascii_table[75][2]=B00100010; ascii_table[75][3]=B00010100; ascii_table[75][4]=B00001000; ascii_table[75][5]=B01111111; ascii_table[75][6]=B00000000; ascii_table[75][7]=7; ascii_table[76][0]=B00000000; ascii_table[76][1]=B01000000; ascii_table[76][2]=B01000000; ascii_table[76][3]=B01000000; ascii_table[76][4]=B01111111; ascii_table[76][5]=B00000000; ascii_table[76][7]=6; ascii_table[77][0]=B00000000; ascii_table[77][1]=B01111111; ascii_table[77][2]=B00000010; ascii_table[77][3]=B00001100; ascii_table[77][4]=B00000010; ascii_table[77][5]=B01111111; ascii_table[77][6]=B00000000; ascii_table[77][7]=7; ascii_table[78][0]=B00000000; ascii_table[78][1]=B01111111; ascii_table[78][2]=B00010000; ascii_table[78][3]=B00001000; ascii_table[78][4]=B00000100; ascii_table[78][5]=B01111111; ascii_table[78][6]=B00000000; ascii_table[78][7]=7; ascii_table[79][0]=B00000000; ascii_table[79][1]=B00111110; ascii_table[79][2]=B01000001; ascii_table[79][3]=B01000001; ascii_table[79][4]=B01000001; ascii_table[79][5]=B00111110; ascii_table[79][6]=B00000000; ascii_table[79][7]=7; ascii_table[80][0]=B00000000; ascii_table[80][1]=B00000110; ascii_table[80][2]=B00001001; ascii_table[80][3]=B00001001; ascii_table[80][4]=B00001001; ascii_table[80][5]=B01111111; ascii_table[80][6]=B00000000; ascii_table[80][7]=7; ascii_table[81][0]=B00000000; ascii_table[81][1]=B01011110; ascii_table[81][2]=B00100001; ascii_table[81][3]=B01010001; ascii_table[81][4]=B01000001; ascii_table[81][5]=B00111110; ascii_table[81][6]=B00000000; ascii_table[81][7]=7; ascii_table[82][0]=B00000000; ascii_table[82][1]=B01000110; ascii_table[82][2]=B00101001; ascii_table[82][3]=B00011001; ascii_table[82][4]=B00001001; ascii_table[82][5]=B01111111; ascii_table[82][6]=B00000000; ascii_table[82][7]=7; ascii_table[83][0]=B00000000; ascii_table[83][1]=B00110001; ascii_table[83][2]=B01001001; ascii_table[83][3]=B01001001; ascii_table[83][4]=B01001001; ascii_table[83][5]=B01000110; ascii_table[83][6]=B00000000; ascii_table[83][7]=7; ascii_table[84][0]=B00000000; ascii_table[84][1]=B00000001; ascii_table[84][2]=B00000001; ascii_table[84][3]=B01111111; ascii_table[84][4]=B00000001; ascii_table[84][5]=B00000001; ascii_table[84][6]=B00000000; ascii_table[84][7]=7; ascii_table[85][0]=B00000000; ascii_table[85][1]=B00111111; ascii_table[85][2]=B01000000; ascii_table[85][3]=B01000000; ascii_table[85][4]=B01000000; ascii_table[85][5]=B00111111; ascii_table[85][6]=B00000000; ascii_table[85][7]=7; ascii_table[86][0]=B00000000; ascii_table[86][1]=B00011111; ascii_table[86][2]=B00100000; ascii_table[86][3]=B01000000; ascii_table[86][4]=B00100000; ascii_table[86][5]=B00011111; ascii_table[86][6]=B00000000; ascii_table[86][7]=7; ascii_table[87][0]=B00000000; ascii_table[87][1]=B00111111; ascii_table[87][2]=B01000000; ascii_table[87][3]=B00111000; ascii_table[87][4]=B01000000; ascii_table[87][5]=B00111111; ascii_table[87][6]=B00000000; ascii_table[87][7]=7; ascii_table[88][0]=B00000000; ascii_table[88][1]=B01100011; ascii_table[88][2]=B00010100; ascii_table[88][3]=B00001000; ascii_table[88][4]=B00010100; ascii_table[88][5]=B01100011; ascii_table[88][6]=B00000000; ascii_table[88][7]=7; ascii_table[89][0]=B00000000; ascii_table[89][1]=B00000111; ascii_table[89][2]=B00001000; ascii_table[89][3]=B01110000; ascii_table[89][4]=B00001000; ascii_table[89][5]=B00000111; ascii_table[89][6]=B00000000; ascii_table[89][7]=7; ascii_table[90][0]=B00000000; ascii_table[90][1]=B01000011; ascii_table[90][2]=B01000101; ascii_table[90][3]=B01001001; ascii_table[90][4]=B01010001; ascii_table[90][5]=B01100001; ascii_table[90][6]=B00000000; ascii_table[90][7]=7; ascii_table[91][0]=B00000000; ascii_table[91][1]=B01000001; ascii_table[91][2]=B01000001; ascii_table[91][3]=B01111111; ascii_table[91][4]=B00000000; ascii_table[91][7]=5; ascii_table[93][0]=B00000000; ascii_table[93][1]=B01111111; ascii_table[93][2]=B01000001; ascii_table[93][3]=B01000001; ascii_table[93][4]=B00000000; ascii_table[93][7]=5; ascii_table[94][0]=B00000000; ascii_table[94][1]=B00000100; ascii_table[94][2]=B00000010; ascii_table[94][3]=B00000001; ascii_table[94][4]=B00000010; ascii_table[94][5]=B00000100; ascii_table[94][6]=B00000000; ascii_table[94][7]=7; ascii_table[95][0]=B00000000; ascii_table[95][1]=B01000000; ascii_table[95][2]=B01000000; ascii_table[95][3]=B01000000; ascii_table[95][4]=B01000000; ascii_table[95][5]=B00000000; ascii_table[95][7]=6; ascii_table[123][0]=B00000000; ascii_table[123][1]=B01000001; ascii_table[123][2]=B00110110; ascii_table[123][3]=B00001000; ascii_table[123][4]=B00000000; ascii_table[123][7]=5; ascii_table[124][0]=B00000000; ascii_table[124][1]=B01111111; ascii_table[124][2]=B00000000; ascii_table[124][7]=3; ascii_table[125][0]=B00000000; ascii_table[125][1]=B00001000; ascii_table[125][2]=B00110110; ascii_table[125][3]=B01000001; ascii_table[125][4]=B00000000; ascii_table[125][7]=5; ascii_table[126][0]=B00000000; ascii_table[126][1]=B00001000; ascii_table[126][2]=B00010000; ascii_table[126][3]=B00001000; ascii_table[126][4]=B00001000; ascii_table[126][5]=B00010000; ascii_table[126][6]=B00000000; ascii_table[126][7]=7; } void setup(){ for (int i=0;i<ilosc_ekranow;i++)    //petla inicjalizujaca matryce { lc.shutdown(i,false);      // wyjscie z trybu uspienia lc.setIntensity(i,1);      // ustawienie jasnosci lc.clearDisplay(i);        // czyszczenie ekranu } /*for (int j1=0; j1<90; j1++)      //petla do wypelnienia ascii { for (int i1=0; i1<8; i1++) { ascii_table[i1][j1]=0; } }*/ } void loop(){ wypelnij(); zczytanie_z_klawiatury(); while(customKeypad.getKey()!='D'){ slideAscii(napis);} napis=""; } void printAscii(int ekran, int indeks)        //funkcja do stałego napisu { int i = 0; for(i=0;i<8;i++) { lc.setRow(ekran,i,ascii_table[indeks][i]); delay(50); } } int ile_lini(String tekst)              //funkcja liczaca ilosc lini do wyswietlenia { int liczbowa[tekst.length()];                   //tablica zbierajaca liczby char znakowa[tekst.length()];                   //tablica zbierajaca znaki int linie;                                        //zmienna pomocnicza liczaca linie tekst.toCharArray(znakowa, tekst.length()+1);     //zamiana stringa na tablice char for (int i=0; i<tekst.length();i++) { liczbowa[i]=zamien_ascii(znakowa[i]);             //zamiana znakow na liczby linie = linie + ascii_table[liczbowa[i]][7];      //zliczenie ile lini z 7 pola ascii } return linie; } void slideAscii(String tekst) { int lini = ile_lini(tekst);                         //ilosc lini tekstu byte pattern[lini+(16*ilosc_ekranow)];              //tablica ktora finalnie bedziemy wyswietlac int liczbowa[tekst.length()];                         //fragment przekopiowany z funkcji ile_lini char znakowa[tekst.length()];                         // tekst.toCharArray(znakowa, tekst.length()+1);         // for (int i=0; i<tekst.length();i++)                   // {                                                 // liczbowa[i]=zamien_ascii(znakowa[i]);           // //Serial.println(liczbowa[i]);                  // }                                               // int licznik = 0;                                      //zmienna liczaca ktory raz petla sie wypelnia for (int k=0;k<(8*ilosc_ekranow);k++)                 //wypelnienie pierwszego ekranu w pattern B00000000 { pattern[licznik]=B00000000; Serial.println(pattern[licznik]); licznik++; } for (int i=0; i<tekst.length();i++)                             //wypelnianie napisem tablicy pattern {                                                           //zalezne od dlugosci tekstu //Serial.print("liczba: "); //Serial.println(i); for (int j=ascii_table[liczbowa[i]][7]; j>0;j--)          //oraz od ilosci lini w danym znaku { pattern[licznik] = ascii_table[liczbowa[i]][j-1]; //Serial.println(pattern[licznik]); licznik++; } } for (int k=0;k<(8*ilosc_ekranow);k++)                 //wypelnanie koncowego ekranu w pattern B00000000 { pattern[licznik]=B00000000; Serial.println(pattern[licznik]); licznik++; } for(int k=0;k<(lini+(8*ilosc_ekranow));k++) { int pasy=0; for (int i=0;i<ilosc_ekranow;i++)                     //petla wypisujaca na matrycy { for (int j=0;j<8;j++)                         //petla wewnetrzna wypisujaca na matrycy { lc.setRow(i,j,pattern[pasy+k]);           //lc.setRow funkcja wypisujaca pasy++;                                   //pattern jest obiektem ktory wypisujemy }                                         //pasy poniewaz jest to dodatkowa petla liczaca }                                                 // +k aby napis mogl sie przesuwac delay(30);                                                  //opoznienie czyli predkosc przesuwania sie tekstu } } int zamien_ascii(char znak)       //zamiana znaku na ascii { if (znak==' '){return 32;} if (znak=='!'){return 33;} if (znak=='"'){return 34;} if (znak=='#'){return 35;} if (znak=='$'){return 36;} if (znak=='%'){return 37;} if (znak=='&'){return 38;} if (znak=='('){return 40;} if (znak==')'){return 41;} if (znak=='*'){return 42;} if (znak=='+'){return 43;} if (znak==','){return 44;} if (znak=='-'){return 45;} if (znak=='.'){return 46;} if (znak=='/'){return 47;} if (znak=='0'){return 48;} if (znak=='1'){return 49;} if (znak=='2'){return 50;} if (znak=='3'){return 51;} if (znak=='4'){return 52;} if (znak=='5'){return 53;} if (znak=='6'){return 54;} if (znak=='7'){return 55;} if (znak=='8'){return 56;} if (znak=='9'){return 57;} if (znak==':'){return 58;} if (znak==';'){return 59;} if (znak=='<'){return 60;} if (znak=='='){return 61;} if (znak=='>'){return 62;} if (znak=='?'){return 63;} if (znak=='@'){return 64;} if (znak=='A'){return 65;} if (znak=='B'){return 66;} if (znak=='C'){return 67;} if (znak=='D'){return 68;} if (znak=='E'){return 69;} if (znak=='F'){return 70;} if (znak=='G'){return 71;} if (znak=='H'){return 72;} if (znak=='I'){return 73;} if (znak=='J'){return 74;} if (znak=='K'){return 75;} if (znak=='L'){return 76;} if (znak=='M'){return 77;} if (znak=='N'){return 78;} if (znak=='O'){return 79;} if (znak=='P'){return 80;} if (znak=='Q'){return 81;} if (znak=='R'){return 82;} if (znak=='S'){return 83;} if (znak=='T'){return 84;} if (znak=='U'){return 85;} if (znak=='V'){return 86;} if (znak=='W'){return 87;} if (znak=='X'){return 88;} if (znak=='Y'){return 89;} if (znak=='Z'){return 90;} if (znak=='['){return 91;} if (znak==']'){return 93;} if (znak=='^'){return 94;} if (znak=='_'){return 95;} if (znak=='{'){return 123;} if (znak=='|'){return 124;} if (znak=='}'){return 125;} if (znak=='~'){return 126;} return 32; } void zczytanie_z_klawiatury() { char tekst[20]; String znak[10]; int i=0; int j=0; bool koniec=0; while (koniec==0) { char customKey = customKeypad.getKey(); if (customKey) { tekst[i] = customKey; Serial.println("znak jaki dostalismy"); Serial.println(tekst[i]); if (tekst[i]=='S') { koniec=1; for (int k=0; k<j+1;k++) { if (znak[k] == "1")      {po_zamianie='.'; napis += po_zamianie;} if (znak[k] == "11")     {po_zamianie=','; napis += po_zamianie;} if (znak[k] == "111")    {po_zamianie='!'; napis += po_zamianie;} if (znak[k] == "1111")   {po_zamianie='?'; napis += po_zamianie;} if (znak[k] == "2")      {po_zamianie='A'; napis += po_zamianie;} if (znak[k] == "22")     {po_zamianie='B'; napis += po_zamianie;} if (znak[k] == "222")    {po_zamianie='C'; napis += po_zamianie;} if (znak[k] == "3")      {po_zamianie='D'; napis += po_zamianie;} if (znak[k] == "33")     {po_zamianie='E'; napis += po_zamianie;} if (znak[k] == "333")    {po_zamianie='F'; napis += po_zamianie;} if (znak[k] == "4")      {po_zamianie='G'; napis += po_zamianie;} if (znak[k] == "44")     {po_zamianie='H'; napis += po_zamianie;} if (znak[k] == "444")    {po_zamianie='I'; napis += po_zamianie;} if (znak[k] == "5")      {po_zamianie='J'; napis += po_zamianie;} if (znak[k] == "55")     {po_zamianie='K'; napis += po_zamianie;} if (znak[k] == "555")    {po_zamianie='L'; napis += po_zamianie;} if (znak[k] == "6")      {po_zamianie='M'; napis += po_zamianie;} if (znak[k] == "66")     {po_zamianie='N'; napis += po_zamianie;} if (znak[k] == "666")    {po_zamianie='O'; napis += po_zamianie;} if (znak[k] == "7")      {po_zamianie='P'; napis += po_zamianie;} if (znak[k] == "77")     {po_zamianie='Q'; napis += po_zamianie;} if (znak[k] == "777")    {po_zamianie='R'; napis += po_zamianie;} if (znak[k] == "7777")   {po_zamianie='S'; napis += po_zamianie;} if (znak[k] == "8")      {po_zamianie='T'; napis += po_zamianie;} if (znak[k] == "88")     {po_zamianie='U'; napis += po_zamianie;} if (znak[k] == "888")    {po_zamianie='V'; napis += po_zamianie;} if (znak[k] == "9")      {po_zamianie='W'; napis += po_zamianie;} if (znak[k] == "99")     {po_zamianie='X'; napis += po_zamianie;} if (znak[k] == "999")    {po_zamianie='Y'; napis += po_zamianie;} if (znak[k] == "9999")   {po_zamianie='Z'; napis += po_zamianie;} if (znak[k] == "A")      {po_zamianie='1'; napis += po_zamianie;} if (znak[k] == "AA")     {po_zamianie='2'; napis += po_zamianie;} if (znak[k] == "AAA")    {po_zamianie='3'; napis += po_zamianie;} if (znak[k] == "B")      {po_zamianie='4'; napis += po_zamianie;} if (znak[k] == "BB")     {po_zamianie='5'; napis += po_zamianie;} if (znak[k] == "BBB")    {po_zamianie='6'; napis += po_zamianie;} if (znak[k] == "C")      {po_zamianie='7'; napis += po_zamianie;} if (znak[k] == "CC")     {po_zamianie='8'; napis += po_zamianie;} if (znak[k] == "CCC")    {po_zamianie='9'; napis += po_zamianie;} if (znak[k] == "0")      {po_zamianie=' '; napis += po_zamianie;} if (znak[k] == "00")     {po_zamianie='0'; napis += po_zamianie;} } Serial.println("tablica po zamianie:"); /* for (int k=0; k<j+1;k++) { Serial.print(po_zamianie[k]); }*/ Serial.println(""); Serial.println("napis:"); Serial.println(napis); } if (tekst[i]=='*') { j++; i=0; } else { Serial.print("znak["); Serial.print(j); Serial.println("]"); znak[j]=znak[j]+tekst[i]; Serial.println(znak[j]); i++; } Serial.println("uzyskana tablica"); for (int k=0; k<j+1; k++) { Serial.println(znak[k]); } Serial.println(""); } } }   Całość jest jasno wytłumaczona na filmie: https://www.youtube.com/watch?v=VOWYsQDwFF0   Polecamy:  Płytka stykowa  Arduino UNO R3

Przesuwający tekst – MATRYCA LED 8×8

Cześć, Mój projekt w założeniu miał wyświetlać przesuwający się tekst na matrycach LED 8x8. Części potrzebne do realizacji projektu to: -płytka Arduino UNO http://abc-rc.pl/Arduino-UNO-R3-CH340 -matrycaLED 8x8 ze sterownikiem MAX7219 http://abc-rc.pl/MAX7219-LED-red Program jest napisany w taki sposób aby można było użyć dowolnej liczby matryc Schemat:   Sketch: #include <LedControl.h> int DIN = 12; int CS =  11; int CLK = 10; int ilosc_ekranow = 2; String tekscik = "PRZYKLADOWY TEKST: WWW.ABC-RC.PL"; byte ascii_table[130][8]; LedControl lc=LedControl(DIN,CLK,CS,0); void wypelnij() { ascii_table[32][0]=B00000000; ascii_table[32][1]=B00000000; ascii_table[32][2]=B00000000; ascii_table[32][3]=B00000000; ascii_table[32][4]=B00000000; ascii_table[32][7]=5; ascii_table[33][0]=B00000000; ascii_table[33][1]=B01011111; ascii_table[33][2]=B00000000; ascii_table[33][7]=3; ascii_table[34][0]=B00000000; ascii_table[34][1]=B00001110; ascii_table[34][2]=B00000000; ascii_table[34][3]=B00001110; ascii_table[34][4]=B00000000; ascii_table[34][7]=5; ascii_table[35][0]=B00000000; ascii_table[35][1]=B00010100; ascii_table[35][2]=B01111111; ascii_table[35][3]=B00010100; ascii_table[35][4]=B01111111; ascii_table[35][5]=B00010100; ascii_table[35][6]=B00000000; ascii_table[35][7]=7; ascii_table[36][0]=B00000000; ascii_table[36][1]=B00100100; ascii_table[36][2]=B00101010; ascii_table[36][3]=B01111111; ascii_table[36][4]=B00101010; ascii_table[36][5]=B00100100; ascii_table[36][6]=B00000000; ascii_table[36][7]=7; ascii_table[37][0]=B00000000; ascii_table[37][1]=B01100010; ascii_table[37][2]=B01100100; ascii_table[37][3]=B00001000; ascii_table[37][4]=B00010011; ascii_table[37][5]=B00100011; ascii_table[37][6]=B00000000; ascii_table[37][7]=7; ascii_table[38][0]=B00000000; ascii_table[38][1]=B01010000; ascii_table[38][2]=B00100010; ascii_table[38][3]=B01010101; ascii_table[38][4]=B01001001; ascii_table[38][5]=B00110110; ascii_table[38][6]=B00000000; ascii_table[38][7]=7; ascii_table[39][0]=B00000000; ascii_table[39][1]=B00000011; ascii_table[39][2]=B00000101; ascii_table[39][3]=B00000000; ascii_table[39][7]=4; ascii_table[40][0]=B00000000; ascii_table[40][1]=B01000001; ascii_table[40][2]=B00100010; ascii_table[40][3]=B00011100; ascii_table[40][4]=B00000000; ascii_table[40][7]=5; ascii_table[41][0]=B00000000; ascii_table[41][1]=B00011100; ascii_table[41][2]=B00100010; ascii_table[41][3]=B01000001; ascii_table[41][4]=B00000000; ascii_table[41][7]=5; ascii_table[42][0]=B00000000; ascii_table[42][1]=B00010100; ascii_table[42][2]=B00001000; ascii_table[42][3]=B00111110; ascii_table[42][4]=B00001000; ascii_table[42][5]=B00010100; ascii_table[42][6]=B00000000; ascii_table[42][7]=7; ascii_table[43][0]=B00000000; ascii_table[43][1]=B00001000; ascii_table[43][2]=B00001000; ascii_table[43][3]=B00111110; ascii_table[43][4]=B00001000; ascii_table[43][5]=B00001000; ascii_table[43][6]=B00000000; ascii_table[43][7]=7; ascii_table[44][0]=B00000000; ascii_table[44][1]=B00110000; ascii_table[44][2]=B01010000; ascii_table[44][3]=B00000000; ascii_table[44][7]=4; ascii_table[45][0]=B00000000; ascii_table[45][1]=B00001000; ascii_table[45][2]=B00001000; ascii_table[45][3]=B00001000; ascii_table[45][4]=B00001000; ascii_table[45][5]=B00000000; ascii_table[45][7]=6; ascii_table[46][0]=B00000000; ascii_table[46][1]=B01100000; ascii_table[46][2]=B01100000; ascii_table[46][3]=B00000000; ascii_table[46][7]=4; ascii_table[47][0]=B00000000; ascii_table[47][1]=B00000010; ascii_table[47][2]=B00000100; ascii_table[47][3]=B00001000; ascii_table[47][4]=B00010000; ascii_table[47][5]=B00100000; ascii_table[47][6]=B00000000; ascii_table[47][7]=7; ascii_table[48][0]=B00000000; ascii_table[48][1]=B00111110; ascii_table[48][2]=B01000001; ascii_table[48][3]=B01000001; ascii_table[48][4]=B00111110; ascii_table[48][5]=B00000000; ascii_table[48][7]=6; ascii_table[49][0]=B00000000; ascii_table[49][1]=B01000000; ascii_table[49][2]=B01111111; ascii_table[49][3]=B01000010; ascii_table[49][4]=B00000000; ascii_table[49][7]=5; ascii_table[50][0]=B00000000; ascii_table[50][1]=B01000110; ascii_table[50][2]=B01001001; ascii_table[50][3]=B01010001; ascii_table[50][4]=B01100011; ascii_table[50][5]=B01000010; ascii_table[50][6]=B00000000; ascii_table[50][7]=7; ascii_table[51][0]=B00000000; ascii_table[51][1]=B00110001; ascii_table[51][2]=B01001011; ascii_table[51][3]=B01000101; ascii_table[51][4]=B01000001; ascii_table[51][5]=B00100001; ascii_table[51][6]=B00000000; ascii_table[51][7]=7; ascii_table[52][0]=B00000000; ascii_table[52][1]=B00010000; ascii_table[52][2]=B01111111; ascii_table[52][3]=B00010010; ascii_table[52][4]=B00010100; ascii_table[52][5]=B00011000; ascii_table[52][6]=B00000000; ascii_table[52][7]=7; ascii_table[53][0]=B00000000; ascii_table[53][1]=B00111001; ascii_table[53][2]=B01000101; ascii_table[53][3]=B01000101; ascii_table[53][4]=B01000101; ascii_table[53][5]=B00100111; ascii_table[53][6]=B00000000; ascii_table[53][7]=7; ascii_table[54][0]=B00000000; ascii_table[54][1]=B00110000; ascii_table[54][2]=B01001001; ascii_table[54][3]=B01001001; ascii_table[54][4]=B01001010; ascii_table[54][5]=B00111100; ascii_table[54][6]=B00000000; ascii_table[54][7]=7; ascii_table[55][0]=B00000000; ascii_table[55][1]=B00000111; ascii_table[55][2]=B00001001; ascii_table[55][3]=B01110001; ascii_table[55][4]=B00000001; ascii_table[55][5]=B00000011; ascii_table[55][6]=B00000000; ascii_table[55][7]=7; ascii_table[56][0]=B00000000; ascii_table[56][1]=B00110110; ascii_table[56][2]=B01001001; ascii_table[56][3]=B01001001; ascii_table[56][4]=B01001001; ascii_table[56][5]=B00110110; ascii_table[56][6]=B00000000; ascii_table[56][7]=7; ascii_table[57][0]=B00000000; ascii_table[57][1]=B00011110; ascii_table[57][2]=B00101001; ascii_table[57][3]=B01001001; ascii_table[57][4]=B01001001; ascii_table[57][5]=B00000110; ascii_table[57][6]=B00000000; ascii_table[57][7]=7; ascii_table[58][0]=B00000000; ascii_table[58][1]=B00110110; ascii_table[58][2]=B00110110; ascii_table[58][3]=B00000000; ascii_table[58][7]=4; ascii_table[59][0]=B00000000; ascii_table[59][1]=B00110110; ascii_table[59][2]=B01010110; ascii_table[59][3]=B00000000; ascii_table[59][7]=4; ascii_table[60][0]=B00000000; ascii_table[60][1]=B01000001; ascii_table[60][2]=B00100010; ascii_table[60][3]=B00010100; ascii_table[60][4]=B00001000; ascii_table[60][5]=B00000000; ascii_table[60][7]=6; ascii_table[61][0]=B00000000; ascii_table[61][1]=B00010100; ascii_table[61][2]=B00010100; ascii_table[61][3]=B00010100; ascii_table[61][4]=B00010100; ascii_table[61][5]=B00010100; ascii_table[61][6]=B00000000; ascii_table[61][7]=7; ascii_table[62][0]=B00000000; ascii_table[62][1]=B00001000; ascii_table[62][2]=B00010100; ascii_table[62][3]=B00100010; ascii_table[62][4]=B01000001; ascii_table[62][5]=B00000000; ascii_table[62][7]=6; ascii_table[63][0]=B00000000; ascii_table[63][1]=B00000110; ascii_table[63][2]=B00001001; ascii_table[63][3]=B01010001; ascii_table[63][4]=B00000001; ascii_table[63][5]=B00000010; ascii_table[63][6]=B00000000; ascii_table[63][7]=7; ascii_table[64][0]=B00000000; ascii_table[64][1]=B00111110; ascii_table[64][2]=B01000001; ascii_table[64][3]=B01111001; ascii_table[64][4]=B01001001; ascii_table[64][5]=B00110010; ascii_table[64][6]=B00000000; ascii_table[64][7]=7; ascii_table[65][0]=B00000000; ascii_table[65][1]=B01111110; ascii_table[65][2]=B00010001; ascii_table[65][3]=B00010001; ascii_table[65][4]=B00010001; ascii_table[65][5]=B01111110; ascii_table[65][6]=B00000000; ascii_table[65][7]=7; ascii_table[66][0]=B00000000; ascii_table[66][1]=B00110110; ascii_table[66][2]=B01001001; ascii_table[66][3]=B01001001; ascii_table[66][4]=B01001001; ascii_table[66][5]=B01111111; ascii_table[66][6]=B00000000; ascii_table[66][7]=7; ascii_table[67][0]=B00000000; ascii_table[67][1]=B00100010; ascii_table[67][2]=B01000001; ascii_table[67][3]=B01000001; ascii_table[67][4]=B01000001; ascii_table[67][5]=B00111110; ascii_table[67][6]=B00000000; ascii_table[67][7]=7; ascii_table[68][0]=B00000000; ascii_table[68][1]=B00011100; ascii_table[68][2]=B00100010; ascii_table[68][3]=B01000001; ascii_table[68][4]=B01000001; ascii_table[68][5]=B01111111; ascii_table[68][6]=B00000000; ascii_table[68][7]=7; ascii_table[69][0]=B00000000; ascii_table[69][1]=B01000001; ascii_table[69][2]=B01001001; ascii_table[69][3]=B01001001; ascii_table[69][4]=B01111111; ascii_table[69][5]=B00000000; ascii_table[69][7]=6; ascii_table[70][0]=B00000000; ascii_table[70][1]=B00000001; ascii_table[70][2]=B00001001; ascii_table[70][3]=B00001001; ascii_table[70][4]=B01111111; ascii_table[70][5]=B00000000; ascii_table[70][7]=6; ascii_table[71][0]=B00000000; ascii_table[71][1]=B01111010; ascii_table[71][2]=B01001001; ascii_table[71][3]=B01001001; ascii_table[71][4]=B01000001; ascii_table[71][5]=B00111110; ascii_table[71][6]=B00000000; ascii_table[71][7]=7; ascii_table[72][0]=B00000000; ascii_table[72][1]=B01111111; ascii_table[72][2]=B00001000; ascii_table[72][3]=B00001000; ascii_table[72][4]=B01111111; ascii_table[72][5]=B00000000; ascii_table[72][7]=6; ascii_table[73][0]=B00000000; ascii_table[73][1]=B01000001; ascii_table[73][2]=B01111111; ascii_table[73][3]=B01000001; ascii_table[73][4]=B00000000; ascii_table[73][7]=5; ascii_table[74][0]=B00000000; ascii_table[74][1]=B00000001; ascii_table[74][2]=B01111111; ascii_table[74][3]=B01000001; ascii_table[74][4]=B01000000; ascii_table[74][5]=B00100000; ascii_table[74][6]=B00000000; ascii_table[74][7]=7; ascii_table[75][0]=B00000000; ascii_table[75][1]=B01000001; ascii_table[75][2]=B00100010; ascii_table[75][3]=B00010100; ascii_table[75][4]=B00001000; ascii_table[75][5]=B01111111; ascii_table[75][6]=B00000000; ascii_table[75][7]=7; ascii_table[76][0]=B00000000; ascii_table[76][1]=B01000000; ascii_table[76][2]=B01000000; ascii_table[76][3]=B01000000; ascii_table[76][4]=B01111111; ascii_table[76][5]=B00000000; ascii_table[76][7]=6; ascii_table[77][0]=B00000000; ascii_table[77][1]=B01111111; ascii_table[77][2]=B00000010; ascii_table[77][3]=B00001100; ascii_table[77][4]=B00000010; ascii_table[77][5]=B01111111; ascii_table[77][6]=B00000000; ascii_table[77][7]=7; ascii_table[78][0]=B00000000; ascii_table[78][1]=B01111111; ascii_table[78][2]=B00010000; ascii_table[78][3]=B00001000; ascii_table[78][4]=B00000100; ascii_table[78][5]=B01111111; ascii_table[78][6]=B00000000; ascii_table[78][7]=7; ascii_table[79][0]=B00000000; ascii_table[79][1]=B00111110; ascii_table[79][2]=B01000001; ascii_table[79][3]=B01000001; ascii_table[79][4]=B01000001; ascii_table[79][5]=B00111110; ascii_table[79][6]=B00000000; ascii_table[79][7]=7; ascii_table[80][0]=B00000000; ascii_table[80][1]=B00000110; ascii_table[80][2]=B00001001; ascii_table[80][3]=B00001001; ascii_table[80][4]=B00001001; ascii_table[80][5]=B01111111; ascii_table[80][6]=B00000000; ascii_table[80][7]=7; ascii_table[81][0]=B00000000; ascii_table[81][1]=B01011110; ascii_table[81][2]=B00100001; ascii_table[81][3]=B01010001; ascii_table[81][4]=B01000001; ascii_table[81][5]=B00111110; ascii_table[81][6]=B00000000; ascii_table[81][7]=7; ascii_table[82][0]=B00000000; ascii_table[82][1]=B01000110; ascii_table[82][2]=B00101001; ascii_table[82][3]=B00011001; ascii_table[82][4]=B00001001; ascii_table[82][5]=B01111111; ascii_table[82][6]=B00000000; ascii_table[82][7]=7; ascii_table[83][0]=B00000000; ascii_table[83][1]=B00110001; ascii_table[83][2]=B01001001; ascii_table[83][3]=B01001001; ascii_table[83][4]=B01001001; ascii_table[83][5]=B01000110; ascii_table[83][6]=B00000000; ascii_table[83][7]=7; ascii_table[84][0]=B00000000; ascii_table[84][1]=B00000001; ascii_table[84][2]=B00000001; ascii_table[84][3]=B01111111; ascii_table[84][4]=B00000001; ascii_table[84][5]=B00000001; ascii_table[84][6]=B00000000; ascii_table[84][7]=7; ascii_table[85][0]=B00000000; ascii_table[85][1]=B00111111; ascii_table[85][2]=B01000000; ascii_table[85][3]=B01000000; ascii_table[85][4]=B01000000; ascii_table[85][5]=B00111111; ascii_table[85][6]=B00000000; ascii_table[85][7]=7; ascii_table[86][0]=B00000000; ascii_table[86][1]=B00011111; ascii_table[86][2]=B00100000; ascii_table[86][3]=B01000000; ascii_table[86][4]=B00100000; ascii_table[86][5]=B00011111; ascii_table[86][6]=B00000000; ascii_table[86][7]=7; ascii_table[87][0]=B00000000; ascii_table[87][1]=B00111111; ascii_table[87][2]=B01000000; ascii_table[87][3]=B00111000; ascii_table[87][4]=B01000000; ascii_table[87][5]=B00111111; ascii_table[87][6]=B00000000; ascii_table[87][7]=7; ascii_table[88][0]=B00000000; ascii_table[88][1]=B01100011; ascii_table[88][2]=B00010100; ascii_table[88][3]=B00001000; ascii_table[88][4]=B00010100; ascii_table[88][5]=B01100011; ascii_table[88][6]=B00000000; ascii_table[88][7]=7; ascii_table[89][0]=B00000000; ascii_table[89][1]=B00000111; ascii_table[89][2]=B00001000; ascii_table[89][3]=B01110000; ascii_table[89][4]=B00001000; ascii_table[89][5]=B00000111; ascii_table[89][6]=B00000000; ascii_table[89][7]=7; ascii_table[90][0]=B00000000; ascii_table[90][1]=B01000011; ascii_table[90][2]=B01000101; ascii_table[90][3]=B01001001; ascii_table[90][4]=B01010001; ascii_table[90][5]=B01100001; ascii_table[90][6]=B00000000; ascii_table[90][7]=7; ascii_table[91][0]=B00000000; ascii_table[91][1]=B01000001; ascii_table[91][2]=B01000001; ascii_table[91][3]=B01111111; ascii_table[91][4]=B00000000; ascii_table[91][7]=5; ascii_table[93][0]=B00000000; ascii_table[93][1]=B01111111; ascii_table[93][2]=B01000001; ascii_table[93][3]=B01000001; ascii_table[93][4]=B00000000; ascii_table[93][7]=5; ascii_table[94][0]=B00000000; ascii_table[94][1]=B00000100; ascii_table[94][2]=B00000010; ascii_table[94][3]=B00000001; ascii_table[94][4]=B00000010; ascii_table[94][5]=B00000100; ascii_table[94][6]=B00000000; ascii_table[94][7]=7; ascii_table[95][0]=B00000000; ascii_table[95][1]=B01000000; ascii_table[95][2]=B01000000; ascii_table[95][3]=B01000000; ascii_table[95][4]=B01000000; ascii_table[95][5]=B00000000; ascii_table[95][7]=6; ascii_table[123][0]=B00000000; ascii_table[123][1]=B01000001; ascii_table[123][2]=B00110110; ascii_table[123][3]=B00001000; ascii_table[123][4]=B00000000; ascii_table[123][7]=5; ascii_table[124][0]=B00000000; ascii_table[124][1]=B01111111; ascii_table[124][2]=B00000000; ascii_table[124][7]=3; ascii_table[125][0]=B00000000; ascii_table[125][1]=B00001000; ascii_table[125][2]=B00110110; ascii_table[125][3]=B01000001; ascii_table[125][4]=B00000000; ascii_table[125][7]=5; ascii_table[126][0]=B00000000; ascii_table[126][1]=B00001000; ascii_table[126][2]=B00010000; ascii_table[126][3]=B00001000; ascii_table[126][4]=B00001000; ascii_table[126][5]=B00010000; ascii_table[126][6]=B00000000; ascii_table[126][7]=7; } void setup(){ Serial.begin(9600); for (int i=0;i<ilosc_ekranow;i++)    //petla inicjalizujaca matryce { lc.shutdown(i,false);      // wyjscie z trybu uspienia lc.setIntensity(i,1);      // ustawienie jasnosci lc.clearDisplay(i);        // czyszczenie ekranu } /*for (int j1=0; j1<90; j1++)      //petla do wypelnienia ascii { for (int i1=0; i1<8; i1++) { ascii_table[i1][j1]=0; } }*/ } void loop(){ wypelnij(); slideAscii(tekscik); } void printAscii(int ekran, int indeks)        //funkcja do stałego napisu { int i = 0; for(i=0;i<8;i++) { lc.setRow(ekran,i,ascii_table[indeks][i]); delay(50); } } int ile_lini(String tekst)              //funkcja liczaca ilosc lini do wyswietlenia { int liczbowa[tekst.length()];                   //tablica zbierajaca liczby char znakowa[tekst.length()];                   //tablica zbierajaca znaki int linie;                                        //zmienna pomocnicza liczaca linie tekst.toCharArray(znakowa, tekst.length()+1);     //zamiana stringa na tablice char for (int i=0; i<tekst.length();i++) { liczbowa[i]=zamien_ascii(znakowa[i]);             //zamiana znakow na liczby linie = linie + ascii_table[liczbowa[i]][7];      //zliczenie ile lini z 7 pola ascii } return linie; } void slideAscii(String tekst) { int lini = ile_lini(tekst);                         //ilosc lini tekstu byte pattern[lini+(16*ilosc_ekranow)];              //tablica ktora finalnie bedziemy wyswietlac int liczbowa[tekst.length()];                         //fragment przekopiowany z funkcji ile_lini char znakowa[tekst.length()];                         // tekst.toCharArray(znakowa, tekst.length()+1);         // for (int i=0; i<tekst.length();i++)                   // {                                                 // liczbowa[i]=zamien_ascii(znakowa[i]);           // //Serial.println(liczbowa[i]);                  // }                                               // int licznik = 0;                                      //zmienna liczaca ktory raz petla sie wypelnia for (int k=0;k<(8*ilosc_ekranow);k++)                 //wypelnienie pierwszego ekranu w pattern B00000000 { pattern[licznik]=B00000000; Serial.println(pattern[licznik]); licznik++; } for (int i=0; i<tekst.length();i++)                             //wypelnianie napisem tablicy pattern {                                                           //zalezne od dlugosci tekstu //Serial.print("liczba: "); //Serial.println(i); for (int j=ascii_table[liczbowa[i]][7]; j>0;j--)          //oraz od ilosci lini w danym znaku { pattern[licznik] = ascii_table[liczbowa[i]][j-1]; //Serial.println(pattern[licznik]); licznik++; } } for (int k=0;k<(8*ilosc_ekranow);k++)                 //wypelnanie koncowego ekranu w pattern B00000000 { pattern[licznik]=B00000000; Serial.println(pattern[licznik]); licznik++; } for(int k=0;k<(lini+(8*ilosc_ekranow));k++) { int pasy=0; for (int i=0;i<ilosc_ekranow;i++)                     //petla wypisujaca na matrycy { for (int j=0;j<8;j++)                         //petla wewnetrzna wypisujaca na matrycy { lc.setRow(i,j,pattern[pasy+k]);           //lc.setRow funkcja wypisujaca pasy++;                                   //pattern jest obiektem ktory wypisujemy }                                         //pasy poniewaz jest to dodatkowa petla liczaca }                                                 // +k aby napis mogl sie przesuwac delay(30);                                                  //opoznienie czyli predkosc przesuwania sie tekstu } } int zamien_ascii(char znak)       //zamiana znaku na ascii { if (znak==' '){return 32;} if (znak=='!'){return 33;} if (znak=='"'){return 34;} if (znak=='#'){return 35;} if (znak=='$'){return 36;} if (znak=='%'){return 37;} if (znak=='&'){return 38;} if (znak=='('){return 40;} if (znak==')'){return 41;} if (znak=='*'){return 42;} if (znak=='+'){return 43;} if (znak==','){return 44;} if (znak=='-'){return 45;} if (znak=='.'){return 46;} if (znak=='/'){return 47;} if (znak=='0'){return 48;} if (znak=='1'){return 49;} if (znak=='2'){return 50;} if (znak=='3'){return 51;} if (znak=='4'){return 52;} if (znak=='5'){return 53;} if (znak=='6'){return 54;} if (znak=='7'){return 55;} if (znak=='8'){return 56;} if (znak=='9'){return 57;} if (znak==':'){return 58;} if (znak==';'){return 59;} if (znak=='<'){return 60;} if (znak=='='){return 61;} if (znak=='>'){return 62;} if (znak=='?'){return 63;} if (znak=='@'){return 64;} if (znak=='A'){return 65;} if (znak=='B'){return 66;} if (znak=='C'){return 67;} if (znak=='D'){return 68;} if (znak=='E'){return 69;} if (znak=='F'){return 70;} if (znak=='G'){return 71;} if (znak=='H'){return 72;} if (znak=='I'){return 73;} if (znak=='J'){return 74;} if (znak=='K'){return 75;} if (znak=='L'){return 76;} if (znak=='M'){return 77;} if (znak=='N'){return 78;} if (znak=='O'){return 79;} if (znak=='P'){return 80;} if (znak=='Q'){return 81;} if (znak=='R'){return 82;} if (znak=='S'){return 83;} if (znak=='T'){return 84;} if (znak=='U'){return 85;} if (znak=='V'){return 86;} if (znak=='W'){return 87;} if (znak=='X'){return 88;} if (znak=='Y'){return 89;} if (znak=='Z'){return 90;} if (znak=='['){return 91;} if (znak==']'){return 93;} if (znak=='^'){return 94;} if (znak=='_'){return 95;} if (znak=='{'){return 123;} if (znak=='|'){return 124;} if (znak=='}'){return 125;} if (znak=='~'){return 126;} return 32; } Całość jest jasno wytłumaczona na filmie: https://www.youtube.com/watch?v=vL3h7gUxsD0  

Zamek szyfrowany na Arduino

Witam, chciałbym przedstawić projekt prototypu zamka szyfrowanego na platformie Arduino. Czego potrzebujemy: Arduino Serwomechanizm (dla stabilności układu proponuję podłączyć przy pomocy dodatkowego zasilania razem ze stabilizatorem napięcia i kondensatorami filtrującymi) Wyświetlacz, w naszym przypadku jest to 4x20, może być również 2x16, podłączony przez I2C. Płytka stykowa Zworki   Projekt zawiera interfejs wprowadzania hasła przy pomocy klawiatury membranowej, który jest wyświetlany na wyświetlaczu 4x20. Hasło jest ustawiane w kodzie programu. Serwo jest naszym zamkiem, które przy poprawnym wprowadzeniu hasła,  gdy chcemy otworzyć zamek, zmienia swój kąt o 90 stopni. W przypadku, kiedy nasz sejf jest otwarty i wprowadzimy hasło ponownie, położenie serwa zmieni się o 90 stopni w odwrotnym kierunku, czyli wróci do pozycji początkowej. Na wyświetlaczu zostają wyświetlane komunikaty typu "Sejf zamknięty", "Sejf otwarty" lub "Zle haslo". Możemy to wszystko zmieniać i edytować na własne potrzeby w kodzie programu. Projekt można rozbudować na wiele różnych sposobów np. dodając czytnik kart i w ten sposób otwierać nasz zamek, dodać czujniki ruchu/ kontaktrony i stworzyć np. prosty alarm. By ułatwić i zachęcić do rozwoju tego projektu zamieszczam poniżej swój kod programu, który może pomóc przy korzystaniu z wpisywania hasła, wyświetlaniu komunikatów itp.   Schemat podłączenia:     Zrzuty ekranu z kodu programu: