Připravuji hru pro děti, která bude mít 4 "trasy" po 16-ti polích. Ke každému poli se bude vázat "vzkaz"/úkol pro hráče. Nyní pro simulaci polí používám resistor ladder s tlačítky. V podstatě 8 tl. klávesnice na analogovém vstupu. Problém nastal již při připojení další "trasy". Pokud použiji klasické podmínky, splním je na obou "trasách" zároveň, takže se "vzkazy" vázané na sepnutých polích na displeji neustále střídají. Nevím jak mám docílit zastavení ve "vzkazu" do doby, než na jiné trase dojde ke změně / opuštění tlačítka (tl. je do té doby stlačené). Zkoušel jsem Cse; While; for... ale vždy jsem skončil ve slepé ... Přikládám zjednodušenou verzi. Nakopne mě někdo? Díky
Kód: Vybrat vše
#include <UTFT.h>
UTFT lcd(ILI9325C, A5, A4, A3, A2); //pins used for TFT
//#include <SPI.h>
//#include <SdFat.h>
//#include <UTFT_SdRaw.h>
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
//#define SD_CHIP_SELECT 53 // SD chip select pin(Arduino Mega)
///SdFat sd;
//UTFT_SdRaw myFiles(&lcd);
int trasa1 = A6;
int trasa2 = A15;
int hodnotaPole1;
int hodnotaPole2;
void setup() {
lcd.InitLCD();
lcd.fillScr(0, 0, 0);
}
void loop()
{
lcd.setColor(225, 110, 225);
lcd.setFont(BigFont);
hodnotaPole1 = analogRead(trasa1);
hodnotaPole2 = analogRead(trasa2);
if (hodnotaPole1 > 880) {
vzkaz8();
}
else if (hodnotaPole1 > 780) {
vzkaz7();
}
else if (hodnotaPole1 > 660) {
vzkaz6();
}
else if (hodnotaPole1 > 560) {
vzkaz5();
}
else if (hodnotaPole1 > 460) {
vzkaz4();
}
else if (hodnotaPole1 > 360) {
vzkaz3();
}
else if (hodnotaPole1 > 260) {
vzkaz2();
}
else if (hodnotaPole1 > 160) {
vzkaz1();
}
else if (hodnotaPole1 >= 0) {
bezFigurky ();
}
if (hodnotaPole2 > 800) {
vzkaz14();
}
else if (hodnotaPole2 > 630) {
vzkaz13();
}
else if (hodnotaPole2 > 490) {
vzkaz12();
}
else if (hodnotaPole2 > 350) {
vzkaz11();
}
else if (hodnotaPole2 > 200) {
vzkaz10();
}
else if (hodnotaPole2 > 61) {
vzkaz9();
}
else if (hodnotaPole2 >= 0) {
bezFigurky ();
}
delay (500);
}
void bezFigurky()
{
lcd.clrScr();
// myFiles.load(0, 0, 320, 240, "PIC303.RAW", 1, 0);
delay (100);
}
void vzkaz1()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("1", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo jedna", CENTER, 100);
lcd.print ("Tady je vzkaz", CENTER, 150);
}
void vzkaz2()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("2", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo dva", CENTER, 100);
lcd.setFont(SmallFont);
lcd.print ("tady se da napsat cokoliv na doplneni", CENTER, 150);
}
void vzkaz3()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("3", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo tri", CENTER, 100);
lcd.print ("atd", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("a tak dale", CENTER, 150);
}
void vzkaz4()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("4", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo ctyri", CENTER, 100);
lcd.print ("etc", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("adsfsdf", CENTER, 150);
}
void vzkaz5()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("5", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo pet", CENTER, 100);
lcd.print ("Vdfsf", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("tfeefef", CENTER, 150);
}
void vzkaz6()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("6", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo sest", CENTER, 100);
lcd.print ("thgerg", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("bla bla bla bla bla bla bla", CENTER, 150);
}
void vzkaz7()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("7", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo sedum", CENTER, 100);
lcd.print ("aregar", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("aregar rg ", CENTER, 150);
}
void vzkaz8()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("8", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo osum", CENTER, 100);
lcd.print ("ergega", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("a ted se to konecne rymuje", CENTER, 150);
}
void vzkaz9()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("9", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo devet", CENTER, 100);
lcd.print ("kdo mlci je nemec", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("a kdo jinemu jamu kopa ten je brigadnik", CENTER, 150);
}
void vzkaz10()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("10", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo deset", CENTER, 100);
lcd.setFont(SmallFont);
lcd.print ("tady se da napsat cokoliv na doplneni", CENTER, 150);
}
void vzkaz11()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("11", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo jedenact", CENTER, 100);
lcd.print ("Prdel si vy3", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("a tak dale", CENTER, 150);
}
void vzkaz12()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("12", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo dvanact", CENTER, 100);
lcd.print ("aergae", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("aergaeg", CENTER, 150);
}
void vzkaz13()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("13", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo trináct", CENTER, 100);
lcd.print ("aergaega", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("aergaegr", CENTER, 150);
}
void vzkaz14()
{
lcd.setFont(SevenSegNumFont);
lcd.print ("14", CENTER, 10);
lcd.setFont(BigFont);
lcd.print ("Pole cislo ctrnact", CENTER, 100);
lcd.print ("aergaergae", CENTER, 120);
lcd.setFont(SmallFont);
lcd.print ("bla bla bla bla bla bla bla", CENTER, 150);
}