Inhaltsverzeichnis:

Flackernde Kerzenbrücke - Gunook
Flackernde Kerzenbrücke - Gunook

Video: Flackernde Kerzenbrücke - Gunook

Video: Flackernde Kerzenbrücke - Gunook
Video: Flackernde Lampe 2024, Dezember
Anonim
Image
Image

Dieses anweisbare zeigt, wie man eine einfache Kerzenbrücke mit statischem Licht in ein schönes leuchtendes Stimmungslicht mit endlosen Variationen von flackernden Lichtern, Funkeln, Wellenmustern und so weiter verwandelt. Ich habe bei After Christmas Sales eine Kerzenbrücke für 8€ gekauft. Es verfügt über 7 LED-Leuchten und einige 33 V 3 W-Wandadapter. Es glänzt mit einer hellen und warmweißen Farbe und ist perfekt für dieses Projekt, bei dem ich einen Arduino aufstellen werde, um die Kerzen flackern zu lassen. Das bekannteste Arduino ist das Arduino Uno. In diesem Projekt verwende ich einen Arduino Mega 2560.

Ich werde das 30-V-Netzteil aufgeben und eine einfache 5-V-Powerbank für Mobiltelefone als Stromversorgung verwenden.

Gut zu wissen bei Powerbanks ist, dass sie einen inneren Stromkreis haben, der den Akku von 3,7 V auf 5 V umwandelt. Da der Prozess etwas Strom verbraucht, schaltet sich die Powerbank von selbst ab, wenn sie nicht verwendet wird. Wenn die Powerbank für Arduino-basierte DIY-Gadgets verwendet wird, kann sich das Gadget nicht einfach selbst in den Energiesparschlaf versetzen und nach ein paar Minuten wieder starten. Dadurch wird die Powerbank abgeschaltet. Diese flackernde Kerzenbrücke hat keinen Schlafmodus. Es verbraucht ständig Strom und hält die Powerbank aktiv, bis das Netzkabel abgezogen wird.

Das Video zeigt die Kerzenbrücke im statischen Modus und im vollen Flackern. Das volle Flimmern ist für die Augen wirklich ziemlich nervig, während das Video es etwas glättet. Nachdem die Hardware repariert wurde, einschließlich des Schneidens von Kabeln, des Lötens neuer Verbindungen und des Hinzufügens einiger Komponenten, werden alle gewünschten Lichtmuster erstellt, indem Code für den Arduino geschrieben wird. Die Muster, die ich in diesem anweisbaren einschließe, sind:

  • 4 verschiedene flackernde Lichter, die echte Kerzen imitieren
  • 2 verschiedene Funkeln (zufälliges Blinken ansonsten statischer Lichter)
  • 2 verschiedene Wellenmuster
  • einfaches statisches Licht

Das Umschalten von Mustern erfolgt über einen Druckknopf, das einzige Element der Benutzeroberfläche. Je mehr Muster man möchte und je mehr Einstellbarkeit man möchte, desto mehr Knöpfe und Regler muss man hinzufügen. Aber die Schönheit liegt in der Einfachheit. Halten Sie die Anzahl der wählbaren Muster gering. Wählen Sie die besten Einstellungen beim Codieren und Testen, nicht indem Sie der Hardware viele Steuerelemente hinzufügen.

Lieferungen

  • 1 LED-Kerzenbrücke mit 7 Glühbirnen. Stellen Sie sicher, dass es sich um ein Niederspannungs-DC-Modell handelt, entweder mit Batterien oder mit einer an der Wand montierten Stromquelle, die die tödlichen 110 - 240 V Wechselstrom in etwa 6 - 30 V Gleichstrom umwandelt. Es ist also absolut sicher, die Kerzenbrücke zu hacken.
  • 1 Arduino Mega (jeder andere Mikrocontroller reicht aus, stellen Sie nur sicher, dass Sie ihn programmieren können)
  • 1 Prototyping-Steckbrett
  • Überbrückungsdrähte und andere Drähte
  • Lötwerkzeug
  • Multimeter
  • 7 Widerstände, 120 Ω
  • 1 Druckknopf (ich zeige, wie Sie stattdessen den eingebauten Knopf auf einem Arduino verwenden können)
  • Ein Darlington-Transistor-IC für 7 Transistoren, ULN2803AP, reicht aus (Wenn Sie ein Arduino Uno oder Meaga verwenden, brauchen Sie dies nicht wirklich)
  • Eine 5-V-Powerbank für Mobiltelefone

