jakob schreib mir bitte die methode auf int postion
Fork of Mbed-Mensch-3-Menu by
main.cpp@7:bd4b77580026, 2016-03-14 (annotated)
- Committer:
- ogris
- Date:
- Mon Mar 14 18:06:26 2016 +0000
- Revision:
- 7:bd4b77580026
- Parent:
- 6:eda2b36d5be1
q
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 | 5:f4db4cd245e3 | 4 | #include <string> |
ladner | 0:e97a6a69fe4b | 5 | |
ladner | 0:e97a6a69fe4b | 6 | I2C i2c(P0_5,P0_4); |
ladner | 0:e97a6a69fe4b | 7 | Serial port(P0_19,P0_18); |
ladner | 0:e97a6a69fe4b | 8 | 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 | 9 | AnalogIn ldr(P0_12); |
ladner | 0:e97a6a69fe4b | 10 | AnalogIn poti(P0_11); |
ladner | 1:0eaa7682f7e1 | 11 | //BusOut rgb(P0_9,P1_15,P0_21); |
ladner | 1:0eaa7682f7e1 | 12 | //BusIn btn(P1_16,P0_23,P0_10,P0_15); |
ladner | 1:0eaa7682f7e1 | 13 | |
ladner | 1:0eaa7682f7e1 | 14 | RGBOut rgb(P0_21,P0_9,P1_15); |
ladner | 5:f4db4cd245e3 | 15 | TextLCD lcd(p21, p22, p26, p25, p24, p23,TextLCD::LCD20x4); |
ladner | 1:0eaa7682f7e1 | 16 | |
ladner | 1:0eaa7682f7e1 | 17 | LedOut Feld (P0_13); |
ladner | 1:0eaa7682f7e1 | 18 | //LedOut Other(P0_13); //-> Würfel (ersten 3 LED in Binär-4. LED für 7. Zustand), Spieler, Start, Ziel, Referenz(auch RGB am board) |
ladner | 1:0eaa7682f7e1 | 19 | // übrige 8 LED für zeit-Anzeige des Zuges einer KI |
ladner | 1:0eaa7682f7e1 | 20 | |
ladner | 1:0eaa7682f7e1 | 21 | InterruptIn Button0(P0_1); |
ladner | 0:e97a6a69fe4b | 22 | InterruptIn Button1(P1_16); |
ladner | 0:e97a6a69fe4b | 23 | InterruptIn Button2(P0_23); |
ladner | 1:0eaa7682f7e1 | 24 | InterruptIn Button3(P0_10); |
ladner | 1:0eaa7682f7e1 | 25 | InterruptIn Button4(P0_15); |
ladner | 0:e97a6a69fe4b | 26 | |
ladner | 5:f4db4cd245e3 | 27 | InterruptIn DD_A(P0_22);//20 |
ladner | 5:f4db4cd245e3 | 28 | InterruptIn DD_B(P0_16);//19 |
ladner | 5:f4db4cd245e3 | 29 | InterruptIn DD_C(P0_14);//18 |
ladner | 5:f4db4cd245e3 | 30 | DigitalIn DD_D(P0_14); |
ladner | 5:f4db4cd245e3 | 31 | BusIn DD(P0_22,P0_16); |
ladner | 5:f4db4cd245e3 | 32 | //Timeout DD_reset; |
ladner | 5:f4db4cd245e3 | 33 | char DD_last; |
ladner | 5:f4db4cd245e3 | 34 | char DD_d; |
ladner | 1:0eaa7682f7e1 | 35 | |
ladner | 5:f4db4cd245e3 | 36 | void dreh(); |
ladner | 5:f4db4cd245e3 | 37 | void druck(); |
ladner | 1:0eaa7682f7e1 | 38 | |
ladner | 5:f4db4cd245e3 | 39 | void up(); |
ladner | 5:f4db4cd245e3 | 40 | void down(); |
ladner | 5:f4db4cd245e3 | 41 | void accept(); |
ladner | 5:f4db4cd245e3 | 42 | void exit(); |
ladner | 5:f4db4cd245e3 | 43 | void print_menu(); |
ladner | 5:f4db4cd245e3 | 44 | void Control(); |
ogris | 7:bd4b77580026 | 45 | void ausfuehren(); |
ladner | 1:0eaa7682f7e1 | 46 | |
ladner | 5:f4db4cd245e3 | 47 | //string test (""); |
ladner | 5:f4db4cd245e3 | 48 | // "1234567890123456789","1234567890123456789","1234567890123456789","1234567890123456789", ,"1234567890123456789","1234567890123456789","1234567890123456789", |
ogris | 7:bd4b77580026 | 49 | 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: ","","Colour-Menu "}; |
ogris | 7:bd4b77580026 | 50 | const char * const text_ln1[] = {"Spiel ","7.Zustand ","Farben ","Spiel ","","Disable ","accept ","Laden ","","Schmeiszwang <I/0> ","Wert: <wert> ","Laden ","","Zeit ","Farbverhalten ","New ","","RED"}; |
ogris | 7:bd4b77580026 | 51 | const char * const text_ln2[] = {"Anzeige ","Spielregeln ","Hellichkeit/Sp.Led ","Config. ","","Enable ","SP: 1 2 3 4 ","Speichern ","","Go Home first <I/0>","Sp.Led-Verhalten ","Speichern ","","Agro/Taktik ","Farb def ","Reset ","","BLU"}; |
ogris | 7:bd4b77580026 | 52 | const char * const text_ln3[] = {"Speicher ","Autoplay ","Wurfel ","Ofline/Com ",""," "," ","Reset ","","Ausfahrzwang <I/0> ","Andert: <wert> ","Reset ","","Enable/Manuell ","Hellichkeit ","Com ","","GRE"}; |
ogris | 7:bd4b77580026 | 53 | // xx/xx/xx/xx/Xx |
ogris | 7:bd4b77580026 | 54 | // 4 3 2 1 0 //ebenen |
ladner | 1:0eaa7682f7e1 | 55 | |
ogris | 7:bd4b77580026 | 56 | char selected[256];//Auf welchem Punkt er im Menü ist bzw zuletzt war |
ogris | 7:bd4b77580026 | 57 | char depth = 0;//WEnn man nicht im Menü ist ist es n0; bei 1 in menu bei 2 in untermenu |
ogris | 7:bd4b77580026 | 58 | int postion = 0;//Dafür brauche ich die Methode |
ladner | 5:f4db4cd245e3 | 59 | |
ladner | 0:e97a6a69fe4b | 60 | |
ladner | 1:0eaa7682f7e1 | 61 | int main() |
ladner | 0:e97a6a69fe4b | 62 | { |
ladner | 5:f4db4cd245e3 | 63 | //Random.start(); |
ladner | 1:0eaa7682f7e1 | 64 | //Random.stop(); |
ladner | 1:0eaa7682f7e1 | 65 | //Random.read_us(); |
ladner | 1:0eaa7682f7e1 | 66 | |
ladner | 1:0eaa7682f7e1 | 67 | //Ticker: |
ladner | 1:0eaa7682f7e1 | 68 | //.attach(&main,[sek]); |
ladner | 1:0eaa7682f7e1 | 69 | //.attach_us(&main,[micro-sec]); |
ladner | 1:0eaa7682f7e1 | 70 | //.detach(); |
ladner | 1:0eaa7682f7e1 | 71 | |
ladner | 1:0eaa7682f7e1 | 72 | //myled = 0xFFF; |
ogris | 7:bd4b77580026 | 73 | port.baud(76800); //zu übertragung für den PC |
ladner | 1:0eaa7682f7e1 | 74 | port.format(8,Serial::None, 1); |
ladner | 1:0eaa7682f7e1 | 75 | port.attach(&Control); |
ladner | 4:2acb70f9cd22 | 76 | /* |
ladner | 5:f4db4cd245e3 | 77 | __disable_irq(); |
ladner | 5:f4db4cd245e3 | 78 | __enable_irq(); |
ladner | 4:2acb70f9cd22 | 79 | */ |
ladner | 5:f4db4cd245e3 | 80 | wait(0.01); |
ogris | 7:bd4b77580026 | 81 | DD_A.mode(PullDown);//Schaltet indern einen Pulldown WIeder ein |
ladner | 5:f4db4cd245e3 | 82 | DD_B.mode(PullDown); |
ladner | 5:f4db4cd245e3 | 83 | DD_C.mode(PullDown); |
ogris | 7:bd4b77580026 | 84 | DD_A.rise(&dreh);//Interrupt rudine zuweisen |
ladner | 5:f4db4cd245e3 | 85 | DD_A.fall(&dreh); |
ladner | 5:f4db4cd245e3 | 86 | DD_B.rise(&dreh); |
ladner | 5:f4db4cd245e3 | 87 | DD_B.fall(&dreh); |
ladner | 5:f4db4cd245e3 | 88 | DD_C.rise(&druck); |
ladner | 5:f4db4cd245e3 | 89 | DD_C.fall(&druck); |
ogris | 7:bd4b77580026 | 90 | DD_last = DD;//fürs entprellen |
ladner | 5:f4db4cd245e3 | 91 | DD_d=DD_D; |
ladner | 1:0eaa7682f7e1 | 92 | |
ladner | 5:f4db4cd245e3 | 93 | //text_ln0[0]=""; |
ladner | 5:f4db4cd245e3 | 94 | //port.printf("D%c%ctest\n",27,27); |
ladner | 5:f4db4cd245e3 | 95 | print_menu(); |
ladner | 1:0eaa7682f7e1 | 96 | |
ladner | 1:0eaa7682f7e1 | 97 | while(1) ; |
ladner | 0:e97a6a69fe4b | 98 | } |
ladner | 5:f4db4cd245e3 | 99 | void Control() |
ladner | 1:0eaa7682f7e1 | 100 | { |
ladner | 5:f4db4cd245e3 | 101 | while(port.readable ()) |
ladner | 1:0eaa7682f7e1 | 102 | { |
ladner | 5:f4db4cd245e3 | 103 | char message = port.getc(); |
ladner | 5:f4db4cd245e3 | 104 | switch(message) |
ladner | 1:0eaa7682f7e1 | 105 | { |
ladner | 5:f4db4cd245e3 | 106 | case 'D': |
ladner | 5:f4db4cd245e3 | 107 | port.printf("Ldepth:%d,selected[depth-1]:%d\n",depth,selected[depth-1]); |
ladner | 5:f4db4cd245e3 | 108 | break; |
ladner | 5:f4db4cd245e3 | 109 | case 'E': |
ladner | 5:f4db4cd245e3 | 110 | exit(); |
ladner | 5:f4db4cd245e3 | 111 | break; |
ladner | 5:f4db4cd245e3 | 112 | case 'F': |
ladner | 5:f4db4cd245e3 | 113 | up(); |
ladner | 5:f4db4cd245e3 | 114 | break; |
ladner | 5:f4db4cd245e3 | 115 | case 'G': |
ladner | 5:f4db4cd245e3 | 116 | down(); |
ladner | 5:f4db4cd245e3 | 117 | break; |
ladner | 5:f4db4cd245e3 | 118 | case 'H': |
ladner | 5:f4db4cd245e3 | 119 | accept(); |
ladner | 5:f4db4cd245e3 | 120 | break; |
ladner | 5:f4db4cd245e3 | 121 | case 'I': |
ladner | 5:f4db4cd245e3 | 122 | depth=0; |
ladner | 5:f4db4cd245e3 | 123 | selected[0]=0; |
ladner | 5:f4db4cd245e3 | 124 | print_menu(); |
ladner | 5:f4db4cd245e3 | 125 | break; |
ladner | 1:0eaa7682f7e1 | 126 | } |
ladner | 1:0eaa7682f7e1 | 127 | } |
ladner | 1:0eaa7682f7e1 | 128 | } |
ladner | 5:f4db4cd245e3 | 129 | void dreh() |
ladner | 1:0eaa7682f7e1 | 130 | { |
ladner | 5:f4db4cd245e3 | 131 | char temp = DD; |
ladner | 5:f4db4cd245e3 | 132 | if(DD_last == 3) |
ladner | 5:f4db4cd245e3 | 133 | { |
ladner | 5:f4db4cd245e3 | 134 | if(temp == 0) |
ladner | 5:f4db4cd245e3 | 135 | DD_last = 0; |
ladner | 5:f4db4cd245e3 | 136 | } |
ladner | 1:0eaa7682f7e1 | 137 | else |
ladner | 1:0eaa7682f7e1 | 138 | { |
ladner | 5:f4db4cd245e3 | 139 | if(temp == 3) |
ladner | 5:f4db4cd245e3 | 140 | { |
ladner | 5:f4db4cd245e3 | 141 | if(DD_last == 1) |
ladner | 5:f4db4cd245e3 | 142 | up(); |
ladner | 5:f4db4cd245e3 | 143 | if(DD_last == 2) |
ladner | 5:f4db4cd245e3 | 144 | down(); |
ladner | 5:f4db4cd245e3 | 145 | } |
ladner | 5:f4db4cd245e3 | 146 | DD_last = temp; |
ladner | 1:0eaa7682f7e1 | 147 | } |
ladner | 0:e97a6a69fe4b | 148 | } |
ladner | 1:0eaa7682f7e1 | 149 | |
ladner | 5:f4db4cd245e3 | 150 | void druck() |
ladner | 1:0eaa7682f7e1 | 151 | { |
ladner | 5:f4db4cd245e3 | 152 | if(DD_D==DD_d) |
ladner | 5:f4db4cd245e3 | 153 | return; |
ladner | 5:f4db4cd245e3 | 154 | else if(DD_D) |
ladner | 5:f4db4cd245e3 | 155 | accept(); |
ladner | 5:f4db4cd245e3 | 156 | DD_d=DD_D; |
ladner | 0:e97a6a69fe4b | 157 | } |
ladner | 1:0eaa7682f7e1 | 158 | |
ladner | 5:f4db4cd245e3 | 159 | void up() |
ladner | 0:e97a6a69fe4b | 160 | { |
ladner | 5:f4db4cd245e3 | 161 | if(depth>0) |
ladner | 0:e97a6a69fe4b | 162 | { |
ladner | 5:f4db4cd245e3 | 163 | if(selected[depth-1]<1) |
ladner | 5:f4db4cd245e3 | 164 | selected[depth-1]=3; |
ladner | 5:f4db4cd245e3 | 165 | else |
ladner | 5:f4db4cd245e3 | 166 | selected[depth-1]--; |
ladner | 6:eda2b36d5be1 | 167 | print_menu(); |
ladner | 1:0eaa7682f7e1 | 168 | } |
ladner | 1:0eaa7682f7e1 | 169 | } |
ladner | 5:f4db4cd245e3 | 170 | void down() |
ladner | 1:0eaa7682f7e1 | 171 | { |
ladner | 5:f4db4cd245e3 | 172 | if(depth>0) |
ladner | 1:0eaa7682f7e1 | 173 | { |
ladner | 5:f4db4cd245e3 | 174 | if(selected[depth-1]>2) |
ladner | 5:f4db4cd245e3 | 175 | selected[depth-1]=0; |
ladner | 1:0eaa7682f7e1 | 176 | else |
ladner | 5:f4db4cd245e3 | 177 | selected[depth-1]++; |
ladner | 6:eda2b36d5be1 | 178 | print_menu(); |
ladner | 1:0eaa7682f7e1 | 179 | } |
ladner | 5:f4db4cd245e3 | 180 | } |
ladner | 5:f4db4cd245e3 | 181 | void accept() |
ladner | 5:f4db4cd245e3 | 182 | { |
ladner | 5:f4db4cd245e3 | 183 | if(depth>0) |
ladner | 2:3a90b20958ff | 184 | { |
ogris | 7:bd4b77580026 | 185 | |
ogris | 7:bd4b77580026 | 186 | if(depth<=3) |
ladner | 2:3a90b20958ff | 187 | { |
ogris | 7:bd4b77580026 | 188 | if(selected[depth-1]==0) |
ogris | 7:bd4b77580026 | 189 | exit(); |
ogris | 7:bd4b77580026 | 190 | else |
ogris | 7:bd4b77580026 | 191 | { |
ogris | 7:bd4b77580026 | 192 | selected[depth]=1; |
ogris | 7:bd4b77580026 | 193 | depth++; |
ogris | 7:bd4b77580026 | 194 | } |
ladner | 2:3a90b20958ff | 195 | } |
ladner | 0:e97a6a69fe4b | 196 | } |
ladner | 5:f4db4cd245e3 | 197 | else |
ladner | 5:f4db4cd245e3 | 198 | depth=1; |
ladner | 5:f4db4cd245e3 | 199 | print_menu(); |
ladner | 5:f4db4cd245e3 | 200 | } |
ogris | 7:bd4b77580026 | 201 | bool ausfuehren() |
ogris | 7:bd4b77580026 | 202 | { |
ogris | 7:bd4b77580026 | 203 | |
ogris | 7:bd4b77580026 | 204 | } |
ladner | 5:f4db4cd245e3 | 205 | void exit() |
ladner | 5:f4db4cd245e3 | 206 | { |
ladner | 5:f4db4cd245e3 | 207 | if(depth>0) |
ladner | 0:e97a6a69fe4b | 208 | { |
ladner | 5:f4db4cd245e3 | 209 | depth--; |
ladner | 5:f4db4cd245e3 | 210 | if(depth<=3) |
ladner | 5:f4db4cd245e3 | 211 | selected[depth]=0; |
ladner | 2:3a90b20958ff | 212 | } |
ladner | 5:f4db4cd245e3 | 213 | print_menu(); |
ladner | 5:f4db4cd245e3 | 214 | } |
ladner | 5:f4db4cd245e3 | 215 | void print_menu() |
ladner | 5:f4db4cd245e3 | 216 | { |
ladner | 5:f4db4cd245e3 | 217 | if(depth>0) |
ladner | 2:3a90b20958ff | 218 | { |
ladner | 5:f4db4cd245e3 | 219 | if(depth>3)// " " |
ladner | 5:f4db4cd245e3 | 220 | { |
ladner | 5:f4db4cd245e3 | 221 | port.printf("D%c%c Custom \n",27,27); |
ladner | 5:f4db4cd245e3 | 222 | lcd.locate(0,0); |
ladner | 5:f4db4cd245e3 | 223 | lcd.printf(" Custom "); |
ladner | 5:f4db4cd245e3 | 224 | } |
ladner | 5:f4db4cd245e3 | 225 | else |
ladner | 0:e97a6a69fe4b | 226 | { |
ladner | 5:f4db4cd245e3 | 227 | uint32_t _selected = 0; |
ladner | 5:f4db4cd245e3 | 228 | for(char i = 0;i<depth-1;i++) |
ladner | 5:f4db4cd245e3 | 229 | _selected = _selected|(selected[i]<<(i*2)); |
ladner | 5:f4db4cd245e3 | 230 | //port.printf("L_selected:%d\n",_selected); |
ladner | 5:f4db4cd245e3 | 231 | lcd.locate(1,0); |
ladner | 5:f4db4cd245e3 | 232 | lcd.printf(text_ln0[_selected]); |
ladner | 5:f4db4cd245e3 | 233 | port.printf("D%c%c%s\n",28,27,text_ln0[_selected]); |
ladner | 5:f4db4cd245e3 | 234 | lcd.locate(1,1); |
ladner | 5:f4db4cd245e3 | 235 | lcd.printf(text_ln1[_selected]); |
ladner | 5:f4db4cd245e3 | 236 | port.printf("D%c%c%s\n",28,28,text_ln1[_selected]); |
ladner | 5:f4db4cd245e3 | 237 | lcd.locate(1,2); |
ladner | 5:f4db4cd245e3 | 238 | lcd.printf(text_ln2[_selected]); |
ladner | 5:f4db4cd245e3 | 239 | port.printf("D%c%c%s\n",28,29,text_ln2[_selected]); |
ladner | 5:f4db4cd245e3 | 240 | lcd.locate(1,3); |
ladner | 5:f4db4cd245e3 | 241 | lcd.printf(text_ln3[_selected]); |
ladner | 5:f4db4cd245e3 | 242 | port.printf("D%c%c%s\n",28,30,text_ln3[_selected]); |
ladner | 5:f4db4cd245e3 | 243 | |
ladner | 5:f4db4cd245e3 | 244 | for(char i=0;i<4;i++) |
ladner | 1:0eaa7682f7e1 | 245 | { |
ladner | 5:f4db4cd245e3 | 246 | lcd.locate(0,i); |
ogris | 7:bd4b77580026 | 247 | if(selected[depth-1]==i) |
ladner | 1:0eaa7682f7e1 | 248 | { |
ladner | 5:f4db4cd245e3 | 249 | if(i==0) |
ladner | 1:0eaa7682f7e1 | 250 | { |
ladner | 5:f4db4cd245e3 | 251 | port.printf("D%c%c<\n",27,i+27); |
ladner | 5:f4db4cd245e3 | 252 | lcd.putc('<'); |
ladner | 1:0eaa7682f7e1 | 253 | } |
ladner | 5:f4db4cd245e3 | 254 | else |
ladner | 5:f4db4cd245e3 | 255 | { |
ladner | 5:f4db4cd245e3 | 256 | port.printf("D%c%c>\n",27,i+27); |
ladner | 5:f4db4cd245e3 | 257 | lcd.putc('>'); |
ladner | 5:f4db4cd245e3 | 258 | } |
ladner | 1:0eaa7682f7e1 | 259 | } |
ladner | 2:3a90b20958ff | 260 | else |
ladner | 5:f4db4cd245e3 | 261 | { |
ladner | 5:f4db4cd245e3 | 262 | port.printf("D%c%c \n",27,i+27); |
ladner | 5:f4db4cd245e3 | 263 | lcd.putc(' '); |
ladner | 2:3a90b20958ff | 264 | } |
ladner | 1:0eaa7682f7e1 | 265 | } |
ladner | 1:0eaa7682f7e1 | 266 | } |
ladner | 1:0eaa7682f7e1 | 267 | } |
ladner | 1:0eaa7682f7e1 | 268 | else |
ladner | 1:0eaa7682f7e1 | 269 | { |
ladner | 5:f4db4cd245e3 | 270 | lcd.cls(); |
ladner | 5:f4db4cd245e3 | 271 | lcd.printf(" Spiel lauft..."); |
ladner | 5:f4db4cd245e3 | 272 | lcd.locate(0,3); |
ladner | 5:f4db4cd245e3 | 273 | lcd.printf("12345678901234567890"); |
ladner | 5:f4db4cd245e3 | 274 | port.printf("D%c%c Spiel lauft... \n",27,27); |
ladner | 5:f4db4cd245e3 | 275 | port.printf("D%c%c \n",27,28); |
ladner | 5:f4db4cd245e3 | 276 | port.printf("D%c%c \n",27,29); |
ladner | 5:f4db4cd245e3 | 277 | port.printf("D%c%c12345678901234567890\n",27,30); |
ladner | 1:0eaa7682f7e1 | 278 | } |
ladner | 1:0eaa7682f7e1 | 279 | } |
ladner | 1:0eaa7682f7e1 | 280 |