![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
---- Hab noch schnell einen Denkfehler behoben ---- > Hallo Andreas > als AnfĂ€ngerprojekt ist der Ansatz gar nicht so schlecht. > Nur Unterprogramme / Subroutienen werden etwas anders programmiert - siehe Gosub und Return > Ich mach dir auf die schnelle mal ein paar Ănderungen, damit du siehst wie es gemeint ist. > Ein paar Zeilen hab ich gelöscht. > > PS Weniger wie Null geht auch, dann lĂ€uft die Variable einfach ĂŒber und du hast 255. > Das kannst Du aber einfach abfangen siehe if a<0 then return > > > ZunĂ€chst oute ich mich mal als Neuling in der Programmierung. Nach einem kleinen AnfĂ€ngerprojekt, was auch tatsĂ€chlich funktioniert, wende ich mich nun einer etwas schwierigeren Aufgabe zu, die ich aber momentan noch nicht so ganz stemme. > > > > Also: Es soll eine mittels zweier Tasten zu bedienende Steuerung einer PWM werden, die den jeweiligen Zustand durch LEDs signalisiert. Um ganz genau zu sein, sollen die LEDs nur fĂŒr den Moment der BetĂ€tigung fĂŒr zwei Sekunden aktiv sein. Auch die Anfangs- und End-LEDs, die mit geringer Helligkeit leuchten sollen (extern hergestellt) sollen dann nach einem gewissen Zeit dunkelgeschaltet werden. Das habe ich momentan noch nicht im Ablauf fertig eingebaut, ist aber schon definiert. Die dahinter liegende PWM soll natĂŒrlich weiter laufen. Mir geht es jetzt erst einmal darum, ob die Version mit der LED-Steuerung so funktionieren wĂŒrde. > > Die beiden Tasten sollen unabhĂ€ngig voneinander jeweils einen Schritt rauf oder runter bewerkstelligen. > > > > Was mir nicht klar ist, dass wenn beispielsweise der Taster "rauf" 9 mal gedrĂŒckt wird, zĂ€hlt doch vermutlich der ZĂ€hler weiter hoch. Wie kann man den ZĂ€hlumfang eingrenzen? Ebenso beim runterzĂ€hlen, wie kann man den kleiner Null- Bereich verhindern (negativer Bereich geht ja wohl nicht und mĂŒĂte von daher erledigt sein- nach dem Motto aus ist aus, ausser geht nicht ;-) ) > > > > Könnte das bitte mal jemand begutachten und mir hilfreich Hinweise geben? > > > > Der Ausgang blank soll einen Transistor steuern, der die beiden Endlagen-LEDs mit geringer Helligkeit leuchten lĂ€Ăt - oder nach Ablauf eine Haltezeit eben auch nicht. > > Die Einbindung bzw. Umsetzung des PWM wird dann der nĂ€chste Schritt. Da muss ich noch eine Menge lesen. Aber ich denke, die Steuerung ist zunĂ€chst der wichtigere Teil. > > > > define seriell port [1] ' serielle Schnittstelle > > define Led1 port [2] > > define Led2 port [4] > > define Led3 port [5] > > define Led4 port [6] > > define Led5 port [9] ' Die Open-Mini besitzt wie die Open-Micro > > define Led6 port [10] ' den PORTA und zusaetzlich den PORTB. > > define Led7 port [11] > > define Led8 port [12] > > define Taste1 port [13] ' Taste rauf > > define Taste2 port [14] ' Taste runter > > define PWM port DA[15] ' PWM-Ausgang > > pwm = 128 > > define blank port [16] ' zum dunkelsteuern der LEDs > > > > ' Die Pinbelegung der > > ' Open-Mini (QY4) > > ' _____ _____ > > ' | \__/ | > > ' [ VDD GND ] VDD = 4.6 bis 5.5 Volt > > ' | | > > ' [ PTB7 PTB0 ] > > ' | | > > ' [ PTB6 PTB1 ] > > ' | | > > ' [ PTA5 PTA0 ] > > ' | | > > ' [ PTA4 PTA1 ] > > ' | | > > ' [ PTB5 PTB2 ] > > ' | | > > ' [ PTB4 PTB3 ] > > ' | | > > ' [ PTA3 PTA2 ] <--- host/run > > ' |______________| > > ' > > > > define a Byte[1] > > a = 0 > > define allleds_a byteport[1] > > define allleds_b byteport[2] > > allleds_a = 0 ' alle LEDs an Ports A aus > > allleds_b = 0 ' alle LEDs an Ports B aus > > > > #start > > > if Taste1 = (not Taste1) then gosub rauf ' Taste rauf erhöht ZĂ€hler um 1 > > if Taste2 = (not Taste2) then gosub runter ' Taste runter verringert ZĂ€hler um 1 > > goto start > > > > #rauf > > pause 2 ' Schalterentprellung > if a = 255 then Return ' Wenn der ZĂ€hler = 255 ist wird das Unterprogramm verlassen > > > a = a + 1 > gosub anzeige ' springt in das Unterprogramm Anzeige > Return > > > #runter > > pause 2 ' Schalterentprellung if a = 0 then Return ' Wenn der ZĂ€hler = 0 ist wird das Unterprogramm verlassen > > a = a - 1 > gosub anzeige > return > > > > #anzeige > > if a = 1 then led1 = on > > if a = 2 then led2 = on > > if a = 3 then led3 = on > > if a = 4 then led4 = on > > if a = 5 then led5 = on > > if a = 6 then led6 = on > > if a = 7 then led7 = on > > if a = 8 then led8 = on > return ' Springt wieder in das Unterprogramm rauf oder runter und zwar zum nĂ€chsten > Befehl nach GOSUB ANZEIGE. Da dieses ein return ist, so wird wieder in das Hauptprogramm gesprungen > Also in die Scheilfe "START" > > > > mit bestem Dank > > > > Andreas |
Antwort schreiben |