Schritt 1: Untersuchen Sie, was Sie haben

Untersuchen Sie, was Sie haben
Untersuchen Sie, was Sie haben
Untersuchen Sie, was Sie haben
Untersuchen Sie, was Sie haben

Finden Sie heraus, mit welcher Spannung jede LED arbeitet und wie viel Strom durchfließt.

  1. Öffne die Unterseite der Kerzenbrücke. Finde die beiden Drähte, die zu einer Kerze führen.
  2. Entfernen Sie etwas Isolierung von den Kabeln, die die Kupferdrähte freigeben, ohne die Kupferdrähte zu durchtrennen.
  3. Schalten Sie das Licht ein (entspannen Sie sich, es sind nur ein paar Volt) und messen Sie die Spannung über den freigelegten Kupferdrähten.
  4. Schneiden Sie das Kabel an einem der Messpunkte ab (hier geht natürlich das Licht aus), isolieren Sie an beiden Enden etwas (3 - 4 mm) ab. Messen Sie den fließenden Strom. Was Sie tun, ist, dass Sie das abgeschnittene Kabel wieder mit Ihrem Multimeter verbinden und den gesamten Strom durch Ihr Multimeter fließen lassen, das Ihnen nun die Stromstärke anzeigt.

Meine Lesungen

Die Spannung über einer Kerze (Schritt 3): 3,1 V

Beachten Sie, dass die Stromquelle für die Kerzenbrücke 33 V betrug. Sieben mal 3,1 V sind also nur 21,7 V. Bei einigen Kerzen muss ein zusätzlicher Widerstand vorhanden sein. Hätte ich diese Kerzenspannung gemessen, müssen sie etwa 11 V betragen haben.

Durchfließender Strom bei Kerzenlicht (Schritt 4): 19 mA

Ich werde alles mit einem 5 V 2 A Akkupack betreiben. Für die Kerzen muss ich die Spannung von 5 V auf 3 V absenken. Ich brauche einen Widerstand, der die Spannung bei einem Strom von 19 mA um 2 V absenkt.

2 V / 0,019 A = 105 Ω

Die Verlustleistung beträgt:

2 V * 19 mA = 38 mW

Das ist vernachlässigbar. Viel mehr könnte den Widerstand selbst sprengen. Aber ohne 105 Ω Widerstand könnte ich die LED durchbrennen. Ich habe 100 und 120 Ω Widerstände. Ich gehe mit 120. Es bietet mehr Schutz.

Der Test aller 7 Kerzen mit 3 V ergab ein helles Licht, mit Ausnahme einer Kerze, die nur ein sehr schwaches Licht hatte und nur etwa 0,8 mA durchließ. Dies war meine Kerze mit dem zusätzlichen Widerstand. Es stellte sich heraus, dass die anderen Kerzen überhaupt keine Widerstände hatten. Die im Kronleuchter verwendeten LED-Leuchten sind einfach für 3 V gedacht! Die Kerze mit dem zusätzlichen Widerstand musste mit leichter Gewalt geöffnet werden, aber es ging nichts kaputt. Der Widerstand wurde direkt unter der winzigen LED in der Plastikkerzenbirne gefunden. Ich musste es ablöten und die Drähte neu anlöten. Es war etwas chaotisch, da der Lötkolben etwas Heißkleber erwärmte, der für den Zusammenbau verwendet wurde.

Jetzt weiß ich, dass ich unabhängig von der Stromquelle und der Spannung die Spannung auf 3 V senken muss, damit 19 mA durchgehen können.

Wäre ich mit der LED-Technik vertrauter gewesen, hätte ich den verwendeten LED-Typ erkannt und hätte gewusst, dass er 3 V benötigt.

Schritt 2: Etwas Löten

Etwas Löten
Etwas Löten
Etwas Löten
Etwas Löten

