hallo rolf,
auch dein code funzt genau wie die andern nicht
vielleicht ist meine platine (oder der atmega) kaputt?!?!
könnte vielleicht jemand freundlicherweise das prog mal mit seinem RN-Control ausprobieren??
mfg
chris
Warum fragst du dann auf "<130" ab?
Wenn kein Taster gedrückt ist, soll sich doch gar nichts ändern, oder?
Im Moment wird er mit etwa 50Hz runterzählen, wenn kein Taster gedrückt ist. Dann sind alle LEDs nur schwach an.
Ich würde das dann so machen:
GrußCode:$regfile = "m32def.dat" $crystal = 16000000 Config Adc = Single , Prescaler = Auto Config Portc = Output Portc = 30 'LED 1 ist an PORTC=00011110 Start Adc Dim I As Byte Dim X As Word X = 1 I = 1 Do X = Getadc(7) If X > 0 Then If X < 130 Then 'Taster für runter gedrückt I = I - 1 If I = 255 Then I = 4 'dann hat es einen Überlauf gegeben, I ist Byte, also 0-255 Else 'Taster für rauf gedrückt I = I + 1 If I = 6 Then I = 0 End If Portc = 31 'Alle LEDs aus Portc.i = 0 'LED Nr. i an End If Waitms 20 'das ganze etwa 50 mal pro Sekunde Loop End
Rolf
hallo rolf,
auch dein code funzt genau wie die andern nicht
vielleicht ist meine platine (oder der atmega) kaputt?!?!
könnte vielleicht jemand freundlicherweise das prog mal mit seinem RN-Control ausprobieren??
mfg
chris
Was passiert denn jetzt?
Ist die erste LED an, wenn kein Taster gedrückt ist?
Und wenn du einen Taster drückst, bleibt danach die LED an?
Erklär mal etwas genauer, was nicht geht.
Gruß
Rolf
am anfang, nach anlegen der spannung leuchtet led1.
wenn kein taster gedrückt ist, ist das ganze wie ein lauflicht!! wahnsinnig schnell, könnte vielleicht 50hz sein (wegen waitms 20??).
wenn man eine taste drückt, ändert sich überhauptnichts!!
habe jetzt auch schon den atmega32 gegen einen anderen atmega32 ausgetauscht, ohne erfolg!!
Bist du dir ganz sicher, dass immer x=0 ist, wenn kein Taster gedrückt ist? Das Programm sollte bei X=0 nicht in den Bereich laufen, wo die Ausgänge geändert werden. Ist X aber >0, dann wird der erste Teil der IF-Abfrage dauernd durchlaufen und du bekommst ein Lauflicht.
Hast du vielleicht noch eine LED, die du an PORTC.5 klemmen kannst?
Die könnte man dann benutzen um anzuzeigen, dass tatsächlich x=0 ist.
Oder du gibst den Wert von X über Print an den PC, wenn du eine Verbindung hast. Oder auf ein Display.
Im Moment denke ich jedenfalls, ist der Wert von X das Problem.
Gruß
Rolf
Um das Mysterium zu lüften:
Lt. RNControl Test Programm ist die korrekte Tastenabfrage folgendermassen:
Also ist KEINE Taste ist offenbar >= 1010Code:Start Adc Ws = Getadc(7) If Ws < 1010 Then Select Case Ws Case 410 To 450 'TASTE 1 gedrückt Case 340 To 380 'TASTE 2 gedrückt Case 265 To 305 'TASTE 3 gedrückt Case 180 To 220 'TASTE 4 gedrückt Case 100 To 130 'TASTE 5 gedrückt End Select End If
ANderes Problem:
Beim Runterzählen macht man üblicherweiseCode:If X < 130 Then I = I - 1 Waitms 20 If I = 1 Then .... Elseif I > 5 Then ....
Elseif I < 1 Then ....
Die Zahl kann ja nur kleiner werden und nicht grösser
Noch was :
bei I > 5 oder < 1 setzt du immer I=1
da du aber sofort +1 oder -1 rechnest, kommt also entweder 2 oder 0 raus, die "1" kommt NIE
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
kann mir den niemand helfen??
ich habe schon oft gelesen, wie ein paar leute die geschwindigkeit stufenweise mit zwei tastern geregelt haben! wie funktioniert das?? kann sich bitte jemand melden??
das müsste doch das gleiche sein, oder???
mfg
chris
Lesezeichen