Arduino Puppenhaus-Beleuchtung mit Sound

In diesem Arduino-Projekt bringen wir Beleuchtung und Sound in jedes Puppenhaus! Mit einem System aus drei LEDs und Tastern können Puppenhausbesitzer*innen ihre Beleuchtung ein- und ausschalten, während zwei weitere LEDs per Potentiometer gedimmt werden können. Eine LED simuliert sogar Kaminfeuer- oder TV-Flackern für noch mehr Realitätseffekt. Puppenhausbesitzer*innen werden viel Spaß mit diesem Arduino-Puppenhaus-Beleuchtungssystem haben und ihre Miniaturwelten noch lebendiger gestalten können! Aber das Beste ist das integrierte MP3-Modul, das es ermöglicht, Sounddateien von einer SD-Karte abzuspielen, indem man mit einem Taster die Dateien ganz einfach durchschalten kann: Ballsaal, Disko oder Gruselfieber mit Gewitter – Der Fantasie sind keine Grenzen gesetzt. Und natürlich ist es auch ein Spaß, es mit ihnen zusammen aufzubauen ;-) Wir benötigen Ihre Zustimmung um den Inhalt von YouTube laden zu können. Mit dem Klick auf das Video werden durch den mit uns gemeinsam Verantwortlichen Youtube [Google Ireland Limited, Irland] das Video abgespielt, auf Ihrem Endgerät Skripte geladen, Cookies gespeichert und personenbezogene Daten erfasst. Damit kann Google Aktivitäten im Internet verfolgen und Werbung zielgruppengerecht ausspielen. Es erfolgt eine Datenübermittlung in die USA, diese verfügt über keinen EU-konformen Datenschutz. Weitere Informationen finden Sie hier. Hier klicken um den Inhalt zu aktivieren. Jmx0O2RpdiBjbGFzcz0mcXVvdDtudi1pZnJhbWUtZW1iZWQmcXVvdDsmZ3Q7Jmx0O2lmcmFtZSB0aXRsZT0mcXVvdDtBcmR1aW5vIFB1cHBlbmhhdXMtQmVsZXVjaHR1bmcmcXVvdDsgd2lkdGg9JnF1b3Q7MTIwMCZxdW90OyBoZWlnaHQ9JnF1b3Q7Njc1JnF1b3Q7IHNyYz0mcXVvdDtodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9yY1ZrS3kxeGdtND9mZWF0dXJlPW9lbWJlZCZxdW90OyBmcmFtZWJvcmRlcj0mcXVvdDswJnF1b3Q7IGFsbG93PSZxdW90O2FjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmU7IHdlYi1zaGFyZSZxdW90OyBhbGxvd2Z1bGxzY3JlZW4mZ3Q7Jmx0Oy9pZnJhbWUmZ3Q7Jmx0Oy9kaXYmZ3Q7 Kurzes Video, die rote LED könnte das Kaminfeuer sein Bauteile o. Ä. DFPlayer Mini MicroSD-Karte Lautsprecher Schaltung Um die Schaltung für deinen Arduino aufzubauen, musst du folgende Schritte ausführen: Schließe die Stromschienen des Breadboards an den 5V+- und GND-Anschluss deines Arduinos an. Schließe die Pins 13, 11, 7, 9 und 4 des Arduinos an, jeweils an einen Button an. Die andere Seite der Button muss mit dem GND verbunden werden. Schließe die Pins 14, 12, 8, 10, 5 und 6 des Arduinos jeweils über einen Widerstand (220 Ohm) an die Anoden (langes Beinchen) der LEDs an. Schließe die Pins A4 und A2 des Arduinos an die Abgriffe (mittleres Beinchen) der Potentiometer an. Verbinde die äußeren Beinchen der Potentiometer jeweils mit 5V+ und GND. Schließe das DFPlayer Mini-Modul wie in der Grafik an Pin 2 und 3. Der Widerstand hat einen Wert von ca. 1 kOhm. Schließe den Lautsprecher am DFPlayer Mini an. DFPlayer-Mini Für die Tonausgabe wird der DFPlayer Mini verwendet. Er spielt MP3- und WAV-Dateien von einer SD-Karte ab. Für die Nutzung muss die DFPlayer Mini Bibliothek eingebunden werden. Klicke dafür im Arduino-Menü auf Sketch>Bibliotheken einbinden>Bibliotheken verwalten und gib im Suchfeld »dfplayer mini« ein. Installiere die Bibliothek DFPlayer Mini MP3 by Makuna in der aktuellen Version. Die SD-Karte muss im FAT16 oder FAT32-Dateisystem formatiert sein. Die Dateien können einfach ins Hauptverzeichnis der SD-Karte kopiert werden. Hier sind ein paar Beispieldateien von bensound.com: Beispielsounds herunterladen (ZIP, 22MB) Einstellungen im Code Im Code lassen sich noch ein paar Einstellungen vornehmen: /* ***** ***** Einstellungen ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** */ int flackerstaerkeMin = 100; // Minimale Helligkeit des Flackerns int flackerstaerkeMax = 255; // Maximale Helligkeit des Flackerns int flackerstaerke = 10; // Wie stark soll die LED flackern int mp3Anzahl = 6; // Menge der MP3-Dateien auf der SD-Karte int lautstaerke = 10; // Lautstärke des DFPlayers (0 – 30); Code: Arduino Puppenhaus-Beleuchtung mit Sound #include "SoftwareSerial.h" // Wird für den DFPlayer benötigt #include "DFRobotDFPlayerMini.h" // Wird für den DFPlayer benötigt /* ***** ***** Einstellungen ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** */ int flackerstaerkeMin = 100; // Minimale Helligkeit des Flackerns int flackerstaerkeMax = 255; // Maximale Helligkeit des Flackerns int flackerstaerke = 10; // Wie stark soll die LED flackern int mp3Anzahl = 6; // Menge der MP3-Dateien auf der SD-Karte int lautstaerke = 10; // Lautstärke des DFPlayers (0 – 30); const int buttonPins[] = {13, 11, 7, 9, 4}; const int ledPins[] = {14, 12, 8, 10, 5, 6}; const int potPins[] = {A4, A2}; boolean buttonState[] = {0, 0, 0, 0, 0, 0, 0}; boolean lastButtonState[] = {0, 0, 0, 0, 0, 0, 0}; bool flickeringLEDOn = false; int soundState = 0; // Status des DFPlayers SoftwareSerial mySoftwareSerial(2, 3); // RX, TX DFRobotDFPlayerMini myDFPlayer; void setup() { // Diese Funktion wird aufgerufen, sobald der Arduino eingeschaltet oder zurückgesetzt wird mySoftwareSerial.begin(9600); // Initialisiert den seriellen Port mySoftwareSerial mit einer Baudrate von 9600 Bit pro Sekunde Serial.begin(115200); // Initialisiert den eingebauten seriellen Port mit einer Baudrate von 115200 Bit pro Sekunde for (int i = 0; i < 5; i++) { // Durchläuft die ersten fünf Elemente des Arrays buttonPins pinMode(buttonPins[i], INPUT_PULLUP); // Legt den Modus des Pins auf INPUT_PULLUP fest, wodurch der interne Pull-up-Widerstand aktiviert wird } for (int i = 0; i < 4; i++) { // Durchläuft die ersten vier Elemente des Arrays ledPins pinMode(ledPins[i], OUTPUT); // Legt den Modus des Pins auf OUTPUT fest, wodurch der Pin als Ausgang verwendet werden kann } initSoundModule(); // Ruft die Funktion initSoundModule auf, um das Soundmodul zu initialisieren } void loop() { // Die Funktion "loop()" wird von der Arduino-IDE aufgerufen, um den Code immer wieder abzuspielen. for (int i = 0; i < 5; i++) { // Schleife, die für jeden der fünf Buttons ausgeführt wird. buttonState[i] = digitalRead(buttonPins[i]); // Den aktuellen Zustand des Buttons auslesen. if ((buttonState[i] == LOW) && (lastButtonState[i] != buttonState[i])) { // Wenn der Button gedrückt wurde und sich der Zustand seit dem letzten Durchlauf der Schleife geändert hat... if ((i >= 0) && (i < 3)) digitalWrite(ledPins[i], !digitalRead(ledPins[i])); // ...wird überprüft, ob der Button einer der ersten drei ist. Wenn ja, wird der Zustand der entsprechenden LED umgeschaltet. else if (i == 3) { // Wenn der Button der vierte ist, wird der Zustand der flackernden LED umgeschaltet. flickeringLEDOn = !flickeringLEDOn; } else if (i == 4) { // Wenn der Button der fünfte ist, wird der Sound abgespielt (oder angehalten). soundState++; if (soundState < mp3Anzahl) { // Den aktuellen Soundstatus ausgeben und den nächsten Sound abspielen. Serial.print("Sound play = "); Serial.println(soundState); myDFPlayer.play(soundState); delay(20); } else { // Wenn alle Sounds abgespielt wurden, wird das Abspielen angehalten und der Soundstatus zurückgesetzt. myDFPlayer.pause(); Serial.println("Sound stop"); soundState = 0; } } } } controlFlickeringLED(flickeringLEDOn); // Flickering LEDs steuern analogWrite(ledPins[4], map(analogRead(potPins[0]), 0, 1023, 0, 255)); // Helligkeit der dimmbaren LEDs anpassen analogWrite(ledPins[5], map(analogRead(potPins[1]), 0, 1023, 0, 255)); // Helligkeit der dimmbaren LEDs anpassen for (int i = 0; i < 5; i++) { lastButtonState[i] = buttonState[i]; } delay(10); } void controlFlickeringLED(bool on) { // Methode zum Steuern der flackernden LED if (on) { if (random(0, flackerstaerke) == 0) { int brightness = random(flackerstaerkeMin, flackerstaerkeMax); // Zufällige Helligkeit für die LED erzeugen analogWrite(ledPins[3], brightness); // LED mit zufälliger Helligkeit flackern lassen } } else { digitalWrite(ledPins[3], LOW); // LED ausschalten } } void initSoundModule() { // Initialisierung des Soundmoduls Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); // Meldung ausgeben if (!myDFPlayer.begin(mySoftwareSerial)) { // Verbindung zu DFPlayer Mini herstellen Serial.println(F("Unable to begin: Check connection, insert SD card.")); // Fehlermeldung ausgeben while (true) { // Endlosschleife, bis Verbindung hergestellt wird delay(0); // Verzögerung, um Kompatibilität mit ESP8266 Watchdog zu gewährleisten } } Serial.println(F("DFPlayer Mini online.")); // Meldung ausgeben, wenn Verbindung hergestellt wurde myDFPlayer.volume(lautstaerke); // Lautstärke setzen (0 bis 30) }; Code-Erklärungen Im setup-Teil des Programms wird zunächst die Software-Seriellverbindung mit einer Baudrate von 9600 initialisiert. Danach wird die Serielle Verbindung mit einer Baudrate von 115200 gestartet. In einer Schleife werden dann die Pins für die Taster auf INPUT_PULLUP gesetzt, während in einer weiteren Schleife die Pins für die LEDs auf OUTPUT gesetzt werden. Zum Schluss wird das Soundmodul initialisiert. Im loop-Teil des Programms wird zunächst in einer Schleife der Zustand der Taster ausgelesen und im Array buttonState gespeichert. Wenn der aktuelle Tasterzustand sich von dem letzten unterscheidet und der Taster gedrückt ist (LOW), wird überprüft, welcher Taster betätigt wurde. Wenn es einer der ersten drei Taster ist, wird der Zustand der entsprechenden LED umgeschaltet. Wenn der vierte Taster betätigt wird, wird der Zustand der flackernden LED umgeschaltet. Wenn der fünfte Taster betätigt wird, wird überprüft, ob bereits alle Sounddateien abgespielt wurden. Wenn nicht, wird die nächste Datei abgespielt, andernfalls wird das Abspielen gestoppt und der Zähler zurückgesetzt. Danach wird die flackernde LED gesteuert, falls sie eingeschaltet ist. Anschließend wird die Helligkeit der dimmbaren LEDs anhand des Potentiometerwertes angepasst und der Zustand der Taster für die nächste Iteration im Array lastButtonState gespeichert. Zum Schluss wird eine Verzögerung von 10 Millisekunden eingefügt. Die Methode controlFlickeringLED dient dazu, die flackernde LED zu steuern. Sie nimmt einen booleschen Wert on entgegen, der angibt, ob die LED eingeschaltet sein soll. Wenn on true ist, wird überprüft, ob eine zufällige Zahl, die im Bereich von 0 bis flackerstaerke generiert wurde, 0 ist. Wenn ja, wird eine zufällige Helligkeit im Bereich von flackerstaerkeMin bis flackerstaerkeMax erzeugt und der LED zugewiesen, sodass sie mit dieser Helligkeit flackert. Wenn on false ist, wird die LED ausgeschaltet. Die Methode initSoundModule dient zur Initialisierung des Soundmoduls. Zunächst wird eine Meldung ausgegeben, dass das DFPlayer Mini gestartet wurde. Danach wird versucht, die Verbindung zum DFPlayer Mini mit der übergebenen Seriellen Schnittstelle aufzubauen. Wenn dies nicht möglich ist, werden Fehlermeldungen ausgegeben und das Programm angehalten. Wenn die Verbindung erfolgreich hergestellt wurde, wird eine Meldung ausgegeben und die Lautstärke des DFPlayer Mini auf den Wert von lautstaerke gesetzt. Jetzt aber viel Spaß beim Nachbauen! Info: Diesen Artikel habe ich mit Hilfe von CodeGPT geschrieben. War allerdings nicht so einfach, wie ich dachte :-D Der Beitrag Arduino Puppenhaus-Beleuchtung mit Sound erschien zuerst auf Arduino Tutorial.