In diesem Schritt verbinde ich alle positiven (+) Drähte von den 5 Kerzen mit einem Draht. Dann füge ich für jede Kerze einen separaten negativen (-) Draht hinzu. Ein LED-Licht leuchtet nur, wenn die '+' und '-' nach rechts gehen. Da Sie von jeder Kerze nur zwei identische Kabelenden haben, müssen Sie testen, welches '+' und welches '-' ist. Dazu benötigen Sie eine 3 V Stromquelle. Ich hatte ein kleines Batteriepaket mit zwei AAA-Batterien. Eine 3-V-Knopfbatterie eignet sich auch hervorragend zum Testen.

Die Kerzenbrücke benötigt 8 Kabel, um zwischen dem Arduino und der Brücke zu laufen. Wenn Sie ein Kabel mit 8 isolierten Drähten finden, wäre das großartig. Eine Ader muss 120 mA halten, die anderen tragen höchstens 20 mA. Ich entschied mich für ein 4-Draht-Kabel, das ich zufällig hatte.

Das erste Bild zeigt, wie ich einen gemeinsamen Draht vorbereitet habe, um alle '+'-Drähte von den Kerzen zu verbinden. Entfernen Sie für jede Kerze etwas Isolierung des gemeinsamen Drahtes. Fügen Sie für jede Muffe ein Stück Schrumpfisolierschlauch (der gelbe Streifen im Bild) hinzu und platzieren Sie es an der richtigen Stelle des gemeinsamen Kabels. Löten Sie den '+'-Draht von jeder Kerze an ihre Verbindungsstelle, bedecken Sie die Verbindungsstelle mit dem Schrumpfschlauch und schrumpfen Sie sie. Natürlich geht auch einfaches Klebeband, am Ende wird alles abgedeckt.

Das zweite Bild zeigt die '-' Drähte, die jede Kerze benötigt. Der gemeinsame '+'-Draht geht direkt zum 5-V-Pin des Arduino (oder vielleicht durch das Steckbrett). Jeder '-' Draht geht zu seinem eigenen Pin des Transistor-IC (wieder wahrscheinlich durch das Steckbrett).

Ein Arduino wird oft als Prototyping-Board bezeichnet. Ein Steckbrett ist auch etwas, das Sie in Prototypen verwenden. Was ich in diesem anweisbaren beschreibe, ist ein Prototyp. Ich werde es nicht zu einem vornehm glänzenden Produkt entwickeln, bei dem alles in schönen Plastikhüllen versteckt ist. Es vom Prototyp auf die nächste Stufe zu bringen, würde bedeuten, das Steckbrett durch eine Leiterplatte und gelötete Komponenten zu ersetzen und sogar den Arduino durch einen einfachen Mikrocontroller-Chip zu ersetzen (eigentlich ist ein solcher Chip das Gehirn des Arduino). Und alles passt in einen Plastikkoffer oder in die gehackte Kerzenbrücke.

Schritt 3: Die Verbindungen

Die Verbindungen
Die Verbindungen
Die Verbindungen
Die Verbindungen
Die Verbindungen
Die Verbindungen
Die Verbindungen
Die Verbindungen

Über Arduinos, entnommen von dieser Seite:

  • Maximaler Gesamtstrom pro Eingangs-/Ausgangspin: 40 mA
  • Summe der Ströme aller Eingangs-/Ausgangspins kombiniert: 200mA

Meine Kerzen ziehen jeweils 19 mA, wenn sie mit 3 V betrieben werden. Es gibt sieben davon, was 133 mA ergibt. So konnte ich sie direkt von den Ausgangspins mit Strom versorgen. Ich habe jedoch einige Ersatz-Darlington-Transistor-ICs. Also dachte ich, warum nicht. Meine Schaltung macht die Sache richtig: Datenpins sind nur für Signale, nicht für Strom. Stattdessen verwende ich den 5-V-Pin des Arduino zur Stromversorgung der LED-Leuchten. Beim Testlauf habe ich meinen Laptop mit dem Arduino verbunden. Alles wird über den Laptop-USB mit Strom versorgt, der 5 V liefert. Der Arduino Mega hat eine eigene Sicherung, die mit 500 mA durchbrennt, um den Computer zu schützen. Meine Kerzen ziehen höchstens 133 mA. Der Arduino wahrscheinlich viel weniger. Alles läuft gut, wenn es vom Laptop mit Strom versorgt wird, so dass die Verwendung eines 5-V-Akkus, der an den USB-Port des Arduino angeschlossen ist, in Ordnung ist.

