Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Tiptastensteuerung für LEDs und PWM Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Andreas - 30.03.2009 19:45)
 Als Antwort auf Re: Tiptastensteuerung für LEDs und PWM von Andreas - 27.03.2009 15:36
Andreas nutzt:  Open-Micro, Open-Mini
Habe am Wochenende doch mehr Zeit damit verbracht als geplant war ;-)
Testaufbau ist fertig und ein erster Programmstart erfolglos verlaufen *g*. Also um es zusammenzufassen - nix geht richtig.
Ich habe zunÀchst mal geschaut, was passiert mit dem LEDs. Es gibt zwei Möglichkeiten zu beobachten.
Die Eine ist, wenn man keine Taste drĂŒckt, blinkt LED 1 einmal und bleibt dann andauernd eingeschaltet.
Zweite Möglichkeit ist bei Start eine Taste gedrĂŒckthalten. Dann leuchtet LED1 sofort stĂ€ndig.
Wenn ich mir das so ansehe, dann funktioniert offenbar die Tastenabfrage nicht richtig.
In diesem Zusammehang ist mir auch aufgefallen, dass die beiden Ports PTB4 und PTB5 LOW-Pegel fĂŒhren. Da die Tasten nach Masse schalten, wirds wohl nix so. Ich werde das mal auf Tasten schalten nach High Ă€ndern. Damit sind dann zumindest erst einmal Pegel vorhanden, die man verwerten könnte...

Zweiter Teil war die Kontrolle des PWM. Bei LED1 leuchtend, bedeutet das Null Ausgang. Da aber minimale Nadeln zu sehen sind, ist der PWM also nicht Null. Ich habe dazu mal das PWM-Demoprogramm geladen und auch dort geht der PWM nicht auf Null. Kriegt man den nur ĂŒber "TABLE pwm1_aus byte" ruhig?

Hier die jetzige Version zur "Begutachtung", ohne PWM-Teil und Definitionen der Ports:

' --- Definition der Variablen ----------------------------------------------

pwm1_ein                  ' PWM-Routine Port1 einschalten
define tmp byte           ' Hilfsvariable fĂŒr PWM
define a byte             ' ZĂ€hlervariable
define t byte             ' ZĂ€hlervariable Start-Timer
define allleds_a byteport[1]               ' Sammelfestlegung aller LEDs an Port a
define allleds_b byteport[2]               ' Sammelfestlegung aller LEDs an Port b

' ---Initialisierung---------------------------------------------------------

#init
tmp = 0
a = 0
t = 0
pwm1 tmp
allleds_a = 0                              ' alle LEDs an Ports A ausschalten
allleds_b = 0                              ' alle LEDs an Ports B ausschalten
if (Taste1 = (not Taste1)) or (Taste2 = (not Taste2)) then goto error ' Abfrage der Tasten auf Kontakt

' ---Hauptprogramm-----------------------------------------------------------

#start
if spannung < 175 then goto unterspannung  ' PrĂŒfung auf Unterspannung der Batterie <11 Volt
if (Taste1 = (not Taste1)) and (Taste2 = (not Taste2)) then gosub vorheizen   ' vorheizen starten
'if Taste2 = (not Taste2) then gosub vorheizen   ' vorheizen starten
a = 1
goto anzeige

#start1
if spannung < 175 then goto unterspannung  ' PrĂŒfung auf Unterspannung der Batterie <11 Volt bei Fehler der Lichtmaschine
timer = 0          ' setzt Timerzeit auf 0, Timer zĂ€hlt automatisch hoch
#start2
if Taste1 = (not Taste1) then goto rauf   ' Taste rauf erhöht ZĂ€hler um 1
if Taste2 = (not Taste2) then goto runter ' Taste runter verringert ZĂ€hler um 1
if timer < 200 then goto start2            ' ca 4 Sekunden Pause vor dem Abschalten der LEDs
allleds_a = 0                              ' alle LEDs an Port a ausschalten
allleds_b = 0                              ' alle LEDs an Port b ausschalten
blank = 0                                  ' Grenz-LEDs ausschalten
goto start1                                 ' RĂŒcksprung zum Start

' ---Unterprogramme--------------------------------------------------------------------

#vorheizen
tmp = 250                                   ' Verbraucher mit 100% vorheizen
led1 = on                                   ' LED einschalten
for t = t to 3     ' ZĂ€hler
timer = 0         ' Timer startet automatisch und zĂ€hlt hoch
if timer = 42 then led1 = off           ' LED ausschalten
if timer = 84 then led1 = on            ' LED einschalten
if timer = 126 then led1 = off          ' LED ausschalten
if timer = 168 then led1 = on           ' LED einschalten
if timer = 210 then led1 = off          ' LED ausschalten
if timer = 252 and t = 3 then goto start1 '4x 5 Sekunden vergangen dann Sprung zu start1
next

#rauf
blank = on            ' schaltet die beiden Ă€ußersten LEDs auf halbe Helligkeit
pause 2               ' Schalterentprellung
if a = 7 then goto start1  ' Wenn der ZĂ€hler = 7 ist wird das Unterprogramm verlassen
a = a + 1             ' Erhöhung des ZĂ€hlers um 1
goto anzeige          ' springt in das Unterprogramm Anzeige

#runter
blank = on            ' schaltet die beiden Ă€ußersten LEDs auf halbe Helligkeit
pause 2               ' Schalterentprellung
if a = 0 then goto start1  ' Wenn der ZĂ€hler = 0 ist wird das Unterprogramm verlassen
a = a - 1             ' Verringerung des ZĂ€hlers um 1
goto anzeige          ' springt in das Unterprogramm Anzeige

#anzeige
if a = 1 then led1 = on
if a = 1 then tmp = 0   ' PWM Port 0%
if a = 2 then led2 = on
if a = 2 then tmp = 36  ' PWM Port 14%
if a = 3 then led3 = on
if a = 3 then tmp = 72  ' PWM Port 29%
if a = 4 then led4 = on
if a = 4 then tmp = 108 ' PWM Port 43%
if a = 5 then led5 = on
if a = 5 then tmp = 144 ' PWM Port 58%
if a = 6 then led6 = on
if a = 6 then tmp = 180 ' PWM Port 72%
if a = 7 then led7 = on
if a = 7 then tmp = 216 ' PWM Port 86%
if a = 8 then led8 = on
if a = 8 then tmp = 250 ' PWM Port 100%
pwm1 tmp                ' Datenzuweisung PWM-Port1
goto start1                 ' RĂŒcksprung in das Hauptprogramm start1

#error
allleds_a = on
allleds_b = on
pause 12               ' 1/4 Sekunde Pause
allleds_a = 0
allleds_b = 0
pause 12               ' 1/4 Sekunde Pause vor dem RĂŒcksprung
goto init                 ' RĂŒcksprung zum init Progammteil

#unterspannung
a = 0
led1 = on
led8 = on
pause 12               ' 1/4 Sekunde Pause
led1 = 0
led8 = 0
pause 12               ' 1/4 Sekunde Pause vor dem RĂŒcksprung
goto start
end                    ' Programmende

Andreas

 Antwort schreiben

Bisherige Antworten:

Re: Tiptastensteuerung für LEDs und PWM (von Andreas - 6.04.2009 22:04)