PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Jeder Taster für eine LED



InFaIN
28.12.2007, 11:12
Hallo,

ich hab mir den Asuro zusammengelötet und will ihn nun Programieren. Ich hab die ersten programme aus der Anleitung getestet und allles hat geklappt. Nun hab ich meinen eigenen Code geschrieben in dem eigentlich bei jedem Taster eine andere LED angehen soll, doch es passiert nichts.



#include "asuro.h"

unsigned char taste;

int main(void) {
Init();

while(1); {

if (PollSwitch()>0) {
if (PollSwitsch()==1) {StatusLED(RED);}
else if (PollSwitsch()==2) {StatusLED(YELLOW);}
else if (PollSwitsch()==4) {BackLED(ON,OFF);}
else if (PollSwitsch()==8) {BackLED(OFF,ON);}
else if (PollSwitsch()==16) {BackLED(ON,ON);}
else if (PollSwitsch()==32) {FrontLED(ON);}
}
else
{
StatusLED (GREEN);
BackLED (OFF,OFF);
FrontLED (OFF);
}
}
}

sloti
28.12.2007, 12:00
Hi InFaIN,

du solltest erstmal das Semikolon hinter "while(1)" wegnehmen. Es ist zudem immer Ratsam die PollSwitch-Funktion immer mehrmals aufzurufen, da du sonst falsche Werte erhälst. Du kannst hier im Forum mal nach PollSwitch suchen, dann wirst du sicher fündig werden.

mfg
Erik

Sternthaler
02.01.2008, 21:35
Hallo InFaIN,
willkommen im Forum. Und für alle ein 'Schönes neues Jahr'.

Wenn du den PollSwitch-Wert in einer Variablen speicherst, und die Abfrage welche Taste gedrückt wurde etwas änderst, kommst du auch ohne mehrfache Abfrage aus.

unsigned char sw;

sw = PollSwitch ();
if (sw)
{
// Auch bei falschen sw-Werten ein eindeutiges Ergebnis liefern
if (sw < 2) { StatusLED (RED); }
else if (sw < 3) { StatusLED (YELLOW); }
else if (sw < 7) { BackLED (ON,OFF); }
else if (sw < 11) { BackLED (OFF,ON); }
else if (sw < 28) { BackLED (ON,ON); }
else { FrontLED (ON); }
}


Viel Spaß und Erfolg mit dem Asuro.

Gruß Sternthaler