Die Datenpins D3 - D9 gehen zum IC ULN2803APGCN. Die LEDs arbeiten mit 3 V. Jede Glühbirne ist an die 5 V-Quelle und weiter an einen 120 Ω Widerstand angeschlossen. Weiter zu einem Kanal des ICs, der die Schaltung schließlich über einen Darlington-Transistor im IC mit Masse verbindet.

Der Schaltung wird ein Druckknopf hinzugefügt, um eine Benutzeraktion zu ermöglichen. Die Kerzenbrücke könnte somit einige vom Benutzer wählbare Programme aufweisen.

Der Taster im Stromkreis ist mit RESET und GND verbunden. Genau das macht der eingebaute Reset-Knopf. Da ich nicht alles in ein Plastikgehäuse kapsele, verwende ich den Reset-Knopf auf dem Arduino zur Steuerung des Programms. Das Hinzufügen einer Schaltfläche gemäß dem Bild funktioniert genau wie die Schaltfläche zum Zurücksetzen der Platine. Das Programm funktioniert, indem es sich daran erinnert, welches Lichtprogramm das letzte Mal verwendet wurde, als das Programm ausgeführt wurde. Somit geht jeder Reset zum nächsten Lichtprogramm.

Die Fotos zeigen, wie die neuen Kabel aus der Brücke kommen, wie ich den Transistor-IC und die Widerstände auf das Steckbrett gelegt habe und wie die Überbrückungsdrähte mit dem Arduino Mega verbunden sind. Ich schneide 4 männlich-männliche Überbrückungsdrähte in 8 Halbdrähte, die ich an die 8 Kabel, die aus der Kerzenbrücke kommen, gelötet habe. Auf diese Weise kann ich die Kabel einfach in das Steckbrett stecken.

Alternative ohne Transistoren

Im vorherigen Schritt habe ich einen gemeinsamen '+'-Draht für die Kerzen und separate '-'-Drähte vorbereitet, die durch den Transistor-IC zur Masse gehen. Wenn ein Datenpin hoch geht, wird der entsprechende '-'-Draht über seinen Transistor geerdet und die LED leuchtet.

Das direkte Anschließen der '-'-Drähte an die Datenpins des Arduino würde auch funktionieren, aber immer darauf achten, wie viel Strom die Datenpins aushalten können! Dieser Ansatz würde eine Änderung in meinem Programm erfordern. Es müssten die Datenstifte niedrig werden, um die Kerzen einzuschalten. Um mein Programm so zu verwenden, wie es ist, müssen Sie '+' und '-' in den Kerzen vertauschen. Haben Sie einen gemeinsamen '-' Draht für die Kerzen, der auf dem Arduino auf GND geht. Und die separaten Drähte verlaufen zwischen dem '+'-Draht der Kerze und einem Datenstift des Arduino.

Schritt 4: Die Lichtprogramme

Mein Programm, das ich im nächsten Schritt vorstelle, durchläuft 9 Lichtprogramme. Durch Drücken der Taste wird das Licht für eine Sekunde dunkel, dann startet das folgende Lichtprogramm. Die Programme sind wie folgt:

  1. Starkes Flackern. Die Kerzen flackern zufällig. Das sieht sehr ärgerlich aus, wenn man sie aus nächster Nähe anstarrt, kann aber aus der Ferne und vielleicht hinter einem frostigen Dachfenster gut aussehen. Aber Ihr Nachbar könnte die Feuerwehr rufen.
  2. Sanftes Flackern. Sieht sehr gut aus. Wie echte Kerzen in einem zugfreien Raum.
  3. Wechselndes Flackern. Die Kerzen wechseln in Abständen von etwa 30 s sanft zwischen starkem und leisem Flackern.
  4. Wechselndes Flackern. Wie #3, aber jede Kerze variiert in ihrem eigenen Tempo zwischen 30 s und 60 s.
  5. Schnelles Funkeln. Die Kerzen leuchten statisch gedimmt und funkeln zufällig. Im Durchschnitt gibt es jede Sekunde ein Funkeln.
  6. Langsames Funkeln. Wie #5, aber viel langsamer.
  7. Schnelle Welle von der mittleren oberen Kerze zu den unteren.
  8. Langsame Welle von der mittleren oberen Kerze zu den unteren.
  9. Statisches helles Licht. Ich musste dies einbinden, wollte die ursprüngliche Funktion nicht loswerden.

