Hallo Ich habe eine Frage. Ich habe ein ATMega 16 mit Bascom progrmmiert. Wenn ein Taster gedrückt wird, wird ein grünes Led eingeschalten, durch nochmaliges drücken das gelbe und danach das rot Led. inetwa so (habe den Code gerade nicht zur Hand): debounce taster,0,Zahl, sub If I = 1 then Led grün=1 If I = 2 then Led grün,gelb=1 If I =3 then Led grün,gelb,rot=1 Zahl: I=I+1 return Theoretisch sollte ja das grüne Led immer schön hell leuchten. Das Led wird ja 3 mal "neu" eingeschaltet. Jedoch leuchtet das grüne Led erst richtig hell (wie normal) wenn das gelbe und rote Led auch eingeschaltet ist. Das genau gleiche mit dem gelben. Das leuchtet auch nur in voller Leuchtstärke wenn auch das rote brennt..... Vom Pin der Led's habe ich einen Transistortreinber eingelötet. Betrieben wird das ganze mit 5V. Kann mir jemand erklären warum das so ist?!?? Vielen dank
TheChriis schrieb: > inetwa so (habe den Code gerade nicht zur Hand): Bitte nicht 'inetwa Code' .... > > debounce taster,0,Zahl, sub > > If I = 1 then Led grün=1 > If I = 2 then Led grün,gelb=1 > If I =3 then Led grün,gelb,rot=1 > > > Zahl: > I=I+1 > return ... denn dieser Code ist ziemlicher Nonsense. Es kommt immer auf die Details an und die sieht man in 'inetwa-Code' nun mal nicht. PS: Es heißt 'die' Led. Led steht für 'light emitting diode' oder auf deutsch 'licht emittierende Diode'. Und der korrekte Artikel für Diode ist nun mal 'die' und nicht 'das'.
Okey hier ist der richtige Code. Es ist nur ein ausschnitt des Programmes. Und oben habe ich mich noch verschrieben ,denn es ist ein Atmega 8 nicht 16!
1 | Starten: |
2 | Do ' Hauptschleife |
3 | |
4 | Debounce Taster_auswahl , 0 , Auswahl , Sub |
5 | Debounce Taster_start , 0 , Start_programm , Sub |
6 | Debounce Taster_auf , 0 , Aufsteigen , Sub |
7 | Debounce Taster_ab , 0 , Absteigen , Sub |
8 | |
9 | |
10 | If Zahl = 1 Then 'Wenn Zahl = 1 dann |
11 | Set Ledgruen |
12 | Set Ledgruengross |
13 | 'Ledgruen an |
14 | Else 'oder |
15 | Reset Ledgruen |
16 | Reset Ledgruengross 'Ledgruen aus |
17 | End If |
18 | |
19 | If Zahl = 2 Then 'Wenn Zahl = 2 dann |
20 | Set Ledgruen 'ledgruen und Ledgelb an |
21 | Set Ledgruengross |
22 | Set Ledgelb |
23 | Set Ledgelbgross |
24 | Else 'Ledgrün und Ledgelb aus |
25 | Reset Ledgruen |
26 | Reset Ledgruengross |
27 | Reset Ledgelb |
28 | Reset Ledgelbgross |
29 | End If |
30 | |
31 | If Zahl = 3 Then 'wenn Zahl = 3 dann |
32 | Set Ledgruen |
33 | Set Ledgruengross ' Ledgrün, Ledgelb und Ledrot an |
34 | Set Ledgelb |
35 | Set Ledgelbgross |
36 | Set Ledrot |
37 | Set Ledrotgross |
38 | Else |
39 | Reset Ledgruen |
40 | Reset Ledgruengross 'Ledgrün, Ledgelb, Ledrot aus |
41 | Reset Ledgelb |
42 | Reset Ledgelbgross |
43 | Reset Ledrot |
44 | Reset Ledrotgross |
45 | End If |
46 | |
47 | If Zahl = 4 Then Zahl = 0 ' Wenn Zahl = 4 dann Zahl = 0 |
48 | |
49 | |
50 | |
51 | Loop 'Ende Hauptschleife |
52 | End 'Ende Programm |
53 | |
54 | '-------------------------------------------------------------------------- |
55 | Auswahl: 'SubProgramm Auswahl |
56 | Zahl = Zahl + 1 'Der Zahl 1 dazurechnen |
57 | Return 'Zurück zum Startpunkt |
Es spielt keine Rolle welches grüne Led (ob ledgruen oder ledgruengross). Sie verhalten sich gleich. Sry. Ich dachte es heisst das Led. Nunja man lernt nie aus!
TheChriis schrieb: > Okey hier ist der richtige Code. Es ist nur ein ausschnitt des > Programmes. Dachte ich mirs doch > If Zahl = 1 Then 'Wenn Zahl = > 1 dann > Set Ledgruen > Set Ledgruengross > 'Ledgruen an > Else 'oder > Reset Ledgruen > Reset Ledgruengross 'Ledgruen > aus > End If Wenn Zahl 2 ist, dann wird hier das else ausgeführt. Das bedeutet aber auch, dass die LED jedesmal ausgeschaltet wird. Um dann kurz darauf vom IF Zahl = 2 wieder eingeschaltet zu werden. Deine Led leuchtet nicht dunkler, sie blinkt sehr schnell. Und das sieht man dann eben. Du musst deine Strategie ändern: Welche LED muss eingeschaltet werden, wenn Zahl gleich 1 ist? Welche muss ausgeschaltet werden? Du musst hier ohne else auskommen. Wohl aber kannst du ELSEIF sinnvoll nutzen.
Ahhh.....stimmt!!!! Vielen Dank Wede es Morgen umänder / ausprobieren
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.