Forum: Mikrocontroller und Digitale Elektronik Atmega8 pwm Dimmen über 5 Schalter


von C. W. (cwott)


Lesenswert?

Fakten

Atmega8
Bascom

Aloha!

Ich stell mich ein wenig doof an. Ich suche eine Möglichkeit, am PWM 
Ausgang des Atmega8 eine Dimmfunktion über 5 Schalter einzustellen. 
Sprich jeder Schalter hat einen anderen Dimmwert (Compare1a = 1 usw.)

Ich würde es gerne so machen, dass wenn ich keinen Schalter betätige, 
der PWM Ausgang auch null ist und nicht, wie jetzt mit diesem Programm, 
immer den letzten Wert anzeigt.

Hier mal das Programm:


$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Config Pind.4 = Input

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1

Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1

Do

   If Pind.0 = 0 Then
      Compare1a = 1023
   Elseif Pind.1 = 0 Then
      Compare1a = 750
   Elseif Pind.2 = 0 Then
      Compare1a = 500
   Elseif Pind.3 = 0 Then
      Compare1a = 250
   Elseif Pind.4 = 0 Then
      Compare1a = 0
   Elseif Pinb.1 = 0 Then
   End If

Loop


End

Wie bekomme ich das nur hin?

von Mathias S. (merzi1993)


Lesenswert?

C. Wott schrieb:
> Ich würde es gerne so machen, dass wenn ich keinen Schalter betätige,
> der PWM Ausgang auch null ist und nicht, wie jetzt mit diesem Programm,
> immer den letzten Wert anzeigt.

D.h. der PWM-Wert ist nur so lange aktiv, solange der Taster gedrückt 
ist, ansonsten ist er 0.


C. Wott schrieb:
> If Pind.0 = 0 Then
>       Compare1a = 1023
>    Elseif Pind.1 = 0 Then
>       Compare1a = 750
>    Elseif Pind.2 = 0 Then
>       Compare1a = 500
>    Elseif Pind.3 = 0 Then
>       Compare1a = 250
>    Elseif Pind.4 = 0 Then
>       Compare1a = 0
>    Elseif Pinb.1 = 0 Then
>    End If


Ich würde das so machen:

If Pind.0 = 0 Then
      Compare1a = 1023
   Elseif Pind.1 = 0 Then
      Compare1a = 750
   Elseif Pind.2 = 0 Then
      Compare1a = 500
   Elseif Pind.3 = 0 Then
      Compare1a = 250
   Elseif Pind.4 = 0 Then
      Compare1a = 0
   Else
      Compare1a = 0
   End If


Sollte theoretisch funktionieren

von C. W. (cwott)


Lesenswert?

Ich fass es nich, dass ich das nicht hinbekommen habe!!!

Aber vielen Dank! Klappt ohne Probleme!!!!

Tausend Dank!!

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
Noch kein Account? Hier anmelden.