zum Artikel gehen

Sende a message from arduino nano to raspberry pi via 433 mhz rf module

I want to make a data transfer circuit using Arduino nano and Raspberry Pi. It will be done using 433 mhz rf module. If the password sent by Arduino is correct, Raspberry Pi will respond with a message stating the correct password... (Budget: $10 - $11 US

zum Artikel gehen

Mit Arduino Bewegungs- und Orientierungssensoren in Systeme integrieren

Entwickler müssen ihre Systeme zunehmend mit Orientierungs- und Bewegungsfunktionen ausstatten, sind aber unsicher, wo sie anfangen sollen. Ein Arduino könnte dabei helfen.

zum Artikel gehen

heise+ | Spracherkennung mit Arduino nano connect realisieren

Spracherkennung mit einem Arduino, das war bislang mangels Rechenpower unvereinbar. Doch der Nano RP2040 connect soll das packen. Wir zeigen, wie es geht.

zum Artikel gehen

Wokwi: Web-Simulator, etwa für Raspberry Pi Pico, Arduino und ESP32

Mit dem Online-Simulator Wokwi lassen sich Mikrocontroller-Projekte mit Raspberry Pi Pico, Arduino, ESP32 und weiteren Boards sowie Sensoren im Web-Browser simulieren.

zum Artikel gehen

Nachtlicht mit Arduino

Jonas hat mir geschrieben und gefragt, wie man eine LED per Fotowiderstand dimmen könnte. Da machen wir doch gleich ein schönes Projekt draus: ein Nachtlicht mit Arduino. Wer kenn das nicht?! Man muss nachts kurz raus und bleibt im Dunklen mit dem kle

zum Artikel gehen