Die automatisierte Küchenbeleuchtung

Vor geraumer Zeit habe ich ja bereits meine automatisierte Küchenleuchte vorgestellt (Link). Diese war auch lange Zeit in Benutzung, aber nun war es doch an der Zeit, einen Mikrocontroller den Job übernehmen zu lassen. Der Grund ist vor allem, dass es leichter ist das Programm seinen Wünschen anzupassen. Insgesamt habe ich nämlich vor, die Automatisierung immer weiter zu verbessern. Die derzeitige Konfiguration sieht so aus: Die Hauptsteuereinheit ist hier ein Arduino Uno. Dieser steuert via PWM vier der hier vorgestellten Power-MOSFETs an. An diese habe ich ein RGB-Stripe und eine Power-LED angeschlossen. Als Auslöser dient folgendes Bewegungsmelder-Modul: ...

11.01.2014 · 3 Minuten · Fabian Kainka

RGB Strip Mini Shield

ACHTUNG: Bei diesem Projekt ist leider ein Arduino Uno über den Jordan gegangen. Am Ende des Artikels steht mehr dazu, also vor dem Nachbau bitte lesen! Viele werden das Problem mit Arduino kennen: die Leistung an den Pins reicht einfach nicht aus um damit größere Lasten zu steuern. Bei mir ist das Problem aufgetreten, als ich meine Power-LED-Lampen und meine RGB-Stripes mit einem Arduino Uno steuern wollte. Die 40 mA und 5 V pro Pin reichen nicht mal annähernd um diese Dinge vernünftig ansteuern zu können. Die Lösung ist bekannt: Leistungstreiber. ...

03.01.2014 · 3 Minuten · Fabian Kainka

Die Arduino IR-Library

Ich habe nach einer möglichst einfachen Art gesucht, Infrarot Fernbedienungen auszulesen. Wie für Arduino üblich habe ich auch nach kurzer Zeit eine passende Library gefunden: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html Auf der Seite von Ken Shirriff kann man sich die Dateien runterladen, inlusive einiger Beispiele. Besonders geeignet: IRrecDemo um damit Signale direkt auszulesen oder IRrecDump um auch Informationen über das verwendete Protokoll zu bekommen. Alles was man dafür benötigt ist ein IR-Empfangs-Modul. Die Ausgabe erfolgt über das Terminal. ...

27.12.2013 · 2 Minuten · Fabian Kainka

Befehlsliste Arduino

Oft ist es so, dass man plötzlich vergisst, wie man jetzt gerade in dieser Programmiersprache einen Bestimmten Befehl formulieren muss. Deswegen steht hier eine Auflistung der wichtigsten Befehle. Benutzen Sie Stg+F um in der Seite nach etwas bestimmten zu suchen. Befehl Schreibweise Grundlegendes Grundstruktur void setup() { }void loop() {} Variable deklarieren (Typ Integer, Wert = 0) int led = 0; Konstante deklarieren (Typ Integer, Wert = A0) const int analogInPin = A0; Array deklarieren (Typ Integer, 6 Werte) int Arrayname[6] = {2, 4, -8, 3, 2}; Pin-Funktion festlegen pinMode(led, OUTPUT); Library einbinden #include <libX.h> Ausgaben/Eigaben Pin auf HIGH schalten digitalWrite(led,HIGH); PWM-Pin auf maximal Wert setzen analogWrite(led, 255); Digitalen Zustand von Pin schalter lesen digitalRead(schalter) Funktion: Analog Pin A0 auslesen analogRead(A0) Ton Ausgabe an Pin8, Frequenz x, länge y tone(8, x, y) Ton Ausgabe an Pin8 stoppen noTone(8) Serielle Schnittstelle Serielle Schnittstelle initialisieren Serial.begin(9600); Text seriell Ausgeben Serial.print(“Hallo”); Text seriell Ausgeben + neue Zeile Serial.println(“Hallo”); Byte seriell Ausgeben Serial.write(val) Funktion: Anzahl von auslesbaren Bytes Serial.available() Funktion: seriell Einlesen Serial.read(); Funktion: Text im Buffer finden (true/false) Serial.find(“TEXT”) Funktion: Text i. Buffer finden bis Endetext Serial.findUntil(“TEXT“,“ENDE TEXT“) Speichert Anzahl Bytes in Buffer Serial.readBytes(buffer, length) Speichert Bytes in Buffern bis lenght oder Ende-chracter erreicht Serial.readBytesUntil(character, buffer, length) Funktion: Findet nächste Integerzahl Serial.parseInt() Prozedur aufgerufen wenn Daten vorhanden void serialEvent() A****bfragen/Schleifen If-Abfrage mit Else *if (button == HIGH){**}*else{ } Switch-Abfrage *switch (x) {**case 1:**case 2:*default: Wartezeit (500 ms) delay(500); For-Schleife for (x = 2; x < 7; x++) { } While-Schleife *while (schalter== HIGH) {**}***ODER:**do{} while (schalter==HIGH); Schleife vorzeitig verlassen break; Überspringt ausführbaren Quelltext in Schleife continue; Mathematisches Sinus, Cosinus, Tangens sin(),cos(),tan() Wurzel aus X sqrt(x) X hoch Y : xy pow(x, y) Absolut Wert einer Zahl (Betrag von x) abs(x) Zufällige Zahl random() Vergleiche gleich == ungleich != größer, kleiner <, > Größer oder gleich, kleiner oder gleich <= , >= Funktion: kleinere Zahl von x und y min(x, y) Funktion: größere Zahl von x und y max(x, y) Boolsche Operatoren Und && Oder * Nicht ! Datentypen Boolean; char; unsigned char; byte; int; unsigned int; word; long; unsigned long; short; float; double; string; String; Datentypkonvertierungen char(); byte(); int(); word(); long(); float() Interrupts Interrupts verbieten noInterrupts() Interrupts erlauben nterrupts() Interrupt an Pin mit Funktion verknüpfen attachInterrupt(interrupt, function, mode) Interrupt Verbindung aufheben detachInterrupt(interrupt) Sonstiges Kommentar eine Zeile // Kommentar längerer Bereich /* */ Array definieren Funktion: Wertebereich transformieren (z.B. 10bit Sensor auf 8bit PWM) map(sensorWert, 0, 1024, 0, 255); Funktion Wertgrenzen bestimmen(alles darüber/darunter wird abgeschnitten) constrain(sensorWert, 0, 255); Bein Funktionen: Wert zurückgeben return x; Zum Sprungpunk hier springen goto hier; Prozedur Void Prozedurname() { } Funktion mit Integer-Rückgabewert und Byte-Parameter int Funktionsname (byte Parameter) {return 13;} Eine komplette Befehlsliste auf Englisch und mit erweiterten Erklärungen finden Sie auch unter http://arduino.cc/en/Reference/HomePage.

