So ich bins mal wieder nach langer inaktivität und auch gleich mal mit einem Problem. Nach einer halben ewigkeit konnte ich endlich meine Steuerbox für meine Beleuchtung in meinem Zimmer fertigstellen. Abgesehen davon, dass ich die Ausgänge Ein- und Ausschalten kann und Hardware PWM funktioniert, funktioniert noch gar nichts.
Mein urprüchglicher Plan war, dass sich die Leds (Ausgänge) beim Einschalten langsam hochdimmen und beim Ausschalten langsam herunterdimmen (per Software PWM min. 8 Kanäle). Das krige ich einfach nicht hin. Mangels passenden Beispielen im Internet auch sehr schwer nur durch ausprobieren herauszufinden. Dauernd den Atmel umzuflashen um danach feststellen zu müssen das es doch nicht funktioniert.
Wäre also schön wenn mir einer mal erklären könnte, wie man Software PWM hinbekommt.
Ebenso kriege ich es nciht hin, dass sich die Powerleuchte bei irgendeinem eingeschalteten Verbraucher Grün wird und wenn kein Verbraucher eingeschaltet ist, wieder Rot wird. In meinem Video habe ich das zur Demonstration mal nur per Taster manuell gemacht (Außer das auf den Powerknop drücken. Das habe ich schon so eingestellt, dass alle Verbraucher ausgehen und der Powerknopf rot wird)
Hier mal mein Vorläufiger Code: (Ich weiß nichts ist optimiert aber das solls auch nicht. So verstehe ich den Code besser)
$regfile = "M8def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
Dim Duty As Word , Dimmen As Word
Dim X As Long
Config Portb.1 = Output
Config Portb.2 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Enable Timer1
Enable Interrupts
X = 0
'LED1 an PD0
Led1 Alias Portd.0
Config Led1 = Output
'LED2 an PD1
Led2 Alias Portd.1
Config Led2 = Output
'LED3 an PD2
Led3 Alias Portd.2
Config Led3 = Output
'LED4 an PD3
Led4 Alias Portd.3
Config Led4 = Output
'LED5 an PD4
Led5 Alias Portd.4
Config Led5 = Output
'LED6 an PB6
Led6 Alias Portb.6
Config Led6 = Output
'LED7 an PB7
Led7 Alias Portb.7
Config Led6 = Output
'LED8 an PD5 (Power Led Rot)
Led8 Alias Portd.5
Config Led8 = Output
'LED9 an PD6 (Power Led Grün)
Led9 Alias Portd.6
Config Led9 = Output
'TASTER1 an PC5
Taster1 Alias Pinc.5
Config Taster1 = Input
Portc.5 = 1
'TASTER2 an PC4
Taster2 Alias Pinc.4
Config Taster2 = Input
Portc.4 = 1
'TASTER3 an PC3
Taster3 Alias Pinc.3
Config Taster3 = Input
Portc.3 = 1
'TASTER4 an PC2
Taster4 Alias Pinc.2
Config Taster4 = Input
Portc.2 = 1
'TASTER5 an PC1
Taster5 Alias Pinc.1
Config Taster5 = Input
Portc.1 = 1
'TASTER6 an PC0
Taster6 Alias Pinc.0
Config Taster6 = Input
Portc.0 = 1
'TASTER7 an PB5
Taster7 Alias Pinb.5
Config Taster7 = Input
Portb.5 = 1
'TASTER8 an PB4
Taster8 Alias Pinb.4
Config Taster8 = Input
Portb.4 = 1
'TASTER9 an PB0
Taster9 Alias Pinb.0
Config Taster9 = Input
Portb.0 = 1
'TASTER10 an PD7 (Power Taster)
Taster10 Alias Pind.7
Config Taster10 = Input
Portd.7 = 1
Main:
Do
If Taster1 = 0 Then
Toggle Led1
Bitwait Taster1 , Set
End If
If Taster2 = 0 Then
Toggle Led2
Bitwait Taster2 , Set
End If
If Taster3 = 0 Then
Toggle Led3
Bitwait Taster3 , Set
End If
If Taster4 = 0 Then
Led4 = 1
Bitwait Taster4 , Set
End If
If Taster5 = 0 Then
Led8 = 0
Led9 = 1
Bitwait Taster5 , Set
End If
If Taster10 = 0 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led8 = 1
Led9 = 0
Bitwait Taster10 , Set
End If
'Hardware PWM an PB1
'Up
If Taster8 = 0 Then
Waitms 1
If Taster8 = 0 Then
Incr X
If X >= 255 Then X = 255
Pwm1a = X
Pwm1b = X
End If
End If
'Down
If Taster7 = 0 Then
Waitms 1
If Taster7 = 0 Then
Decr X
If X < 10 Then X = 0
Pwm1a = X
Pwm1b = X
End If
End If
Loop
End
Alles anzeigen
So für das nachfolgende brauch ich keine Lösung, da das nicht so dringend ist und auch absolute Spielerei ;). Aber ein Gedanken, wie man das Realisieren könnte:
Also ich habe ja die USB Buchse beleuchtet. Die Buchse soll später mal als Ladebuchse für USB Geräte genutzt werden (per USB Kabelpeitsche mit verschiedenen USB Steckern dran) Dann muss ich nicht immer die ganzen unterschiedlichen Ladegeräte herauskramen.
Jetzt wäre es schick, wenn ein USB Gerät dran steckt und Strom zieht die Buchse heller leuchtet als normal.
Mein Lösungsansatz:
2 Ausgänge am µC. Der eine für dunkel (großer Widerstand vor den Leds) und der andere für hell (kleiner Widerstand).
Jetzt müsste ich nur noch mit dem µC Strom messen können, wann Strom von der USB Buchse gezogen wird. Ich habe schon erfolgreich mit einem Atmega 8 µC Spannung messen können mit dem integriegrten ADC aber wie kann ich damit Strom messen ?(.
Ich verweiß mal auf meine Website wo das Projekt gerade steht: http://heringshome.de/selbstge…teuerung/123.html?start=1