Schritt 5: Der Code

/*

FLICKERING CANDLE BRIDGE */ // Deklariere die Mode-Variable, um den Zustand // durch eine Reset-Operation zu halten _attribute_((section(".noinit"))) unsigned int mode; // Wenn das Programm nach einem Reset startet, wird dieses Stück Speicher // nicht initialisiert, sondern hält den Wert //, den es vor dem Reset hatte. Wenn das // Programm zum ersten Mal ausgeführt wird, enthält es einen zufälligen Wert. /* * Die Candle-Klasse enthält alles, was * benötigt wird, um eine Lichtstärke für * eine flackernde Kerze zu berechnen. */ class Candle { private: long maxtime; lange Min.; lange Maxlite; lange Minlit; langes Mittelstück; lange Origmaxzeit; lange Ursprungszeit; langer Origmaxlit; langer Origminlit; langer Origmeanlit; lange Deltamax-Zeit; lange Deltaminzeit; langer Deltamaxlit; langes Deltaminlit; langer Deltameanlit; langes lforat; langer Ausgleich; langer Start; langes Ziel; Schwimmer; lange Zielzeit; lange Startzeit; lange Deltazeit; ungültig neues Ziel (ungültig); langes Ziel (leer); public: Candle(long mat, long mit, long mal, long mil, long mel, long eo); langes levelnow(leere); void initlfo (langes Deltamat, langes Deltamit, langes Deltamal, langes Deltamil, langes Deltamean, lange Rate); Void setlfo (Void); }; Candle::candle(long mat, long mit, long mal, long mil, long mel, long eo): maxtime(mat), mintime(mit), maxlite(mal), minlite(mil), meanlite(mel), evenout (eo), origmaxtime(mat), origmintime(mit), origmaxlite(mal), origminlite(mil), origmeanlite(mel) {target = meanlit; Neues Ziel(); } /* * levelnow() gibt die Lichtstärke zurück, die die Kerze gerade haben sollte. * Die Funktion kümmert sich um das Definieren eines neuen zufälligen Lichtniveaus und * die Zeit, die benötigt wird, um dieses Niveau zu erreichen. Die Änderung ist nicht linear, * sondern folgt einer sigmoiden Kurve. Wenn es nicht an der Zeit ist, ein neues * Niveau zu definieren, gibt die Funktion einfach das Lichtniveau zurück. */ lange Kerze::levelnow(void) { lange Hilfe, jetzt; Schwimmer t1, t2; jetzt = millis(); if (now >= targettime) { help = target; Neues Ziel(); Rückkehrhilfe; aufrechtzuerhalten. Else {//Hilfe = Ziel * (Millis () - Startzeit) / Deltazeit + Start * (Zielzeit - Millis ()) / Deltazeit; t1 = float (Zielzeit - jetzt) / Deltazeit; t2 = 1. - t1; // Dies ist die Sigmoidberechnung help = t1*t1*t1*start + t1*t1*t2*start*3 + t1*t2*t2*target*3 + t2*t2*t2*target; Rückkehrhilfe; aufrechtzuerhalten.}} Leere Kerze:: neues Ziel (void) { lange Summe; Summe = 0; for (long i = 0; i < egalout; i++) sum += onetarget(); Start = Ziel; Ziel = Summe / Ausgleich; Startzeit = Millis(); Zielzeit = Startzeit + zufällig (mintime, maxtime); Deltazeit = Zielzeit - Startzeit; } lange Kerze::onetarget(void) { if (random(0, 10) lastcheck + 100) { lastcheck = now; /* * Der Algo für Funkeln "nach Rate Millisekunden": * Starte die Überprüfung nach Rate / 2 Millisekunden * Während einer Periode von Rate / 2 Millisekunden, mache * die Wahrscheinlichkeit eines Funkelns 50 %. * Wenn die Rate 10000 ms beträgt, wird die Münze während 5000 ms * 50 Mal geworfen. * 1/50 = 0,02 * If random(10000 starttime + rate / 2) { if (random(rate) targettime) return lowlite; return (start - lowlite) * (targettime - now) / (targettime - starttime) + lowlite; aufrechtzuerhalten. Void Twinkler:: Twink (void) { Startzeit = Millis (); Zielzeit = zufällig (Mindestzeit, Höchstzeit) + Startzeit; start = zufällig (minlite, maxlite); aufrechtzuerhalten. Void setup () {int led; // Lesen Sie die Magic-Mode-Variable, die sagen sollte, // welches Light-Programm das letzte Mal ausgeführt wurde, inkrementieren Sie sie // und setzen Sie sie bei Überlauf auf Null zurück. Modus++; Modus %= 9; // Dies kümmert sich um den Wert // war das erste Mal, dass das Arduino // dieses Programm ausführte. /* * WICHTIGER HINWEIS * ============== * * Das Wesentliche dieses Programms ist die Ausgabe von PWM-Signalen * an LED-Leuchten. Hier setze ich die Pins 3 bis 9 auf * Ausgabemodus. Auf einem Arduino Mega2560 geben diese Pins * schön PWM-Signale aus. Wenn Sie ein anderes Arduino haben, überprüfen Sie *, welche Pins (und wie viele) Sie verwenden können. Sie können den Code jederzeit * umschreiben, um Software-PWM zu verwenden, wenn Ihr Arduino * nicht genügend Hardware-PWM-Pins bereitstellen kann. * */ PinMode(3, AUSGANG); pinMode (4, AUSGANG); pinMode(5, AUSGANG); pinMode(6, AUSGANG); pinMode (7, AUSGANG); pinMode (8, AUSGANG); pinMode(9, AUSGANG); pinMode (LED_BUILTIN, AUSGANG); analogWrite (LED_BUILTIN, 0); // Schalten Sie einfach die nervige rote LED an der Arduino-Kerze aus *can[7]; // Bereiten Sie sich darauf vor, die flackernden Kerzen zu verwenden, egal ob Sie sie verwenden oder nicht twinkler *twink[7]; // Bereiten Sie sich darauf vor, die funkelnden Kerzen zu verwenden … if (mode == 8) { for (int i = 3; i < 10; i++) analogWrite (i, 255); während (wahr); // Jedes Mal, wenn dieses Programm ausgeführt wird, geht es in // diese Art von Endlosschleife, bis die Reset-Taste // gedrückt wird. aufrechtzuerhalten. Wenn (Modus < 2) // Flackern { long maxtime_; lange mintime_; lange maxlite_; lange minlite_; langer Mittelwert_; lange gerade_; wenn (Modus == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; Mittelwert_ = 128; gerade_ = 1; aufrechtzuerhalten. Wenn (Modus == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; Mittelwert_ = 200; gerade_ = 1; } for (int i = 0; i < 7; i++) { can = neue Kerze (maxtime_, mintime_, maxlite_, minlite_, meanlite_, Even_); } while (true) // Die Endlosschleife für flackernde Kerzen { for (int i = 0; i levelnow()); } } if (mode < 4) // lfo zum Flackern hinzugefügt { if (mode == 2) // gleiches lfo (30 s) für alle Kerzen { for (int i = 0; i initlfo(75, 50, 0, 50, 36, 30000); } } if (mode == 3) // Variieren von lfo:s für die Kerzen { for (int i = 0; i initlfo(75, 50, 0, 50, 36, 20000); can[1]->initlfo(75, 50, 0, 50, 36, 25000); can[2]->initlfo(75, 50, 0, 50, 36, 30000); can[3]->initlfo(75, 50, 0, 50, 36, 35000); can[4]->initlfo(75, 40, 0, 50, 36, 40000); can[5]->initlfo(75, 30, 0, 50, 26, 45000); can[6]->initlfo(75, 20, 0, 50, 16, 50000); can[7]->initlfo(75, 10, 0, 50, 6, 55000); } while (true) // Die Endlosschleife für flackernde Kerzen mit einem lfo { long lastclock = 0; for (int i = 0; i levelnow()); if (millis() > lastclock + 4000) { lastclock = millis(); for (int i = 0; i setlfo(); } } } if (mode < 6) // funkelnde Kerzen { int speedo; if (mode == 4) speedo = 6000; else speedo = 22000; for (int i = 0; i < 7; i++) twink = new twinkler(300, 295, 255, 250, speedo); while (true) { for (int i = 0; i levelnow()); } } // Wellen. // Dieser Abschnitt beginnt mit geschweiften Klammern // nur um sicherzustellen, dass es keine widersprüchlichen Variablennamen gibt. // Keine weiteren Klammern erforderlich, keine Überprüfung des // Werts von mode.{intllite = 2; int hilite = 255; int bedeuten; int-Verstärker; Schwimmerfasedelta = 2,5; Schwimmer; int lang; Schwimmer; lange Zeit; Mittelwert = (Lolith + Hilit) / 2; ampl = Hilit - Mittelwert; wenn (Modus == 6) Periode = 1500; sonst Periode = 3500; phaktor = 6.28318530718 / Periode; while (wahr) {fase = phactor * (millis() % Periode); elong = mean + ampl * sin(fase); analogWrite(7, verlängern); analogWrite(9, verlängern); fase = phaktor * ((millis() + Periode / 4) % Periode); elong = Mittelwert + ampl * sin(fase); analogWrite(3, verlängern); analogWrite(8, verlängern); fase = phaktor * ((millis() + Periode / 2) % Periode); elong = mean + ampl * sin(fase); analogWrite(4, verlängern); analogWrite(5, verlängern); fase = phactor * ((millis() + 3 * Periode / 4) % Periode); elong = Mittelwert + ampl * sin(fase); analogWrite(6, verlängern); } // Beim Anschließen der Kerzendrähte an den Arduino // habe ich sie gemischt und nie in Ordnung gebracht. // Die Reihenfolge ist wichtig, um Wellenmuster zu erstellen, // also habe ich gerade diese kleine Tabelle für mich geschrieben: // // Candle# in the bridge: 2 3 5 4 7 6 1 // Data pin on Arduino: 3 4 5 6 7 8 9 } } void loop() { // Da jedes Light-Programm eine eigene Endlosschleife ist, // habe ich alle Schleifen in den begin()-Abschnitt geschrieben // und nichts für diesen loop()-Abschnitt gelassen. }

