![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Fork of Mbed-Mensch-1 by
main.cpp@7:903a6653a43b, 2016-03-18 (annotated)
- Committer:
- ladner
- Date:
- Fri Mar 18 13:18:27 2016 +0000
- Revision:
- 7:903a6653a43b
- Parent:
- 6:eda2b36d5be1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ladner | 0:e97a6a69fe4b | 1 | #include "mbed.h" |
ladner | 1:0eaa7682f7e1 | 2 | #include "WS2812B.h" |
ladner | 5:f4db4cd245e3 | 3 | #include "TextLCD.h" |
ladner | 0:e97a6a69fe4b | 4 | |
ladner | 0:e97a6a69fe4b | 5 | I2C i2c(P0_5,P0_4); |
ladner | 0:e97a6a69fe4b | 6 | Serial port(P0_19,P0_18); |
ladner | 0:e97a6a69fe4b | 7 | BusOut myled(P1_8,P1_9,P1_10,P1_11,P1_0,P1_1,P1_3,P1_4,P1_6,P1_7,P1_12,P1_13); |
ladner | 0:e97a6a69fe4b | 8 | AnalogIn ldr(P0_12); |
ladner | 0:e97a6a69fe4b | 9 | AnalogIn poti(P0_11); |
ladner | 1:0eaa7682f7e1 | 10 | //BusOut rgb(P0_9,P1_15,P0_21); |
ladner | 1:0eaa7682f7e1 | 11 | |
ladner | 1:0eaa7682f7e1 | 12 | RGBOut rgb(P0_21,P0_9,P1_15); |
ladner | 7:903a6653a43b | 13 | //Old: P0_13 |
ladner | 7:903a6653a43b | 14 | LedOut Feld (P1_23);//P1_23 ->14 |
ladner | 7:903a6653a43b | 15 | LedOut Home (P1_20);//P1_20->13 |
ladner | 7:903a6653a43b | 16 | LedOut Dice (P1_21);//P1_21->12 |
ladner | 7:903a6653a43b | 17 | //-> Würfel (ersten 3 LED in Binär-4. LED für 7. Zustand), Spieler, Referenz(auch RGB am board) |
ladner | 1:0eaa7682f7e1 | 18 | |
ladner | 1:0eaa7682f7e1 | 19 | InterruptIn Button0(P0_1); |
ladner | 0:e97a6a69fe4b | 20 | InterruptIn Button1(P1_16); |
ladner | 0:e97a6a69fe4b | 21 | InterruptIn Button2(P0_23); |
ladner | 1:0eaa7682f7e1 | 22 | InterruptIn Button3(P0_10); |
ladner | 1:0eaa7682f7e1 | 23 | InterruptIn Button4(P0_15); |
ladner | 7:903a6653a43b | 24 | BusIn btn(P1_16,P0_23,P0_10,P0_15,P0_1); |
ladner | 7:903a6653a43b | 25 | //Dice |
ladner | 7:903a6653a43b | 26 | Timer Random; |
ladner | 7:903a6653a43b | 27 | Timer RandomDice; |
ladner | 7:903a6653a43b | 28 | |
ladner | 7:903a6653a43b | 29 | Ticker DiceAnim; |
ladner | 7:903a6653a43b | 30 | void DiceRun(); |
ladner | 7:903a6653a43b | 31 | void setDice(char number); |
ladner | 7:903a6653a43b | 32 | void DicePrint(); |
ladner | 7:903a6653a43b | 33 | void DiceCal(); //umrechning des 7.Zustands in eine Zahl zwischen 1 & 6 |
ladner | 7:903a6653a43b | 34 | char dicePos = 0; |
ladner | 7:903a6653a43b | 35 | char diceEn = 0; |
ladner | 7:903a6653a43b | 36 | char diceTick = 0; |
ladner | 7:903a6653a43b | 37 | char diceNum = 0; |
ladner | 7:903a6653a43b | 38 | int16_t diceDecode [7]= {0x1,0x88,0x89,0xAA,0xAB,0x1BA,0x154}; |
ladner | 7:903a6653a43b | 39 | //Game |
ladner | 7:903a6653a43b | 40 | #define Feldgrose 10 |
ladner | 7:903a6653a43b | 41 | #define Spieler 4 |
ladner | 7:903a6653a43b | 42 | #define Steine 4 |
ladner | 7:903a6653a43b | 43 | |
ladner | 7:903a6653a43b | 44 | char PlayPos[Spieler*Steine]; //Zahl zwischen 0 & 47 ((0xC0 -> Spieler)>>2 / 0x03 -> Stein) |
ladner | 7:903a6653a43b | 45 | char Start[Spieler*Steine]; //Enthält den Index für PlayPos (nur das 'normale' Spielfend) |
ladner | 7:903a6653a43b | 46 | char Ziel[Spieler*Steine]; //Enthält den Index für PlayPos (nur das 'normale' Spielfend) |
ladner | 7:903a6653a43b | 47 | char Drann; //Spieler, der drann ist |
ladner | 7:903a6653a43b | 48 | char count; //Für 6er & mehrfaches Würfeln beim Ansetzen |
ladner | 7:903a6653a43b | 49 | char last[Spieler]; //zuletzt benutzte Spielstein, der zuletzt benutzt wurde |
ladner | 7:903a6653a43b | 50 | char moglich[Steine]; |
ladner | 7:903a6653a43b | 51 | char selected; //der aktuell ausgewählte Zug |
ladner | 7:903a6653a43b | 52 | char Field[Spieler*Feldgrose]; //Enthält den Index für PlayPos (nur das 'normale' Spielfend) |
ladner | 7:903a6653a43b | 53 | void FieldPrint(); //Ausgabe auf Com-Port |
ladner | 7:903a6653a43b | 54 | void FieldGenerate(); //Berechnung von PlayPos auf Start, Ziel, Field |
ladner | 7:903a6653a43b | 55 | void FeldPrint(); //Ausgabe von Field auf den Led-Streifen (Feld) der Farben |
ladner | 7:903a6653a43b | 56 | void GameCal(); |
ladner | 7:903a6653a43b | 57 | Ticker MoveAnim; |
ladner | 7:903a6653a43b | 58 | void MoveRun(); |
ladner | 7:903a6653a43b | 59 | char MoveShow; |
ladner | 7:903a6653a43b | 60 | void ColorPrint(uint32_t color); |
ladner | 7:903a6653a43b | 61 | //Animations |
ladner | 7:903a6653a43b | 62 | char AnimField[Spieler*Feldgrose]; |
ladner | 7:903a6653a43b | 63 | char AnimStart[Spieler*Steine]; |
ladner | 7:903a6653a43b | 64 | char AnimZiel[Spieler*Steine]; |
ladner | 7:903a6653a43b | 65 | char AnimPos[Spieler*Steine]; |
ladner | 7:903a6653a43b | 66 | char AnimDo; //Feld_Animieren,Start Animieren, Ziel Animierenw |
ladner | 7:903a6653a43b | 67 | void AnimCal(); |
ladner | 7:903a6653a43b | 68 | //Core Interactions |
ladner | 7:903a6653a43b | 69 | void reset(); |
ladner | 7:903a6653a43b | 70 | void MoveDo(); |
ladner | 7:903a6653a43b | 71 | void moveNext(); |
ladner | 7:903a6653a43b | 72 | void moveLast(); |
ladner | 7:903a6653a43b | 73 | void DiceStart(); |
ladner | 7:903a6653a43b | 74 | void DiceStop(); |
ladner | 7:903a6653a43b | 75 | //Button entprellung (funktioniert nicht...) |
ladner | 7:903a6653a43b | 76 | void btn0(); |
ladner | 7:903a6653a43b | 77 | void btn1(); |
ladner | 7:903a6653a43b | 78 | void btn2(); |
ladner | 7:903a6653a43b | 79 | void btn3(); |
ladner | 7:903a6653a43b | 80 | void btn4(); |
ladner | 7:903a6653a43b | 81 | char btnLast; |
ladner | 7:903a6653a43b | 82 | //Farben |
ladner | 7:903a6653a43b | 83 | uint32_t Farben[Spieler]; //Berechnete Hellichkeiten der Speiler fertig zur Ausgabe... |
ladner | 7:903a6653a43b | 84 | uint32_t Background = 0; //Hintergrund (Leerfeld) |
ladner | 7:903a6653a43b | 85 | uint32_t DiseC = 0x00FF00; //Würfelfarbe |
ladner | 7:903a6653a43b | 86 | void ColorPrint(uint32_t color); //vorher den Header senden (manuell...) |
ladner | 7:903a6653a43b | 87 | |
ladner | 7:903a6653a43b | 88 | |
ladner | 7:903a6653a43b | 89 | TextLCD lcd(p21, p22, p26, p25, p24, p23,TextLCD::LCD20x4); |
ladner | 0:e97a6a69fe4b | 90 | |
ladner | 5:f4db4cd245e3 | 91 | InterruptIn DD_A(P0_22);//20 |
ladner | 5:f4db4cd245e3 | 92 | InterruptIn DD_B(P0_16);//19 |
ladner | 5:f4db4cd245e3 | 93 | InterruptIn DD_C(P0_14);//18 |
ladner | 5:f4db4cd245e3 | 94 | DigitalIn DD_D(P0_14); |
ladner | 5:f4db4cd245e3 | 95 | BusIn DD(P0_22,P0_16); |
ladner | 5:f4db4cd245e3 | 96 | //Timeout DD_reset; |
ladner | 5:f4db4cd245e3 | 97 | char DD_last; |
ladner | 5:f4db4cd245e3 | 98 | char DD_d; |
ladner | 1:0eaa7682f7e1 | 99 | |
ladner | 5:f4db4cd245e3 | 100 | void dreh(); |
ladner | 5:f4db4cd245e3 | 101 | void druck(); |
ladner | 1:0eaa7682f7e1 | 102 | |
ladner | 5:f4db4cd245e3 | 103 | void up(); |
ladner | 5:f4db4cd245e3 | 104 | void down(); |
ladner | 5:f4db4cd245e3 | 105 | void accept(); |
ladner | 5:f4db4cd245e3 | 106 | void exit(); |
ladner | 5:f4db4cd245e3 | 107 | void print_menu(); |
ladner | 7:903a6653a43b | 108 | void print_pos(); |
ladner | 7:903a6653a43b | 109 | void print_default(); |
ladner | 7:903a6653a43b | 110 | void posUpdate(); |
ladner | 5:f4db4cd245e3 | 111 | void Control(); |
ladner | 7:903a6653a43b | 112 | char ausfuehren(); |
ladner | 1:0eaa7682f7e1 | 113 | |
ladner | 5:f4db4cd245e3 | 114 | //string test (""); |
ladner | 5:f4db4cd245e3 | 115 | // "1234567890123456789","1234567890123456789","1234567890123456789","1234567890123456789", ,"1234567890123456789","1234567890123456789","1234567890123456789", |
ladner | 5:f4db4cd245e3 | 116 | const char * const text_ln0[] = {"MENU: ","Spiel-Menu: ","Anzeige-Menu: ","Speicher-Menu: ","","7.Zustand-Menu: ","Farben-Menu: ","Spiel-Menu: ","","Spielregeln-Menu: ","Hell./Sp.Led-Menu: ","Config-Menu: ","","Autplay-Menu: ","Wurfel-Menu: ","Ofline/Com-Menu: "}; |
ladner | 7:903a6653a43b | 117 | const char * const text_ln1[] = {"Spiel ","7.Zustand ","Farben ","Spiel ","","Disable ","Hoffentlich ","Laden ","","Smeiszwang <I/0> ","Wert: <wert> ","Laden ","","Zeit ","Farbverhalten ","New "}; |
ladner | 7:903a6653a43b | 118 | const char * const text_ln2[] = {"Anzeige ","Spielregeln ","Hellichkeit/Sp.Led ","Config. ","","kleinstmoglich "," 1 2 3 4 ","Speichern ","","Go Home first <I/0>","Sp.Led-Verhalten ","Speichern ","","Agro/Taktik ","Farb def ","Reset "}; |
ladner | 5:f4db4cd245e3 | 119 | const char * const text_ln3[] = {"Speicher ","Autoplay ","Wurfel ","Ofline/Com ","","grostmoglich "," ","Reset ","","Ausfahrzwang <I/0> ","Andert: <wert> ","Reset ","","Enable/Manuell ","Hellichkeit ","Com "}; |
ladner | 7:903a6653a43b | 120 | char textPos[] = {0x0 ,0x1 ,0x2 ,0x3 ,0x4,0x5 ,0x6 ,0x7 ,0x8,0x9 ,0xA ,0xB ,0xC,0xD ,0xE ,0xF ,0x10,0x11}; |
ladner | 1:0eaa7682f7e1 | 121 | |
ladner | 5:f4db4cd245e3 | 122 | |
ladner | 7:903a6653a43b | 123 | char VHS = 0; |
ladner | 7:903a6653a43b | 124 | char mSelected[256]; |
ladner | 5:f4db4cd245e3 | 125 | char depth = 0; |
ladner | 7:903a6653a43b | 126 | uint32_t postion = 0;//Dafür brauche ich die Methode |
ladner | 7:903a6653a43b | 127 | |
ladner | 0:e97a6a69fe4b | 128 | |
ladner | 1:0eaa7682f7e1 | 129 | int main() |
ladner | 0:e97a6a69fe4b | 130 | { |
ladner | 5:f4db4cd245e3 | 131 | //Random.start(); |
ladner | 1:0eaa7682f7e1 | 132 | //Random.stop(); |
ladner | 1:0eaa7682f7e1 | 133 | //Random.read_us(); |
ladner | 1:0eaa7682f7e1 | 134 | |
ladner | 1:0eaa7682f7e1 | 135 | //Ticker: |
ladner | 1:0eaa7682f7e1 | 136 | //.attach(&main,[sek]); |
ladner | 1:0eaa7682f7e1 | 137 | //.attach_us(&main,[micro-sec]); |
ladner | 1:0eaa7682f7e1 | 138 | //.detach(); |
ladner | 1:0eaa7682f7e1 | 139 | |
ladner | 1:0eaa7682f7e1 | 140 | //myled = 0xFFF; |
ladner | 1:0eaa7682f7e1 | 141 | port.baud(76800); |
ladner | 1:0eaa7682f7e1 | 142 | port.format(8,Serial::None, 1); |
ladner | 1:0eaa7682f7e1 | 143 | port.attach(&Control); |
ladner | 4:2acb70f9cd22 | 144 | /* |
ladner | 5:f4db4cd245e3 | 145 | __disable_irq(); |
ladner | 5:f4db4cd245e3 | 146 | __enable_irq(); |
ladner | 4:2acb70f9cd22 | 147 | */ |
ladner | 7:903a6653a43b | 148 | |
ladner | 5:f4db4cd245e3 | 149 | DD_A.mode(PullDown); |
ladner | 5:f4db4cd245e3 | 150 | DD_B.mode(PullDown); |
ladner | 5:f4db4cd245e3 | 151 | DD_C.mode(PullDown); |
ladner | 7:903a6653a43b | 152 | wait(0.01); |
ladner | 5:f4db4cd245e3 | 153 | DD_A.rise(&dreh); |
ladner | 5:f4db4cd245e3 | 154 | DD_A.fall(&dreh); |
ladner | 5:f4db4cd245e3 | 155 | DD_B.rise(&dreh); |
ladner | 5:f4db4cd245e3 | 156 | DD_B.fall(&dreh); |
ladner | 5:f4db4cd245e3 | 157 | DD_C.rise(&druck); |
ladner | 5:f4db4cd245e3 | 158 | DD_C.fall(&druck); |
ladner | 5:f4db4cd245e3 | 159 | DD_last = DD; |
ladner | 5:f4db4cd245e3 | 160 | DD_d=DD_D; |
ladner | 1:0eaa7682f7e1 | 161 | |
ladner | 5:f4db4cd245e3 | 162 | //text_ln0[0]=""; |
ladner | 5:f4db4cd245e3 | 163 | //port.printf("D%c%ctest\n",27,27); |
ladner | 7:903a6653a43b | 164 | print_default(); |
ladner | 1:0eaa7682f7e1 | 165 | |
ladner | 1:0eaa7682f7e1 | 166 | while(1) ; |
ladner | 0:e97a6a69fe4b | 167 | } |
ladner | 7:903a6653a43b | 168 | void print_default() |
ladner | 7:903a6653a43b | 169 | { |
ladner | 7:903a6653a43b | 170 | lcd.cls(); |
ladner | 7:903a6653a43b | 171 | lcd.printf(" Spiel lauft..."); |
ladner | 7:903a6653a43b | 172 | lcd.locate(0,3); |
ladner | 7:903a6653a43b | 173 | lcd.printf("12345678901234567890"); |
ladner | 7:903a6653a43b | 174 | port.printf("D%c%c Spiel lauft... \n",27,27); |
ladner | 7:903a6653a43b | 175 | port.printf("D%c%c \n",27,28); |
ladner | 7:903a6653a43b | 176 | port.printf("D%c%c \n",27,29); |
ladner | 7:903a6653a43b | 177 | port.printf("D%c%c12345678901234567890\n",27,30); |
ladner | 7:903a6653a43b | 178 | } |
ladner | 5:f4db4cd245e3 | 179 | void Control() |
ladner | 1:0eaa7682f7e1 | 180 | { |
ladner | 5:f4db4cd245e3 | 181 | while(port.readable ()) |
ladner | 1:0eaa7682f7e1 | 182 | { |
ladner | 5:f4db4cd245e3 | 183 | char message = port.getc(); |
ladner | 5:f4db4cd245e3 | 184 | switch(message) |
ladner | 1:0eaa7682f7e1 | 185 | { |
ladner | 5:f4db4cd245e3 | 186 | case 'D': |
ladner | 7:903a6653a43b | 187 | port.printf("Ldepth:%d,mSelected[depth-1]:%d\n",depth,mSelected[depth-1]); |
ladner | 5:f4db4cd245e3 | 188 | break; |
ladner | 5:f4db4cd245e3 | 189 | case 'E': |
ladner | 5:f4db4cd245e3 | 190 | exit(); |
ladner | 5:f4db4cd245e3 | 191 | break; |
ladner | 5:f4db4cd245e3 | 192 | case 'F': |
ladner | 5:f4db4cd245e3 | 193 | up(); |
ladner | 5:f4db4cd245e3 | 194 | break; |
ladner | 5:f4db4cd245e3 | 195 | case 'G': |
ladner | 5:f4db4cd245e3 | 196 | down(); |
ladner | 5:f4db4cd245e3 | 197 | break; |
ladner | 5:f4db4cd245e3 | 198 | case 'H': |
ladner | 5:f4db4cd245e3 | 199 | accept(); |
ladner | 5:f4db4cd245e3 | 200 | break; |
ladner | 5:f4db4cd245e3 | 201 | case 'I': |
ladner | 5:f4db4cd245e3 | 202 | depth=0; |
ladner | 7:903a6653a43b | 203 | mSelected[0]=0; |
ladner | 5:f4db4cd245e3 | 204 | print_menu(); |
ladner | 5:f4db4cd245e3 | 205 | break; |
ladner | 1:0eaa7682f7e1 | 206 | } |
ladner | 1:0eaa7682f7e1 | 207 | } |
ladner | 1:0eaa7682f7e1 | 208 | } |
ladner | 5:f4db4cd245e3 | 209 | void dreh() |
ladner | 1:0eaa7682f7e1 | 210 | { |
ladner | 5:f4db4cd245e3 | 211 | char temp = DD; |
ladner | 5:f4db4cd245e3 | 212 | if(DD_last == 3) |
ladner | 5:f4db4cd245e3 | 213 | { |
ladner | 5:f4db4cd245e3 | 214 | if(temp == 0) |
ladner | 5:f4db4cd245e3 | 215 | DD_last = 0; |
ladner | 5:f4db4cd245e3 | 216 | } |
ladner | 1:0eaa7682f7e1 | 217 | else |
ladner | 1:0eaa7682f7e1 | 218 | { |
ladner | 5:f4db4cd245e3 | 219 | if(temp == 3) |
ladner | 5:f4db4cd245e3 | 220 | { |
ladner | 5:f4db4cd245e3 | 221 | if(DD_last == 1) |
ladner | 5:f4db4cd245e3 | 222 | up(); |
ladner | 5:f4db4cd245e3 | 223 | if(DD_last == 2) |
ladner | 5:f4db4cd245e3 | 224 | down(); |
ladner | 5:f4db4cd245e3 | 225 | } |
ladner | 5:f4db4cd245e3 | 226 | DD_last = temp; |
ladner | 1:0eaa7682f7e1 | 227 | } |
ladner | 0:e97a6a69fe4b | 228 | } |
ladner | 7:903a6653a43b | 229 | char ausfuehren() |
ladner | 7:903a6653a43b | 230 | { |
ladner | 7:903a6653a43b | 231 | char out = 1; |
ladner | 7:903a6653a43b | 232 | switch (postion) |
ladner | 7:903a6653a43b | 233 | { |
ladner | 7:903a6653a43b | 234 | case 0x5: |
ladner | 7:903a6653a43b | 235 | break; |
ladner | 7:903a6653a43b | 236 | default: |
ladner | 7:903a6653a43b | 237 | break; |
ladner | 7:903a6653a43b | 238 | } |
ladner | 7:903a6653a43b | 239 | return out; |
ladner | 7:903a6653a43b | 240 | } |
ladner | 5:f4db4cd245e3 | 241 | void druck() |
ladner | 1:0eaa7682f7e1 | 242 | { |
ladner | 5:f4db4cd245e3 | 243 | if(DD_D==DD_d) |
ladner | 5:f4db4cd245e3 | 244 | return; |
ladner | 5:f4db4cd245e3 | 245 | else if(DD_D) |
ladner | 5:f4db4cd245e3 | 246 | accept(); |
ladner | 5:f4db4cd245e3 | 247 | DD_d=DD_D; |
ladner | 0:e97a6a69fe4b | 248 | } |
ladner | 7:903a6653a43b | 249 | void posUpdate() |
ladner | 7:903a6653a43b | 250 | { |
ladner | 7:903a6653a43b | 251 | postion = 0; |
ladner | 7:903a6653a43b | 252 | for(char i = 0;i<depth-1;i++) |
ladner | 7:903a6653a43b | 253 | postion = postion|(mSelected[i]<<(i*2)); |
ladner | 7:903a6653a43b | 254 | } |
ladner | 5:f4db4cd245e3 | 255 | void up() |
ladner | 0:e97a6a69fe4b | 256 | { |
ladner | 5:f4db4cd245e3 | 257 | if(depth>0) |
ladner | 0:e97a6a69fe4b | 258 | { |
ladner | 7:903a6653a43b | 259 | if(mSelected[depth-1]<1) |
ladner | 7:903a6653a43b | 260 | { |
ladner | 7:903a6653a43b | 261 | if(VHS==0) |
ladner | 7:903a6653a43b | 262 | mSelected[depth-1]=3; |
ladner | 7:903a6653a43b | 263 | else if(VHS==1) |
ladner | 7:903a6653a43b | 264 | mSelected[depth-1]=4; |
ladner | 7:903a6653a43b | 265 | else |
ladner | 7:903a6653a43b | 266 | mSelected[depth-1]=VHS; |
ladner | 7:903a6653a43b | 267 | } |
ladner | 5:f4db4cd245e3 | 268 | else |
ladner | 7:903a6653a43b | 269 | mSelected[depth-1]--; |
ladner | 7:903a6653a43b | 270 | print_pos(); |
ladner | 1:0eaa7682f7e1 | 271 | } |
ladner | 1:0eaa7682f7e1 | 272 | } |
ladner | 5:f4db4cd245e3 | 273 | void down() |
ladner | 1:0eaa7682f7e1 | 274 | { |
ladner | 5:f4db4cd245e3 | 275 | if(depth>0) |
ladner | 1:0eaa7682f7e1 | 276 | { |
ladner | 7:903a6653a43b | 277 | char temp=3; |
ladner | 7:903a6653a43b | 278 | if(VHS==0) |
ladner | 7:903a6653a43b | 279 | temp=3; |
ladner | 7:903a6653a43b | 280 | else if(VHS==1) |
ladner | 7:903a6653a43b | 281 | temp=4; |
ladner | 1:0eaa7682f7e1 | 282 | else |
ladner | 7:903a6653a43b | 283 | temp=VHS; |
ladner | 7:903a6653a43b | 284 | if(mSelected[depth-1]>(temp-1)) |
ladner | 7:903a6653a43b | 285 | mSelected[depth-1]=0; |
ladner | 7:903a6653a43b | 286 | else |
ladner | 7:903a6653a43b | 287 | mSelected[depth-1]++; |
ladner | 7:903a6653a43b | 288 | print_pos(); |
ladner | 1:0eaa7682f7e1 | 289 | } |
ladner | 5:f4db4cd245e3 | 290 | } |
ladner | 5:f4db4cd245e3 | 291 | void accept() |
ladner | 5:f4db4cd245e3 | 292 | { |
ladner | 5:f4db4cd245e3 | 293 | if(depth>0) |
ladner | 2:3a90b20958ff | 294 | { |
ladner | 7:903a6653a43b | 295 | postion = 0; |
ladner | 7:903a6653a43b | 296 | for(char i = 0;i<depth;i++) |
ladner | 7:903a6653a43b | 297 | postion = postion|(mSelected[i]<<(i*2)); |
ladner | 7:903a6653a43b | 298 | char temp = ausfuhren(); |
ladner | 7:903a6653a43b | 299 | if(temp>0) |
ladner | 2:3a90b20958ff | 300 | { |
ladner | 7:903a6653a43b | 301 | if(mSelected[depth-1]==0) |
ladner | 7:903a6653a43b | 302 | { |
ladner | 7:903a6653a43b | 303 | depth--;//Exit() |
ladner | 7:903a6653a43b | 304 | mSelected[depth]=0; |
ladner | 7:903a6653a43b | 305 | } |
ladner | 5:f4db4cd245e3 | 306 | else |
ladner | 2:3a90b20958ff | 307 | { |
ladner | 7:903a6653a43b | 308 | mSelected[depth]=1; |
ladner | 5:f4db4cd245e3 | 309 | depth++; |
ladner | 2:3a90b20958ff | 310 | } |
ladner | 2:3a90b20958ff | 311 | } |
ladner | 0:e97a6a69fe4b | 312 | } |
ladner | 5:f4db4cd245e3 | 313 | else |
ladner | 5:f4db4cd245e3 | 314 | depth=1; |
ladner | 7:903a6653a43b | 315 | posUpdate(); |
ladner | 7:903a6653a43b | 316 | if(postion==0x6) |
ladner | 7:903a6653a43b | 317 | VHS=1; |
ladner | 7:903a6653a43b | 318 | else |
ladner | 7:903a6653a43b | 319 | VHS=0; |
ladner | 7:903a6653a43b | 320 | if(depth>0) |
ladner | 7:903a6653a43b | 321 | { |
ladner | 7:903a6653a43b | 322 | print_menu(); |
ladner | 7:903a6653a43b | 323 | print_pos(); |
ladner | 7:903a6653a43b | 324 | } |
ladner | 7:903a6653a43b | 325 | else |
ladner | 7:903a6653a43b | 326 | print_default(); |
ladner | 5:f4db4cd245e3 | 327 | } |
ladner | 5:f4db4cd245e3 | 328 | void exit() |
ladner | 5:f4db4cd245e3 | 329 | { |
ladner | 5:f4db4cd245e3 | 330 | if(depth>0) |
ladner | 0:e97a6a69fe4b | 331 | { |
ladner | 5:f4db4cd245e3 | 332 | depth--; |
ladner | 7:903a6653a43b | 333 | mSelected[depth]=0; |
ladner | 2:3a90b20958ff | 334 | } |
ladner | 7:903a6653a43b | 335 | posUpdate(); |
ladner | 7:903a6653a43b | 336 | if(postion==0x6) |
ladner | 7:903a6653a43b | 337 | VHS=1; |
ladner | 7:903a6653a43b | 338 | else |
ladner | 7:903a6653a43b | 339 | VHS=0; |
ladner | 7:903a6653a43b | 340 | if(depth>0) |
ladner | 7:903a6653a43b | 341 | { |
ladner | 7:903a6653a43b | 342 | print_menu(); |
ladner | 7:903a6653a43b | 343 | print_pos(); |
ladner | 7:903a6653a43b | 344 | } |
ladner | 7:903a6653a43b | 345 | else |
ladner | 7:903a6653a43b | 346 | print_default(); |
ladner | 5:f4db4cd245e3 | 347 | } |
ladner | 5:f4db4cd245e3 | 348 | void print_menu() |
ladner | 5:f4db4cd245e3 | 349 | { |
ladner | 7:903a6653a43b | 350 | port.printf("DR\n"); |
ladner | 7:903a6653a43b | 351 | lcd.cls(); |
ladner | 7:903a6653a43b | 352 | lcd.locate(1,0); |
ladner | 7:903a6653a43b | 353 | lcd.printf(text_ln0[textPos[postion]]); |
ladner | 7:903a6653a43b | 354 | port.printf("D%c%c%s\n",28,27,text_ln0[textPos[postion]]); |
ladner | 7:903a6653a43b | 355 | lcd.locate(1,1); |
ladner | 7:903a6653a43b | 356 | lcd.printf(text_ln1[textPos[postion]]); |
ladner | 7:903a6653a43b | 357 | port.printf("D%c%c%s\n",28,28,text_ln1[textPos[postion]]); |
ladner | 7:903a6653a43b | 358 | lcd.locate(1,2); |
ladner | 7:903a6653a43b | 359 | lcd.printf(text_ln2[textPos[postion]]); |
ladner | 7:903a6653a43b | 360 | port.printf("D%c%c%s\n",28,29,text_ln2[textPos[postion]]); |
ladner | 7:903a6653a43b | 361 | lcd.locate(1,3); |
ladner | 7:903a6653a43b | 362 | lcd.printf(text_ln3[textPos[postion]]); |
ladner | 7:903a6653a43b | 363 | port.printf("D%c%c%s\n",28,30,text_ln3[textPos[postion]]); |
ladner | 7:903a6653a43b | 364 | } |
ladner | 7:903a6653a43b | 365 | void print_pos() |
ladner | 7:903a6653a43b | 366 | { |
ladner | 7:903a6653a43b | 367 | if (VHS==1) |
ladner | 2:3a90b20958ff | 368 | { |
ladner | 7:903a6653a43b | 369 | lcd.locate(0,3); |
ladner | 7:903a6653a43b | 370 | // "--------------------" |
ladner | 7:903a6653a43b | 371 | lcd.printf(" "); |
ladner | 7:903a6653a43b | 372 | port.printf("D%c%c \n",27,27+3); |
ladner | 7:903a6653a43b | 373 | |
ladner | 7:903a6653a43b | 374 | lcd.locate(0,0); |
ladner | 7:903a6653a43b | 375 | if(mSelected[depth-1]==0) |
ladner | 5:f4db4cd245e3 | 376 | { |
ladner | 7:903a6653a43b | 377 | port.printf("D%c%c<\n",27,27); |
ladner | 7:903a6653a43b | 378 | lcd.putc('<'); |
ladner | 5:f4db4cd245e3 | 379 | } |
ladner | 5:f4db4cd245e3 | 380 | else |
ladner | 0:e97a6a69fe4b | 381 | { |
ladner | 7:903a6653a43b | 382 | port.printf("D%c%c \n",27,27); |
ladner | 7:903a6653a43b | 383 | lcd.putc(' '); |
ladner | 7:903a6653a43b | 384 | |
ladner | 7:903a6653a43b | 385 | lcd.locate(4*mSelected[depth-1],3); |
ladner | 7:903a6653a43b | 386 | lcd.putc('^'); |
ladner | 7:903a6653a43b | 387 | port.printf("D%c%c^\n",27+4*mSelected[depth-1],27+3); |
ladner | 1:0eaa7682f7e1 | 388 | } |
ladner | 1:0eaa7682f7e1 | 389 | } |
ladner | 1:0eaa7682f7e1 | 390 | else |
ladner | 1:0eaa7682f7e1 | 391 | { |
ladner | 7:903a6653a43b | 392 | for(char i=0;i<4;i++) |
ladner | 7:903a6653a43b | 393 | { |
ladner | 7:903a6653a43b | 394 | lcd.locate(0,i); |
ladner | 7:903a6653a43b | 395 | if((mSelected[depth-1]+0)==i) |
ladner | 7:903a6653a43b | 396 | { |
ladner | 7:903a6653a43b | 397 | if(i==0) |
ladner | 7:903a6653a43b | 398 | { |
ladner | 7:903a6653a43b | 399 | port.printf("D%c%c<\n",27,i+27); |
ladner | 7:903a6653a43b | 400 | lcd.putc('<'); |
ladner | 7:903a6653a43b | 401 | } |
ladner | 7:903a6653a43b | 402 | else |
ladner | 7:903a6653a43b | 403 | { |
ladner | 7:903a6653a43b | 404 | port.printf("D%c%c>\n",27,i+27); |
ladner | 7:903a6653a43b | 405 | lcd.putc('>'); |
ladner | 7:903a6653a43b | 406 | } |
ladner | 7:903a6653a43b | 407 | } |
ladner | 7:903a6653a43b | 408 | else |
ladner | 7:903a6653a43b | 409 | { |
ladner | 7:903a6653a43b | 410 | port.printf("D%c%c \n",27,i+27); |
ladner | 7:903a6653a43b | 411 | lcd.putc(' '); |
ladner | 7:903a6653a43b | 412 | } |
ladner | 7:903a6653a43b | 413 | } |
ladner | 1:0eaa7682f7e1 | 414 | } |
ladner | 1:0eaa7682f7e1 | 415 | } |