hier mal der code aus der m32 LIB nur eben mit meinen werten
hier die Programmfunktion, wo ich auf die Tasten reagiereCode:// KeyLeiste: uint8_t getPressedKeyNumberLeiste(void) { uint16_t keysLeiste; keysLeiste = readADC(ADC_7); if(keysLeiste < 1020) { nop(); nop(); nop(); keysLeiste += readADC(ADC_7); keysLeiste >>= 1; } // das ist der Teil der mit 1x5 Tastatur funktioniert if(keysLeiste < 50) // gemessener Wert 0 return 1; if(keysLeiste < 580) // gemessener Wert 510 return 2; if(keysLeiste < 700) // gemessener Wert 682 return 3; if(keysLeiste < 790) // gemessener Wert 767 return 4; if(keysLeiste < 830) // gemessener Wert 818 return 5; return 0; // 1x5 Code ENDE // Das ist der 4x4 Code, der nicht funktioniert /* if(keysLeiste < 210) // gemessener Wert 208 return 1; if(keysLeiste < 223) // gemessener Wert 221 return 2; if(keysLeiste < 235) // gemessener Wert 233 return 3; if(keysLeiste < 248) // gemessener Wert 246 return 4; if(keysLeiste < 262) // gemessener Wert 260 return 5; if(keysLeiste < 283) // gemessener Wert 281 return 6; if(keysLeiste < 304) // gemessener Wert 302 return 7; if(keysLeiste < 325) // gemessener Wert 323 return 8; if(keysLeiste < 361) // gemessener Wert 359 return 9; if(keysLeiste < 402) // gemessener Wert 399 return 10; if(keysLeiste < 444) // gemessener Wert 442 return 11; if(keysLeiste < 492) // gemessener Wert 490 return 12; if(keysLeiste < 550) // gemessener Wert 548 return 13; if(keysLeiste < 647) // gemessener Wert 645 return 14; if(keysLeiste < 768) // gemessener Wert 766 return 15; if(keysLeiste < 922) // gemessener Wert 920 return 16; */ return 0; } //----------------------------------------------------------------------- uint8_t checkPressedKeyEventLeiste(void) { static uint8_t pressed_keyLeiste = 0; if(pressed_keyLeiste) { if(!getPressedKeyNumberLeiste()) pressed_keyLeiste = 0; } else { pressed_keyLeiste = getPressedKeyNumberLeiste(); if(pressed_keyLeiste) return pressed_keyLeiste; } return 0; } //----------------------------------------------------------------------- uint8_t checkReleasedKeyEventLeiste(void) { static uint8_t released_keyLeiste= 0; if(released_keyLeiste) { if(!getPressedKeyNumberLeiste()) { uint8_t tmp = released_keyLeiste; released_keyLeiste = 0; return tmp; } } else released_keyLeiste = getPressedKeyNumberLeiste(); return 0; }
Code:void tasterzwei(void) { uint8_t keyLeiste = getPressedKeyNumberLeiste(); if(keyLeiste) // If a key is pressed... (key != 0) { while(getPressedKeyNumberLeiste()); switch(keyLeiste) { case 1: setLEDs(0b0001); clearLCD(); showScreenLCD("Leiste", "Taste 1","",""); break; case 2: setLEDs(0b0010); clearLCD(); showScreenLCD("Leiste", "Taste 2","",""); break; case 3: setLEDs(0b0100); clearLCD(); showScreenLCD("Leiste", "Taste 3","",""); u.s.wNein, entweder 4x4 oder 1x5Liest du also die Keys deiner 4x4 und der 1x5 parallel ein?
zum lesen benutze ich den ADC 7 und nur dafür, sonst wird der Port nicht benutztstatt den ADC0 2 mal zu belegen?
also ich habe zuerst alle Tasten eingelesen. So kam ich auf 16 Werte so auch auf 233 und jeweils immer 2 dazu auf 235. Diese Werte habe ich dann in die LIB eingetragen. Das eine Taste klebt kann ich ausschliessen (gemessen)Du sprachst von Wert (ADC) 920 .. das klingt mir immer noch als sehr hoch... bist du sicher das nicht eine der Tasten klebt?
Erzeugen alle Keys 920 ?
Und wie bist du an die Werte um 230 gekommen wenn die Tastatur nun 920 produziert?
Nein es ist nur eine Taste gewesen und ist jetzt auch nicht mehr nachvollziehbar, da die Tastatur mit der Abfrage garnicht mehr reagiert. Wenn ich als Test die ADC Werte abfrage bekomme ich genau wieder die Werte die ich zuerst bekommen habe.
mfG TrainMen







Zitieren


Lesezeichen