Hallo,
kann mir jemand Tipps zu dem folgenden Problem geben?
Wenn ich Taster 1 sehr schnell hintereinander drücke, führt mein Programm dann auf einmal Taster 2 aus und nicht nocheinmal den Teil von Taster 1.
Grüsse an Alle
Adleo
Mein Master-Code:
Code:int main(void) { initRP6Control(); initLCD(); I2CTWI_initMaster(100); // Als Master initialisieren und Frequenz 100 einstellen uint8_t key_abfrage=0; uint8_t anzeige=1; uint8_t Batterie; uint16_t SpeedLight; clearLCD(); showScreenLCD("Drucke einen","Taster!!!!!!!!!!"); while(true){ if(getStopwatch1()>2000){ clearLCD(); showScreenLCD("Drucke einen","Taster!!!!!!!!!!"); setStopwatch1(0); } key_abfrage=0; key_abfrage=getPressedKeyNumber(); if (key_abfrage != 0){ //Taster gedrückt? anzeige=1; writeInteger(key_abfrage,DEC); writeChar('\n'); sound(180,80,25); sound(220,80,0); switch(key_abfrage){ //Welcher Taster gedrückt.... case 1: BaseADC(); //Auslesen Durchschnitt(LichtL,LichtR); SpeedLight=70+(80/950)*(DSchnitt-50); BaseMotorSpeed(SpeedLight); clearLCD(); showScreenLCD("Geschwindigkeit:",""); setCursorPosLCD(1,0); writeIntegerLengthLCD(SpeedLight, DEC, 4); setStopwatch1(0); startStopwatch1(); //mSleep(2000); key_abfrage=0; break; case 2: clearLCD(); BaseLEDS(0b000000); showScreenLCD("Die LED ist aus!","!!!!!!!!!!!!!!!!"); mSleep(2000); clearLCD(); break; case 3: clearLCD(); showScreenLCD("Batterie: ","ist das OK?"); setCursorPosLCD(0, 10); if (!I2CTWI_isBusy()) { I2CTWI_transmitByte(10, 1); Batterie = I2CTWI_readByte(10); //Batterie auslesen } writeIntegerLengthLCD(Batterie, DEC, 4); mSleep(2000); break; case 4: clearLCD(); showScreenLCD("Warnung! Der","Motor ist an!"); BaseMotorStart(); //Motor starten clearLCD(); showScreenLCD("Motor lauft!","!!!!!!!!!!!!!!!!"); mSleep(2000); break; case 5: BaseMotorStop(); clearLCD(); showScreenLCD("Motor wird","angehalten!!!!!!"); mSleep(2000); break; } } } return 0; }







Zitieren

Lesezeichen