RGB MoodlightAus Attraktor WikiVersion vom 2. Oktober 2014, 08:56 Uhr von Markus (Diskussion | Beiträge) InhaltsverzeichnisRGB MoodlightFür unseren ersten Lötworkshop im Attraktor hat Sebastian ein schickes RGB-Moodlight entworfen. Die Bausätze sind mit einfach verlötbaren Bauteilen bestückt. Die Platine hat eine RGB-LED verbaut, die durch einen bereits programmierten ATtiny-Mikrocontroller (ATtiny44, pinkompatibel zu ATtiny24 und ATtiny84) angesteuert wird. Wer den Programmiercode modifizieren oder einige der nach außen geführten Ports nutzen möchte, kann dies mit der für Anfänger gut geeigneten Arduino-Oberfläche tun. Beschreibung der BauteileBauteillisteC1 0.33µF C2 0.1µF C3 100nF C4 22pF C5 22pF CON1 Stiftleiste 1x5 Pin G1 9V Batterie BCON 9V Batterie Anschlussklemme mit XH2.54-2P Stecker BATTERIE XH2.54-2P Buchse IC1 ATTINY24/44/84A Sockel DIP-14 IC Sockel IC2 7805 Linearregler (TO-220 Gehäuse) ISP Stiftleiste 2x3 Pin LED1 SuperFlux RGB LED (Gemeinsame Kathode) R1 150 Ohm R2 150 Ohm R3 150 Ohm R4 10k Ohm R5 10k Ohm SW1 DIP-Switch 1-Pol X1 Quarz 20Mhz HC49-U BRD Moodlight Platine SCREW M3-10 Schraube + Mutter Identifizierung der Bauteile, Eagle Layout und Schaltplan, fertiges Board mit PlatinenhalterMontage der BauelementeProgrammierungDer Atmel ATtiny44 Mikrocontroller, der auf dem Board verbaut ist, kann natürlich mit Entwicklungsumgebungen wie ATMEL Studio programmiert und geflasht werden. Allerdings ist auch die einfache Programmierung und das Bespielen mit der Arduino IDE möglich. Wie das funktioniert, zeigen wir anhand der Arduino IDE in der Version 1.0.5r2, dem Arduino UNO als Programmieradapter und dem bekannten "Blink"-Sketch aus den Beispielprogrammen der IDE. Zunächst lädt man sich die aktuelle 1.0er-Version der Arduino IDE herunter und installiert sie. Dann lädt man die Datei attiny-master.zip von dieser Seite (ein Projekt des MIT Medi Lab) herunter, entpackt sie und kopiert sie wie dort beschrieben. Da der ATtiny44 mit externem 8MHz Quarz wie bei uns auf dem Board verbaut dort nicht als Option vorhanden ist, müssen noch folgende Zeilen in der Datei "boards.txt" ergänzt werden: attiny44-8e.name=ATtiny44 (external 8 MHz clock) Als nächstes muss der Arduino als Programmieradapter vorbereitet werden. Eine genaue Anleitung findet sich hier. Um nicht immer wieder die Drahtbrücken stecken zu müssen, kann man sich aus einer 6-poligen Pfostenbuchse wie dieser hier und einem passenden 6-poligen Kabel, bei dem man die Enden auf Stiftleisten lötet, ein Programmierkabel für wenig Geld selber bauen. Der 9V-Block sollte beim Programmieren nicht angeschlossen sein. Wenn man allerdings einen Programmieradapter wie den AVRISP MkII verwendet, braucht man eine externe Stormversorgung. Bitte also die Anleitungen für die Programmieradapter beachten. Die Pfostenbuchse kann an die 6-polige Stiftleiste am RGB-Moodlight-Board angesteckt werden (bitte Polung beachten!). Danach muss der Arduino UNO wie oben beschrieben als ISP-Adapter vorbereitet werden ("Datei -> Beispiele -> ArduinoISP" aufspielen) und beim Programmieren der Eintrag unter "Tools -> Board -> ATtiny44 (external 8 MHz clock)" ausgewählt werden. Dann testet man das ganze mit dem "Blink"-Sketch und lädt das Programm auf den ATtiny44 hoch. Bitte beachtet, dass ein Pin der angeschlossenen RGB-Led benutzt wird - also z.B. Pin 7 als led-Variable definiert wird (und nicht "13" wie in dem Beispiel-Sketch). ProgrammierbeispielNachfolgend ein Beispiel, um die blaue LED der RGB-LED aufblinken zu lassen. Dieser Sketch kann mit der Arduino IDE und den obigen Einstellungen auf den Mikrocontroller übertragen werden. /* Blink Schaltet eine LED für eine Sekunde an und für eine Sekunde wieder aus */ // An Pin 7/ PA6 ATtiny44 - entsprechend Arduino Pin 6 ist die blaue LED // An Pin 6/ PA7 ATtiny44 - entsprechend Arduino Pin 7 ist die rote LED // An Pin 5/ PB2 ATtiny44 - entsprechend Arduino Pin 8 ist die grüne LED // der RGB-LED angeschlossen // Wir benutzen die blaue LED int led = 6; // Im Setup wird die LED als Ausgang definiert void setup() { pinMode(led, OUTPUT); } // In der Programmschleife lassen wir die blaue LED blinken void loop() { digitalWrite(led, HIGH); // Anschalten der LED (HIGH = Betriebsspannung 5V) delay(1000); // Eine Sekunde warten digitalWrite(led, LOW); // Ausschalten der LED (LOW = 0V) delay(1000); // Eine Sekunde warten } Das ganze kann man natürlich auch in C programmieren und z.B. mit dem kostenlosen Atmel Studio und einem Programmer wie dem AVRISP MkII auf den Mikrocontroller überspielen. Der dem obigen Beispiel entsprechende Code würde dann so aussehen: /* * ATtiny44_blink.c * Blink * Schaltet eine LED für eine Sekunde an und für eine Sekunde wieder aus * Author: Markus */ #define F_CPU 8000000 // Prozessortakt #include <avr/io.h> // Pinzuweisungen #include <util/delay.h> // Wartefunktionen #define LED PA6 // LED wird im Code durch PA6 ersetzt int main(void) { // Dieser Teil entspricht der setup()-Funktion der Arduino IDE // Das Bit PA6 (dort ist die blaue LED der RGB LED angeschlossen) vom DDRA (Data Direction Register Port A) // wird auf 1 und damit als Ausgang gesetzt DDRA |= (1 << LED); while(1) // Endlosschleife - entspricht der loop()-Funktion der Arduino IDE { PORTA |= (1 << LED); // PA6 von PORT A wird auf 1 = HIGH = // Betriebsspannung 5V gesetzt => Anschalten der blauen LED _delay_ms(1000); // Eine Sekunde warten PORTA &= ~(1 << LED); // PA6 von PORT A wird auf 0 = LOW = 0V gesetzt // => blaue LED wird ausgeschaltet _delay_ms(1000); // Eine Sekunde warten } return(0); } Ich will das RGB-Moodlight unbedingt haben. Woher bekomme ich es?Der Bausatz ist ab sofort im Warenautomat im Attraktor zum Preis von 10 Euro erhältlich. Bisherige Lötworkshops |