Forum: Mikrocontroller und Digitale Elektronik Bitte kurz mein Code anschauen


von Thomas Kiss (Gast)


Angehängte Dateien:

Lesenswert?

Aufgabe habe ich mir gestellt:

Je nach ADC Wert ( poti) sollen die 3 LEDs gedimmt werden.

Habe alles richt gemacht ?

von H.Joachim S. (crazyhorse)


Lesenswert?

$regfile = "attiny13.dat"
$hwstack = 10
$swstack = 10
$framesize = 8


Dim R As Byte
Dim G As Byte
Dim B As Byte
Dim Ad As Word

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

R = Portb.0                                                 'Alias fuer 
die RGB Ports setzen
G = Portb.1
B = Portb.2

Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down
Config Adc = Single , Prescaler = Auto

Start Adc
Enable Timer0


Do

Ad = Getadc(3)

Select Case Ad
Case 50 To 100
   R = 125
   Case 100 To 150
   R = 250
   Case 200 To 250
   R = 125
   G = 125
   Case 250 To 300
   G = 250
   Case 350 To 400
   G = 125
   B = 125
   Case 400 To 450
   B = 250
   Case 450 To 500
   B = 125
   R = 125
End Select

Loop

End

Hm, ich glaube, das wird nichts.
Da fehlt prinzipiell erstmal die PWM. Du versuchst einfach, irgendwelche 
imaginären Werte an ein Portpin zu schreiben, das geht nicht, kann nur 0 
oder 1 sein.
Dann hat deine case-Auswahl Lücken )0..49, 151...199, >500
Ausserdem solltest du in jedem Zweig die kompletten Daten für R,G und B 
erzeugen.
Das auf den 1. Blick :-)

von Thomas Kiss (Gast)


Lesenswert?

OK, dass da Lücken sind, weiss ist nur als "test"..wie sollte ich es 
dann machen, wenn ich nicht faden will ?

Bsp : ?

von H.Joachim S. (crazyhorse)


Lesenswert?

Falls du die LEDs nur ein oder ausschalten willst, geht das mit deinem 
Ansatz.
Willst du dimmen, solltest du dir hier ein paar Kapitel über 
Software-PWM reinziehen (gibts genug darüber), da der Tiny nicht genug 
Hardware-PWM-Kanäle hat.

Schaltbetrieb:
Pseudocode:
case <50:
  R=0; G=0; B=0;      //alle aus
case 50 bis 100:
  R=1; G=0; B=0;      //Rot ein
usw, je nachdem, was du willst.

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.