#include //knihovna pro SPI #include //knihovna pro SD kartu #include //knihovna pro I2C char znak; //načtený znak z klávesnice char INklav[100]; //pole max. 100 znaků načtených z klávesnice String INklavesnice; //řetězec znaků načtených z klávesnice boolean stavSD; int promenne[25]; //řetězec proměnných String BASICpole[100]; //pole 100 řádků int q; Sd2Card card; SdVolume volume; SdFile root; const int chipSelect = 4; //CS SD karty TwoWire WIRE2 (2,I2C_FAST_MODE); //I2C port 2 #define Wire WIRE2 //I2C port 2 #define LED 0x22 //I2C adresa LED #define RTC 0x68 //I2C adresa RTC /////////////////////////////po spuštění/////////////////////////////////////////////////////////////////////////////////////// void setup() { pinMode(LED_BUILTIN, OUTPUT); //zabudovaná LED jako výstup digitalWrite(LED_BUILTIN, HIGH); //zhasni LED Serial.begin(115200); //nastavení sériového portu Wire.begin(); //start I2C Wire.beginTransmission(LED); //zhasni LED Wire.write(0x00); //zhasni LED Wire.endTransmission(); //zhasni LED Wire.beginTransmission(0x20); //vynuluj porty LPT Wire.write(0x00); //vynuluj porty LPT Wire.endTransmission(); //vynuluj porty LPT Wire.beginTransmission(0x21); //vynuluj porty LPT Wire.write(0x00); //vynuluj porty LPT Wire.endTransmission(); //vynuluj porty LPT if (!SD.begin(chipSelect)) { stavSD = false; //není vložena } stavSD = true; //je vložena info(); //vypiš informace o systému klavesnice(); //vstup z klávesnice - čekání na enter smaz(); //smaž obrazovku } ///////////////////////hlavní smyčka/////////////////////////////////////////////////////// void loop() { Serial.print("?: "); klavesnice(); //vstup z klávesnice vyber(); //výběr příkazu } //////////////////////výběr příkazu////////////////////////////////////////////////////////// void vyber() { if(INklavesnice == "help") { help(); //help } else if(INklavesnice == "info") { info(); //info } else if(INklavesnice == "i2c scan") { i2c_scan(); //i2c scan } else if(INklav[0] == 'o' && INklav[1] == 'u' && INklav[2] == 't') { out(); //výstup na port } else if(INklav[0] == 'i' && INklav[1] == 'n' && INklav[2] == ' ') { in(); //vstup z portu } else if(INklavesnice == "sd ls") { SDvypis(); //výpis z SD karty } else if(INklavesnice == "sd info") { SDinfo(); //info o SD kartě } else if(INklav[0] == 'c' && INklav[1] == 'e' && INklav[2] == 'k') { cekej(); //čekání } else if(INklavesnice == "clr") { smaz(); //smaž obrazovku } else if(INklav[0] >= 97 && INklav[0] <= 122 && INklav[1] == '=' && INklav[2] != '=') { vytvorPROMENOU(); //zapíše proměnnou } else if(INklav[0] >= 97 && INklav[0] <= 122 && INklav[1] == '=' && INklav[2] == '=') { vypisPROMENOU(); //vypíše proměnnou } else if(INklav[1] == '+' && INklav[3] == '=') { secti(); //sčítání proměnných } else if(INklav[1] == '-' && INklav[3] == '=') { odecti(); //odčítání proměnných } else if(INklav[1] == '*' && INklav[3] == '=') { nasob(); //násobení proměnných } else if(INklav[1] == '/' && INklav[3] == '=') { vydel(); //dělení proměnných } else if(INklavesnice == "ret") { ret(); //návrat do hlavní smyčky } else if(INklav[0] >= 48 && INklav[0] <= 57 && INklav[1] >= 48 && INklav[1] <= 57 && INklav[2] == ' ') { ulozPRIKAZ(); //pokud jsou napsána 2 čísla a pak mezera tak ulož příkaz do pole } else if(INklav[0] >= 48 && INklav[0] <= 57 && INklav[1] >= 48 && INklav[1] <= 57 && INklav[2] == '=' && INklav[3] == '=') { nactiPRIKAZ(); //pokud jsou napsána 2 čísla a pak 2 = tak načti a zobraz příkaz z pole } else if(INklavesnice == "list") { list(); //vypiš paměť příkazů } else if(INklavesnice == "run") { beh(); //běh programu z paměti příkazů } else if(INklavesnice == "") { //pokud byl smazaný řádek v paměti programů a nic neobsahuje tak nic nedělej } else if(INklav[0] == 'j' && INklav[1] == 'm' && INklav[2] == 'p') { jump(); //skok v programu na řádek - jmp XX } else if(INklav[0] == 's' && INklav[1] == 'd' && INklav[2] == ' ' && INklav[3] == 's' && INklav[4] == 'a' && INklav[5] == 'v' && INklav[6] == 'e') { SDsave(); //uložení programu na SD kartu - sd save xxxxxxxxxx } else if(INklav[0] == 's' && INklav[1] == 'd' && INklav[2] == ' ' && INklav[3] == 'l' && INklav[4] == 'o' && INklav[5] == 'a' && INklav[6] == 'd') { SDload(); //načtení programu z SD karty - sd load xxxxxxxxxx } else if(INklav[0] == 's' && INklav[1] == 'd' && INklav[2] == ' ' && INklav[3] == 'd' && INklav[4] == 'e' && INklav[5] == 'l') { SDdel(); //smazání souboru na SD kartě - sd del xxxxxxxxxx } else { Serial.println("Mé možnosti jsou omezené, musíš použít správný příkaz"); } } ///////////////////////podprogram vstupu z klávesnice////////////////////////// void klavesnice() { int x = 0; //proměnná počtu znaků z klávesnice znak = 0; //vynuluj znak do{ if(Serial.available() > 0) //pokud jsou dostupná data { znak = Serial.read(); //načti data do proměnné znak INklav[x] = znak; //ulož znak do pole x++; //zvyš proměnnou počtu znaků } }while(znak != 0x0D); //opakuj pokud nebyl stisknut enter x--; while(x < 21) { INklav[x] = 0; //smaž enter z řetězce x++; } INklavesnice = INklav; //převeď obsah pole do řetězce Serial.print(INklavesnice); Serial.println(" "); } /////////////////////podprogram čtení času/////////////////////////////////////////////////////////////////////// //void nactiRTC /////////////////////////////////podprogram help////////////////////////////////////// void help() { smaz(); //smaž obrazovku Serial.println(F("####################################################################################################")); Serial.println(F("# #")); Serial.println(F("# # # #### # ### #")); Serial.println(F("# # # # # # # #")); Serial.println(F("# ##### #### # ### #")); Serial.println(F("# # # # # # #")); Serial.println(F("# # # #### #### # #")); Serial.println(F("# #")); Serial.println(F("####################################################################################################")); Serial.println(F("# #")); Serial.println(F("# Seznam příkazů: #")); Serial.println(F("# --------------- #")); Serial.println(F("# help - tato nápověda #")); Serial.println(F("# info - informace o systému #")); Serial.println(F("# i2c scan - skenování a výpis zařízení na I2C sběrnici #")); Serial.println(F("# sd del - smaže soubor na sd kartě - sd del 8.3 (8 znaků název . 3 znaky přípona #")); Serial.println(F("# sd ls - výpis souborů na SD kartě #")); Serial.println(F("# sd info - informace o SD kartě #")); Serial.println(F("# out x y - zapiš data v proměnné x na adresu v proměnné y #")); Serial.println(F("# in x y - čti data z adresy v proměnné x do proměnné y #")); Serial.println(F("# cek x - čekej x = 1 - 99999 ms #")); Serial.println(F("# clr - smaž obrazovku #")); Serial.println(F("# x=y - zapiš celé číslo y do proměnné x, x je libovolné malé písmeno #")); Serial.println(F("# x== - vypiš obsah proměnné x #")); Serial.println(F("# x+y=z - sečti proměnné x a y a ulož do z #")); Serial.println(F("# x-y=z - odečti proměnné x a y a ulož do z #")); Serial.println(F("# x*y=z - vynásob proměnné x a y a ulož do z #")); Serial.println(F("# x/y=z - vyděl proměnné x a y a ulož do z #")); Serial.println(F("# ret - návrat do hlavní smyčky #")); Serial.println(F("# xx - uloží příkaz do paměti příkazů, xx je dvouciferné číslo příkazu, pak mezera a příkaz #")); Serial.println(F("# xx== - vypíše příkaz z paměti příkazů, xx je dvouciferné číslo příkazu #")); Serial.println(F("# list - vypíše všechny příkazy z paměti příkazů #")); Serial.println(F("# run - spustí provedení příkazů v paměti příkazů #")); Serial.println(F("# jmp xx - skočí na příkaz číslo xx #")); Serial.println(F("# sd save - uloží příkazy v paměti na SD kartu do souboru - sd save 8.3 #")); Serial.println(F("# sd load - načte příkazy z SD karty ze souboru - sd save 8.3 do paměti programu #")); Serial.println(F("# #")); Serial.println(F("####################################################################################################")); Serial.println(F("# Strana 1/1 # Pro pokračování stiskni Enter #")); Serial.println(F("####################################################################################################")); } ////////////////////////////podprogram info////////////////////////////////////////// void info() { smaz(); //smaž obrazovku Serial.println(F("####################################################################################################")); Serial.println(F("# #")); Serial.println(F("# # # ####### ### #")); Serial.println(F("# ## # # # ## #")); Serial.println(F("# # # # # # # #")); Serial.println(F("# # # # ####### # # #")); Serial.println(F("# # # # # # # #")); Serial.println(F("# # # # # # # #")); Serial.println(F("# # ## # # ## #")); Serial.println(F("# # # # ####### # ### # #")); Serial.println(F("# #")); Serial.println(F("####################################################################################################")); Serial.println(F("# # #")); Serial.println(F("# CPU: STM32F103C8 # čas: #")); Serial.println(F("# RAM: 20kB # datum: #")); Serial.println(F("# FLASH: 128kB # #")); Serial.print(F("# SD karta: ")); if (stavSD == false) { Serial.print("- "); } else { Serial.print("OK "); } Serial.println(F("# #")); Serial.println(F("# # #")); Serial.println(F("# verze SW: 1.0 # #")); Serial.println(F("# # #")); Serial.println(F("# rozlišení obrazu: 100 x 40 znaků # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("# # #")); Serial.println(F("####################################################################################################")); Serial.println(F("# stiskni Enter #")); Serial.println(F("####################################################################################################")); } /////////////////////////////////I2C scan/////////////////////////////////////////// void i2c_scan() { smaz(); //smaž obrazovku Serial.println(F("I2C scan")); byte error, address; int nDevices; Serial.println(F("Skenuji...")); nDevices = 0; for(address = 1; address < 127; address++) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C zařízení nalezeno na adrese 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); nDevices++; } else if (error == 4) { Serial.print("Neznámá chyba na adrese 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("Nenalezeno žádné zařízení"); else Serial.println("Hotovo"); } /////////////////////////////////výpis souborů z SD karty//////////////////////////////////////////////////////////// void SDvypis() { if (!card.init(SPI_HALF_SPEED, chipSelect)) { Serial.println("Chyba SD karty"); } else { if (!volume.init(card)) // otevření SD karty 'volume'/'partition' - musí být FAT16 nebo FAT32 { Serial.println("Nebyl nalezen svazek FAT16/FAT32.\nNaformátuj kartu"); while (1); } uint32_t volumesize; root.openRoot(volume); root.ls(LS_R | LS_SIZE); //výpis souborů s datem a velikostí } } //////////////////////////////////informace o SD kartě////////////////////////////////////////////////////////////// void SDinfo() { if (!card.init(SPI_HALF_SPEED, chipSelect)) { Serial.println("Chyba SD karty"); while (1); } else { // print the type of card Serial.println(); Serial.print("Typ karty: "); switch (card.type()) { case SD_CARD_TYPE_SD1: Serial.println("SD1"); break; case SD_CARD_TYPE_SD2: Serial.println("SD2"); break; case SD_CARD_TYPE_SDHC: Serial.println("SDHC"); break; default: Serial.println("neznámí"); } if (!volume.init(card)) { Serial.println("Nebyl nalezen svazek FAT16/FAT32.\nNaformátuj kartu"); while (1); } Serial.print("Clusters: "); Serial.println(volume.clusterCount()); Serial.print("Blocks x Cluster: "); Serial.println(volume.blocksPerCluster()); Serial.print("Total Blocks: "); Serial.println(volume.blocksPerCluster() * volume.clusterCount()); Serial.println(); uint32_t volumesize; Serial.print("Typ svazku: FAT"); Serial.println(volume.fatType(), DEC); volumesize = volume.blocksPerCluster(); // clusters are collections of blocks volumesize *= volume.clusterCount(); // we'll have a lot of clusters volumesize /= 2; // SD card blocks are always 512 bytes (2 blocks are 1KB) Serial.print("Velikost svazku (Kb): "); Serial.println(volumesize); Serial.print("Velikost svazku (Mb): "); volumesize /= 1024; Serial.println(volumesize); Serial.print("Velikost svazku (Gb): "); Serial.println((float)volumesize / 1024.0); } } //////////////////////////////////ulož na SD kartu//////////////////////////////////////////////////////////////////// void SDsave() { char nazev[13]; int x; //proměnná čísla řádku z příkazu char cislo[2]; //pole pro číslo řádku z příkazu nazev[0] = INklav[8]; //načtení názvu souboru do řetězce nazev nazev[1] = INklav[9]; nazev[2] = INklav[10]; nazev[3] = INklav[11]; nazev[4] = INklav[12]; nazev[5] = INklav[13]; nazev[6] = INklav[14]; nazev[7] = INklav[15]; nazev[8] = INklav[16]; nazev[9] = INklav[17]; nazev[10] = INklav[18]; nazev[11] = INklav[19]; String jmeno = ""; jmeno += nazev; File sd = SD.open(jmeno, FILE_WRITE); //otevře nebo vytvoří soubor s názvem jmeno pro zápis if(sd) { for(int a=0; a<100; a++) //opakuj pro všech 100 řádků { String radek1 = BASICpole[a]; //načti řádek číslo a cislo[0] = radek1[0]; cislo[1] = radek1[1]; x = atoi(cislo); //převeď číslo z pole do int if(x != 0) //pokud číslo řádku není 0 { String radek = ""; radek += radek1; sd.println(radek1); //zapiš řádek //sd.close(); } } sd.close(); Serial.println("uloženo"); } else { Serial.println("chyba"); } } ///////////////////////////////////////načti z SD karty///////////////////////////////////////////////////////////// void SDload() { char nazev[13]; byte zn; //načtený byte z SD int x; //počítadlo znaků String nacteno; char nact[100]; char cislo[2]; nazev[0] = INklav[8]; //načtení názvu souboru do řetězce nazev nazev[1] = INklav[9]; nazev[2] = INklav[10]; nazev[3] = INklav[11]; nazev[4] = INklav[12]; nazev[5] = INklav[13]; nazev[6] = INklav[14]; nazev[7] = INklav[15]; nazev[8] = INklav[16]; nazev[9] = INklav[17]; nazev[10] = INklav[18]; nazev[11] = INklav[19]; String jmeno = ""; jmeno += nazev; File sd = SD.open(jmeno); //otevře soubor s názvem jmeno if(sd) { Serial.print("načítám soubor"); while (sd.available()) //načítání souboru { Serial.print("."); zn = sd.read(); //načti byte ze souboru while (zn != 0x0D || x==100) //opakuj dokud nenarazíš na mezeru nebo dokud nenačteš 100 znaků { nact[x] = zn; //ulož znak do proměnné zn x++; //zvyš počítadlo znaků zn = sd.read(); //načti byte ze souboru } sd.read(); //načti přebytečný byte ze souboru a zahoď ho x = 0; //vynuluj počítadlo znaků nacteno = nact; //překopíruj načtená data cislo[0] = nact[0]; cislo[1] = nact[1]; int a = atoi(cislo); //převeď číslo z pole do int BASICpole[a] = nacteno; //ulož zadaný příkaz do pole příkazů for (int i = 0; i < sizeof (nact); ++ i) nact [i] = (char) 0; //vymaž pole nact } sd.close(); Serial.println(); Serial.println("soubor načten"); } else { Serial.println("chyba načtení souboru"); } } /////////////////////////////////////smaž soubor na SD kartě/////////////////////////////////////////////////////////////// void SDdel() { char nazev[13]; nazev[0] = INklav[7]; //načtení názvu souboru do řetězce nazev nazev[1] = INklav[8]; nazev[2] = INklav[9]; nazev[3] = INklav[10]; nazev[4] = INklav[11]; nazev[5] = INklav[12]; nazev[6] = INklav[13]; nazev[7] = INklav[14]; nazev[8] = INklav[15]; nazev[9] = INklav[16]; nazev[10] = INklav[17]; nazev[11] = INklav[18]; String jmeno = ""; jmeno += nazev; if (!SD.remove(jmeno)) //smaž soubor jmeno { Serial.println("chyba mazání"); } Serial.println("smazáno"); } /////////////////////////////////smazání obrazovky/////////////////////////////////////////////////////////////////// void smaz() { Serial.write(27); //příkazy Serial.print("[2J"); //pro Serial.write(27); //smazání Serial.print("[H"); //obrazovky } ////////////////////////////////////OUT//////////////////////////////////////////////////////////////////////////////// void out() { int a = INklav[4]; //načti název proměnné dat int b = INklav[6]; //načti název proměnné adresy a = a - 97; //převeď proměnnou na pozici v poli b = b - 97; //převeď proměnnou na pozici v poli Wire.beginTransmission(promenne[b]); //odešli na adresu v proměnné b Wire.write(promenne[a]); //data v proměnné a Wire.endTransmission(); //a konec } /////////////////////////////////////IN//////////////////////////////////////////////////////////////////////////////// void in() { int a = INklav[3]; //načti název proměnné adresy int b = INklav[5]; //načti název proměnné dat a = a - 97; //převeď proměnnou na pozici v poli b = b - 97; //převeď proměnnou na pozici v poli Wire.requestFrom(promenne[a], 1); //načti 1 byte z adresy a while(Wire.available() > 0) //pokud jsou dostupná data { promenne[b] = Wire.read(); //načti je do proměnné b Serial.print("Načteno = "); Serial.println(promenne[b]); } } /////////////////////////////////////////////čekání//////////////////////////////////////////////////////////////////// void cekej() { char pole[5]; pole[0] = INklav[4]; pole[1] = INklav[5]; pole[2] = INklav[6]; pole[3] = INklav[7]; pole[4] = INklav[8]; int a = atoi(pole); delay(a); } ///////////////////////////////////////////návrat do hlavní smyčky///////////////////////////////////////////////////// void ret() { loop(); } ///////////////////////////////vytvoř proměnnou//////////////////////////////////////////////////////////////////////// void vytvorPROMENOU() { char pole[12]; int x = INklav[0]; //načti název proměnné x = x - 97; //převeď proměnnou na pozici v poli pole[0] = INklav[2]; pole[1] = INklav[3]; pole[2] = INklav[4]; pole[3] = INklav[5]; pole[4] = INklav[6]; pole[5] = INklav[7]; pole[6] = INklav[8]; pole[7] = INklav[9]; pole[8] = INklav[10]; pole[9] = INklav[11]; pole[10] = INklav[12]; pole[11] = INklav[13]; int a = atoi(pole); //převeď číslo z pole do int promenne[x] = a; //zapiš proměnnou do pole } /////////////////////////////////vypiš proměnnou//////////////////////////////////////////////////////////////////// void vypisPROMENOU() { Serial.print(INklav[0]); Serial.print("="); int x = INklav[0]; //načti název proměnné x = x - 97; //převeď proměnnou na pozici v poli Serial.println(promenne[x]); } ///////////////////////////////////sčítání/////////////////////////////////////////////////////////////////////////// void secti() { int x = INklav[0]; //načti název proměnné pro první číslo int y = INklav[2]; //načti název proměnné pro druhé číslo int z = INklav[4]; //načti název proměnné pro součet x = x - 97; //převeď proměnnou na pozici v poli y = y - 97; //převeď proměnnou na pozici v poli z = z - 97; //převeď proměnnou na pozici v poli promenne[z] = promenne[x] + promenne[y]; //sečti a ulož proměnné } ///////////////////////////////////odčítání/////////////////////////////////////////////////////////////////////////// void odecti() { int x = INklav[0]; //načti název proměnné pro první číslo int y = INklav[2]; //načti název proměnné pro druhé číslo int z = INklav[4]; //načti název proměnné pro součet x = x - 97; //převeď proměnnou na pozici v poli y = y - 97; //převeď proměnnou na pozici v poli z = z - 97; //převeď proměnnou na pozici v poli promenne[z] = promenne[x] - promenne[y]; //odečti a ulož proměnné } ///////////////////////////////////násobení/////////////////////////////////////////////////////////////////////////// void nasob() { int x = INklav[0]; //načti název proměnné pro první číslo int y = INklav[2]; //načti název proměnné pro druhé číslo int z = INklav[4]; //načti název proměnné pro součet x = x - 97; //převeď proměnnou na pozici v poli y = y - 97; //převeď proměnnou na pozici v poli z = z - 97; //převeď proměnnou na pozici v poli promenne[z] = promenne[x] * promenne[y]; //vynásob a ulož proměnné } ///////////////////////////////////dělení/////////////////////////////////////////////////////////////////////////// void vydel() { int x = INklav[0]; //načti název proměnné pro první číslo int y = INklav[2]; //načti název proměnné pro druhé číslo int z = INklav[4]; //načti název proměnné pro součet x = x - 97; //převeď proměnnou na pozici v poli y = y - 97; //převeď proměnnou na pozici v poli z = z - 97; //převeď proměnnou na pozici v poli promenne[z] = promenne[x] / promenne[y]; //vyděl a ulož proměnné } ////////////////////////////////////////////ulož příkaz do pole/////////////////////////////////////////////////////////// void ulozPRIKAZ() { char cislo[2]; cislo[0] = INklav[0]; cislo[1] = INklav[1]; int a = atoi(cislo); //převeď číslo z pole do int BASICpole[a] = INklavesnice; //ulož zadaný příkaz do pole příkazů } /////////////////////////////////////////načti příkaz z pole//////////////////////////////////////////////////////////// void nactiPRIKAZ() { char cislo[2]; cislo[0] = INklav[0]; cislo[1] = INklav[1]; int a = atoi(cislo); //převeď číslo z pole do int Serial.println(BASICpole[a]); //vypiš uložený příkaz z pole příkazů } ///////////////////////////////////////////výpis paměti příkazů/////////////////////////////////////////////////////////// void list() { int x; //proměnná čísla řádku z příkazu char cislo[2]; //pole pro číslo řádku z příkazu for(int a=0; a<100; a++) //opakuj pro všech 100 řádků { String radek = BASICpole[a]; //načti řádek číslo a cislo[0] = radek[0]; cislo[1] = radek[1]; x = atoi(cislo); //převeď číslo z pole do int if(x != 0) //pokud číslo řádku není 0 { Serial.println(radek); //vypiš řádek } } } /////////////////////////////////////////////běh programu z paměti příkazů//////////////////////////////////////////////////// void beh() { int x; //proměnná čísla řádku z příkazu char cislo[2]; //pole pro číslo řádku z příkazu for(q=0; q<100; q++) //opakuj pro všech 100 řádků { String radek = BASICpole[q]; //načti řádek číslo q cislo[0] = radek[0]; cislo[1] = radek[1]; x = atoi(cislo); //převeď číslo z pole do int if(x != 0) //pokud číslo řádku není 0 { int c=3; //počítadlo znaků čtení int d=0; //počítadlo znaků zápis for(int b=0; b<100; b++) { INklav[d] = radek[c]; //zkopíruj načtený řádek do proměnné klávesnice posunutý o 3 znaky - smaže označení řádku c++; //zvyš počítadlo d++; //zvyš počítadlo } INklavesnice = INklav; //zkopíruj do druhé proměnné vyber(); //proveď příkaz } } } ////////////////////////////////////////////skok na adresu//////////////////////////////////////////////////////////// void jump() { char cislo[2]; cislo[0] = INklav[4]; cislo[1] = INklav[5]; q = atoi(cislo); //převeď číslo z pole do int q = q-1; } /*rámec obrazovky 100 x 40 znaků Serial.println(F("####################################################################################################")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("# #")); Serial.println(F("####################################################################################################")); */