Schritt 6: Über PWM

Die LEDs leuchten hell, wenn sie mit 3 V betrieben werden. Bei nur 1,5 V leuchten sie überhaupt nicht. LED-Leuchten verblassen nicht gut mit der nachlassenden Spannung, wie dies bei Glühlampen der Fall ist. Stattdessen müssen sie mit voller Spannung eingeschaltet und dann ausgeschaltet werden. Wenn dies 50 Mal pro Sekunde passiert, leuchten sie schön mit einer Helligkeit von 50 %, mehr oder weniger. Dürfen sie nur 5 ms an und 15 ms aus sein, dürften sie mit 25 % Helligkeit leuchten. Diese Technik macht LED-Licht dimmbar. Diese Technik wird Pulsweitenmodulation oder PWM genannt. Ein Mikrocontroller wie Arduino hat normalerweise Datenpins, die Ein-/Aus-Signale senden können. Einige der Datenpins verfügen über integrierte PWM-Funktionen. Wenn jedoch nicht genügend Pins mit integriertem PWM vorhanden sind, ist es normalerweise möglich, dedizierte Programmierbibliotheken zu verwenden, um "Software-PWM-Pins" zu erstellen.

In meinem Projekt habe ich einen Arduino Mega2560 verwendet, der Hardware-PWM an den Pins 3 - 9 hat. Wenn Sie einen Arduino UNO verwenden, haben Sie nur sechs PWM-Pins. Wenn Sie in diesem Fall eine 7. (oder noch mehr) Kerze benötigen, kann ich die Software-PWM-Bibliothek von Brett Hagman empfehlen, die Sie hier finden.