Ahoj, nevim, jestli to mam hodit do koše nebo doufat, jestli se nekomu podaří mi vysvětlit „jak na to“. Myšlenka spočívá v tom že každá OBRAZOVKA (část menu) na display bude napsaná ve vlastní funkci s číslem o kolikátou funkci/obrazovku se jedná. pokud má proměnná např. hodnotu 1 jsem na první obrazovce. nedaří se mi ale funkce zavolat příkazem menu[totoMenu] což po sériové lince v pohodě vypíše scr1, ale při volání funkce to nejde. pokud máte nějakej typ jak na to, budu mýt druhý vánoce. díky
[code]
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int th=0;
int tm=0;
int ts=0;
int mark;
int TLA1=6;
int valTLA1;
int TLA1pred;
int TLA2=7;
int valTLA2;
int TLA2pred;
int TLA3=8;
int valTLA3;
int TLA3pred;
int LEDzl=9;
int LEDze=10;
int LEDce=13;
bool LEDceVAL;
int POT1=A0;
int valPOT1;
int POT2=A1;
int valPOT2;
int totoMenu=0;
char* menu[]={„scr1“, „scr2“, „scr3“, „scr4“};
int PRODLEVA=50; //doba po kterou program po stisknutí tlačítka ignoruje další změny stisků
unsigned long CASZMENY; //časová značka (uloží millis, pro porovnání délky stisku tlačítka
void setup() { //—————-setup—————————–
pinMode(TLA1, INPUT);
pinMode(TLA2, INPUT);
pinMode(TLA3, INPUT);
pinMode(LEDzl, OUTPUT);
pinMode(LEDze, OUTPUT);
pinMode(LEDce, OUTPUT);
Serial.begin(9600);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(„ABCDEFGHIJKLMNOP“);
lcd.setCursor(0,1);
lcd.print(„KLMNOPQRSTUVWXYZ“);
delay(1200);
lcd.clear();
}
void loop() { //—————-loop———————————
delay(15);
if(mark<millis()/1000){
mark++;
ts++;
}
if (tm==60){
tm=0;
th++;
}
if (ts==60){
ts=0;
tm++;
}
lcd.clear();
lcd.setCursor(0,0);
if (th<10){
lcd.print(„0“);
}
lcd.print(th);
lcd.print(„:“);
lcd.setCursor(3,0);
lcd.print(“ „);
lcd.setCursor(3,0);
if (tm<10){
lcd.print(„0“);
}
lcd.print(tm);
lcd.print(„:“);
lcd.setCursor(6,0);
lcd.print(“ „);
lcd.setCursor(6,0);
if (ts<10){
lcd.print(„0“);
}
lcd.print(ts);
if (digitalRead(TLA1)){
if (TLA1pred==1 && millis()-CASZMENY>PRODLEVA){
TLA1pred=0;
digitalWrite(LEDzl, !digitalRead(LEDzl));
totoMenu++;
if (totoMenu>3){
totoMenu=0;
}
}
}
else{
CASZMENY=millis();
TLA1pred=1;
TLA2pred=1;
TLA3pred=1;
}
Serial.println(menu[totoMenu]); // program vypíše scrX
menu[totoMenu](); // ide vyhodí chybovou hlášku
}
//———————————————————–
void scr1(){
digitalWrite((LEDzl), !digitalRead(LEDzl));
delay(30);
}
void scr2(){
digitalWrite((LEDze), !digitalRead(LEDze));
delay(30);
}
//————————————————————————-
[/code]