25.11.2013 · 3 Minuten · Fabian Kainka

Die neue Steckboardplatine als Arduino Shield

Modul Bus hat eine neue Platine rausgebracht, die einem Steckboard nachempfunden ist. Dadurch ist es noch einfacher, seine Prototypen auf eine dauerhafte Platine zu übertragen. Ich hab ein bisschen mit der Platine rumgespielt und bemerkt, dass man daraus auch schnell mal ein Arduino-Shield basteln kann. Im Grund ist der Aufbau sehr einfach. Die beiden LEDs sorgen dafür, dass das Board genügend Abstand zum Arduino hat und nicht so hin und her wackelt. Zusätzliche Stabilität verleiht der Stecker in der Mitte des Boards. Er wird einfach auf die beiden äußeren Kontakte des ISP-Steckers gesteckt. Damit liegt die Platine solide auf und verrutsch nicht. Man könnte auch an dem einen Pin des ISP-Steckers die 5-V-Versorgungsspannung der Controller abgreifen, hierbei ist aber Vorsicht geboten. Die beiden Drähte legen die Versorgungsleitungen +5V und GND auf die beiden äußeren Leitungsbahnen, sodass der Zugriff dauerhaft erleichtert wird. ...

08.11.2013 · 2 Minuten · Fabian Kainka

Strommessen an der Solaranlage

Eine Solaranlage an meinem Fenster sorgt dafür, dass ein Bleiakku immer geladen wird. Allerdings fehlte mir eine Übersicht über den aktuellen Ladestrom. Jedes Mal ein Messgerät in Reihe zu schalten ist mir zu aufwändig, also habe ich nach einer anderen Lösung gesucht. Der einfachste Weg den aktuellen Strom zu ermitteln ist in der Regel die Spannung an einen bekannten Widerstand zu messen und daraus den Strom zu berechnen. Ein solcher Widerstand sollte wärmeresistent und recht klein sein, um Verluste gering zu halten. Dafür gibt es spezielle Widerstände, die für Strommessungen entwickelt wurden. ...

22.07.2013 · 2 Minuten · Fabian Kainka

Blitzduino - Blitzwarner

Bei der ersten Version des Blitzwarners habe ich einen Arduino-Uno benutzt – das Programm und das Shield sollten aber auf jedem Board funktionieren. Dieses Shield ist gleichzeitig Empfänger und Anzeige. Sollte sich das Gewitter noch in großer Entfernung befinden, blinkt die weiße LED selten, da nur nicht alle Entladungen empfangen werden. Je näher das Gewitter kommt, desto häufiger blinkt auch die weiße LED, bis schließlich die erste Warnstufe erreicht ist, die durch die grüne LED angezeigt wird. Sollten sich die gemessenen Blitze noch weiter häufen, zeigt die rote LED die erhöhte Warnstufe an. ...

21.06.2013 · 4 Minuten · Fabian Kainka

Schnellstart Arduino Leonardo

Jeder der sich, auch wenn vielleicht nur oberflächlich, mit der Mikrokontroller -Programmierung befasst, wird einem Schlagwort nicht mehr ausweichen können: Arduino. Die Frage ob der Hype um dieses System wirklich berechtigt ist steht natürlich im Raum. Für ausgefuchste Programmierer ist dies vielleicht nicht mehr als ein lustiges Spielzeug. Für den Ottonormal-Menschen aber eine Möglichkeit auch große Projekte auf schnellem Wege zu realisieren. Man kann sicher Tage damit verbringen die vielen ausgefallenen und spannenden Projekte im Internet zu erforschen und kommt auch nicht drum herum sich selbst so seine Gedanken zu machen. Deshalb soll es an dieser Stelle mal einen kleinen Einstieg für diejenigen unter Ihnen geben, die sich noch nicht so intensiv mit der Mikrocontroller Programmierung befasst haben. ...

21.12.2012 · 5 Minuten · Fabian Kainka