Re: PCF 8574 + PCFKeyb.c2 Kategorie: I²C-Bus (von Borris Koszlat, http://www.nighteagle.de - 15.03.2006 14:27) | ||
Als Antwort auf PCF 8574 + PCFKeyb.c2 von Borris Koszlat - 7.03.2006 19:30 | ||
| ||
Guten Tag allesamt! also nachdem ich jetzt sehr viel in den Archiven gesucht habe, habe ich etwas gefunden das ich dann erfogreich ausbauen konnte. Mein Dank geht an Julian mit seiner "Modulzusatz-Idee" für das PCFKEYB.c2 Modul. Er postete es am 07.04.2004. Also schon etwas länger her. Aber der Grundgedanke gefiel mir, ich habe es etwas ausgebaut, damit kann ich jetzt ähnlich einem elektronischem Zahlenschlo� mehrere (in meinem Fall 8 Ziffern) eingeben und diese werden dann in den String übergeben. Dann lasse ich prüfen ob der Stringinhalt meine Wertvorgabe entspricht und lasse die entsprechenden "actions" laufen. Interessant war hier das Julian (Ein Lob an diese Stelle!) vergessen hatte nach dem Abfragen der Stringvariable bzw. Integervariable, diese wieder mit str.clear(stringvar); auf Null zu stellen. Ansonsten nimmt er keine Kombination zweimal. Ist ja auch klar, da der Wert wohl hinzuaddiert wird. Hier jetzt der abgeänderte und für mein Problem genutzte Code. thread main { int eins; // Variable für Kombination int intvar; byte taste,n; string stringvar; //i2c.init(); pcfkeyb.init(8,!0); lcdext.init(); n=0; eins = 12345678; //Kombination die zum Erfolg führt lcdext.clear(); lcdext.goto(1,3); lcdext.print("Geheimzahl"); lcdext.goto(2,4); lcdext.print("eingeben!"); do { taste = pcfkeyb.getchar(0); pcfkeyb.released (1); //lcdext.put (taste); n=n+1; if n==1 { plm.beep(15); lcdext.clear(); lcdext.print("Zahl 1"); sleep 1000; } ///>>>>>>> // Weitere Anzeige auf dem Display, wie man will stringvar = stringvar + taste; } while n==8 nor taste==0x23; intvar = strx.getNum(stringvar); if intvar==eins { lcdext.clear(); lcdext.goto(1,0); lcdext.print("Eingabe"); lcdext.goto(2,0); lcdext.print("richtig!"); str.clear(stringvar); // String wieder löschen!!! sleep 2000; } else { lcdext.clear(); lcdext.goto(1,0); lcdext.print("Access"); lcdext.goto(2,0); lcdext.print("denied!"); str.clear(stringvar); sleep 2000; } sleep 100; plm.beep(-1); } Hoffe hier auch jemanden geholfen zu haben! Denn jetzt liegt es ja bald im Archiv. Tolle Sache! Ciao nighteagle Meine Seite: http://www.nighteagle.de | ||
Antwort schreiben Antworten: |