Guten Abend, Sooo ich brauch eure hilfe :) unzwar will ich mir eine Zimmerbeleuchtung bauen. Vorerst mit 25 RGB LED's. (Hab mir ein Kabelkanal gekauft und mit einem kleinen Bohrer 6 Löcher gemacht die LED dan durchgesteckt verlötet und im Abstand von 5 cm die nächste.) Vorerst soll es nur ein Regenbogen Effekt sein.Später wen ich mich ein bisschen in die Microcontroller eingelebt habe will ich ein Programm schreiben wo man die Farbe auswählen kann.Nun hab ich das Problem das ich keine ahnung habe wie das anstellen soll was ich genau machen muss damit ich diesen Regenbogen Effekt auf mein Microcontroller übertrage und ihn schreibe :(. kann mir villeicht jemand den Grundstein setzen und mir ein bisschen helfen. Als Programmer benutze ich das Pollin Evulutions Board. Mir stehen diese Micrcontroller zur verfügung: ATMega8 , ATMega48 , ATMega32. Ich hoffe jemand kann mir helfen.Ne Schaltung hab ich schon gemacht.(Ist schnell gemacht und die is jetzt nur für 1 RGB LED. Würde er eigentlich gehen ich denke schon oder ?) MFG Denny
Das Stichwort lautet Software-PWM. Hier mal ein Beispiel wie man es machen kann. Damit solltest du eigentlich schon fast fertig ein.
1 | #include <avr/io.h> |
2 | |
3 | #define RED PC0 // Pin für Rot
|
4 | #define GREEN PC1 // Pin für Grün
|
5 | #define BLUE PC2 // Pin für Blau
|
6 | #define LED_PORT PORTC // LED-Port
|
7 | #define LED_DDR DDRC // DDR des LED-Ports
|
8 | |
9 | int main(void){ |
10 | uint8_t i = 0, |
11 | u_red = 150, // Pulslänge rot |
12 | u_blue = 100, // Pulslänge blau |
13 | u_green = 200; // Pulslänge grün |
14 | LED_DDR |= _BV(RED) | _BV(GREEN) | _BV(BLUE); // Pins auf Ausgang |
15 | while(1){ |
16 | LED_PORT |= _BV(RED) | _BV(GREEN) | _BV(BLUE); // Alle Farben an |
17 | |
18 | /*
|
19 | Hier die Werte von u_red, u_blue und u_green nach belieben ändern
|
20 | Die Werte sind proportional zur Intensität der jeweiligen Farbe.
|
21 | Nich vergessen, dass das menschliche Auge nicht linear ist!
|
22 | */
|
23 | |
24 | for(i=0;i<255;++i){ // PWM-Schleife |
25 | if(i>=u_red) LED_PORT &= ~_BV(RED); // Rot aus |
26 | if(i>=u_green) LED_PORT &= ~_BV(GREEN); // Grün aus |
27 | if(i>=u_blue) LED_PORT &= ~_BV(BLUE); // Blau aus |
28 | }
|
29 | }
|
30 | }
|
Gruß Skriptkiddy
Cool vielen Dank jetzt hab ich nur noch eine Frage wa muss ich genau mit diesem Code mach muss ich ihn in Avr Studio einfügen und dan irrgendwie zu ner .hex datei machen und sie dan auf den Controller flashern `? sehe ich das richtig so ?
JA Schau am besten mal ins Tutorial da findest Du alles was Du brauchst. mfg Thomas
Eine Sache, die mir gerade noch auffällt: Du bist Dir hoffentlich im klaren, dass Du in der Regel an den Ports nur jeweils 10-20 mA abgreifen kannst (je nach Stromrichtung; wieviel mA es genau beim ATMega8 sind, weiss ich jetzt nicht); daher benötigst Du zum Anschluss von Verbrauchern z.B. MOSFET Transistoren. Viel Erfolg!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.