Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Installieren des Spiegels und der Spiegelfolie
- Schritt 2: Einrichten des LED-Streifens
- Schritt 3: Anbringen des IR-Sensors und des LCD (optional)
- Schritt 4: Code
- Schritt 5: Montage
Video: Infinity-Spiegel mit LCD- und IR-Sensor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Dieses Projekt zeigt Ihnen, wie Sie einen Infinity-Spiegel herstellen können. Das Grundkonzept besteht darin, dass die LEDs, die sich auf dem Spiegel befinden, Licht erzeugen, das vom Rückspiegel zum Frontspiegel reflektiert wird, wo ein Teil des Lichts entweicht, sodass wir nach innen sehen können, und ein anderer Teil zurück zum Rückspiegel reflektiert wird und den unendlichen Effekt erzeugt. Dies basiert auf dem Infinity-Spiegel mit Ultraschallsensoren, die von Hack Sioux Falls anweisbar sind, und dem Verbinden des I2C-LCD-Displays mit Arduino Uno von JunezRiyaz.
Lieferungen
1. Eine Schattenbox (50 $)
2. 1-Wege-Spiegelfolie ($17)
3. Ein RGB-LED-Lichtstreifen ($ 30)
4. Arduino ($35)
5. Ein Spiegel ($10)
Optional:
1. IR-Sensor und Fernbedienung (20 $)
2. Ein LCD (20 $)
3. 7 Buchsen-zu-Stecker-Anschlüsse
4. 3 Stecker auf Stecker
Werkzeuge
1. Lötkolben
2. Drahtschneider und Abisolierer
3. Etwas, um den Spiegel zu schneiden
*Beachten Sie, dass alle Preise in CAD und Größen von der von Ihnen verwendeten Box abhängen.
Schritt 1: Installieren des Spiegels und der Spiegelfolie
Das erste, was Sie tun müssen, ist, den Spiegel zu installieren, der sich auf der Rückseite der Schattenbox befinden wird. Sie möchten entweder einen in der richtigen Größe oder einen größeren kaufen und ihn dann zuschneiden. Aber dafür braucht man einen Spiegel und nicht die Folie, denn wir wollen, dass das gesamte Licht zurückreflektiert wird, die Spiegelfolie kann auch das Muster des Materials annehmen, auf dem sie sich befindet, wenn es kein Glas ist.
Wenn Sie den Spiegel installieren, stellen Sie sicher, dass er in der Schattenbox befestigt ist. Ich würde empfehlen, kleine Holzstücke und Nägel zu verwenden, um sicherzustellen, dass sich der Spiegel nicht bewegt. Ich hatte in der Zeit, in der ich dieses Projekt fertigstellen musste, keinen Spiegel, also habe ich den Film verwendet (Sie können auf den Bildern sehen). Das Konzept funktioniert aber nicht sehr gut und gibt einen schrägen und chaotischen Look, der meiner Meinung nach nicht gut aussieht.
Jede Spiegelfolie wird ein wenig anders sein, aber die, von der ich gesagt habe, dass sie das Glas, auf das wir die Folie kleben, reinigen soll, dann mit Klebeband die Schutzfolie auf einer Seite entfernen und mit Seifenwasser in einem Spray sprühen Flasche legen Sie den Film auf das Glas. Verwenden Sie dann eine Kreditkarte oder einen Rakel, um Luftblasen und überschüssiges Wasser zu entfernen. Ich hatte wieder kein Glas, aber es funktioniert immer noch genauso. Anschließend das Glas über Nacht trocknen lassen und fertig.
Schritt 2: Einrichten des LED-Streifens
Für die LEDs habe ich nur das mitgelieferte doppelseitige Klebeband verwendet, um es an den Rahmen zu kleben und ein Loch für den Draht gemacht, um herauszukommen. An jeder Ecke lötete ich Kabel, um sie mit einem anderen Streifen zu verbinden, um die Kastenform ohne abgerundete Kanten zu erhalten. Stellen Sie sicher, dass Sie die Streifen nur an den Stellen abschneiden, an denen es Kontakte gibt, die dies ermöglichen würden, und die Richtung der LEDs nicht vertauschen, die als Polaritätsumkehr bekannt ist. Der Streifen, den ich bekommen habe, hatte Pfeile, um sicherzustellen, dass dies nicht passiert. Stellen Sie also sicher, dass sie alle in die gleiche Richtung zeigen.
Ich machte ein kleines Loch, um das Kabel an die Außenseite der Box zu führen, die LEDs, die ich hatte, waren 3 Pin-adressierbare LEDs, so dass ich Strom-, Masse- und Datenanschlüsse hatte. Ich habe Digital Pin 3 für den Datenanschluss verwendet. Testen Sie Ihre LED-Streifen, um sicherzustellen, dass sie funktionieren, bevor Sie sie an den Rahmen kleben, und stellen Sie sicher, dass Sie nur die empfohlene Spannung für meinen verwenden, die 5 - 6 V beträgt.
Schritt 3: Anbringen des IR-Sensors und des LCD (optional)
Ich entschied mich, einen IR-Sensor und eine Fernbedienung zu verwenden, um die Lichteffekte zu ändern und ein LCD zu verwenden, um dem Benutzer die Optionen für die Effekte zu zeigen.
Um den LCD- und IR-Sensor zu montieren, würde ich eine Heißklebepistole verwenden und sie oben auf den Rahmen kleben und alles nach hinten verdrahten, aber ich wollte nicht, dass sie repariert werden, weil ich sie nach dem Projekt möglicherweise abnehmen muss ist fertig.
Um den LCD- und IR-Empfänger anzuschließen, habe ich Stecker auf Buchse verwendet, die für Daten sowie Masse und Strom in den Arduino gesteckt werden. Um alles zu verdrahten, habe ich Pin 12 mit einem 2 kΩ Widerstand am Datenpin für den IR-Sensor, Analog Pin A4 für den SDA des LCD und Analog Pin 5 für den SCL des LCD verwendet.
Schritt 4: Code
Für dieses Projekt verwende ich einige Bibliotheken, die Sie herunterladen müssen, um sie zu verwenden. Ich werde sie hier ablegen. Denken Sie daran, dass ich Windows verwende, sodass dies Auswirkungen haben kann, wenn Sie Mac oder Linux verwenden.
Sie müssen die Anzahl der Pixel abhängig von der Anzahl der LEDs ändern, die Sie haben. Ich habe auch eine serielle Monitor-Schnittstelle eingebaut, damit Sie auf diese Weise eine Schnittstelle herstellen können, wenn Sie keinen IR-Sensor verwenden.
// Bibliotheken
#include Adafruit_NeoPixel.h> #include #include #include // Pins und konstante Werte // Pins und konstante Werteconst int RECV_PIN = 12; IRrecv irrecv(RECV_PIN); decode_results-Ergebnisse; unsigned long key_value = 0; const int NUMPIXELS = 27;
Adafruit_NeoPixel-Pixel = Adafruit_NeoPixel (NUMPIXELS, 3);
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Variablen int IRNumb; int IRNummer2; int Regenbogen = 0; uint32_t rainbowColor = Pixel. Color(0, 0, 0); Zeicheneingabe = 0; Zeicheneingabe2 = 0; int r; intg; intb; int breakCondition = 0; void setup() { // Initialisiert Elemente, die nicht wiederholt werden müssen. lcd.begin (16, 2); // Definieren von 16 Spalten und 2 Zeilen der LCD-Anzeige lcd.backlight (); // Um die Hintergrundbeleuchtung einzuschalten Serial.begin (9600); Pixel.begin(); irrecv.enableIRIn(); Serial.println ("Geben Sie eine 0 ein, um das Licht auszuschalten"); // Beginnende Anweisungen Serial.println ("Geben Sie eine 1 ein, um die LEDs auf weiß zu schalten"); Serial.println ("Geben Sie eine 2 ein, damit die LEDs verschiedene Farben durchlaufen"); Serial.println ("Geben Sie eine 3 ein, um die LED-Farben manuell anzupassen"); aufrechtzuerhalten. Void Schleife () {IRNumb = 10; IRScan(); mainOptions(); if (Serial.available() > 0) { // Prüft, ob ein Zeichen verfügbar ist? input = (char)Serial.read(); } // Wählt die verschiedenen Optionen if (input == '1' || IRNumb == 1){ rainbowColor = colourChange(255, 255, 255); // Weiß setAll(rainbowColor); // Aktualisiert die LEDs} else if (input == '0' || IRNumb == 0) { rainbowColor = colourChange (0, 0, 0); // Off setAll(rainbowColor); // Aktualisiert die LEDs} else if (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;
Serial.println ("Geben Sie alles ein, was keine 2 ist, um diesen Effekt zu beenden, dann eine der vorherigen Optionen für einen neuen Effekt.");
lcd.clear(); // Reinigen Sie den Bildschirm lcd.setCursor (0, 0); lcd.print("Beenden mit Any-"); lcd.setCursor(0, 1); lcd.print("betäube das != 2"); for(int i = 0; i = 48 && Eingabe <= 57) || BreakBedingung == 1 || IRNumb != 2){ // Prüft, ob der Effekt beendet werden muss rainbowColor = colourChange (0, 0, 0); setAll(RegenbogenFarbe); BreakCondition = 1; brechen; } rainbowColor = colorChange (i, 0, 0); setAll(RegenbogenFarbe); showStrip(); Verzögerung (100); } for(int i = 0; i = 48 && Eingabe <= 57) || BreakBedingung == 1 || IRNumb != 2){ // Prüft, ob der Effekt beendet werden muss rainbowColor = colourChange (0, 0, 0); setAll(RegenbogenFarbe); BreakCondition = 1; brechen; } g++; rainbowColor = colorChange (i, g, 0); setAll(RegenbogenFarbe); showStrip(); Verzögerung (100); } for(int g = 0; g = 48 && Eingabe <= 57) || BreakBedingung == 1 || IRNumb != 2){ // Prüft, ob der Effekt beendet werden muss rainbowColor = colourChange (0, 0, 0); setAll(RegenbogenFarbe); BreakCondition = 1; brechen; } r+= 2; RainbowColor = Farbänderung (r, g, 0); setAll(RegenbogenFarbe); showStrip(); Verzögerung (100); } for(int b = 0; b = 48 && Eingabe <= 57) || BreakBedingung == 1 || IRNumb != 2){ // Prüft, ob der Effekt beendet werden muss rainbowColor = colourChange (0, 0, 0); setAll(RegenbogenFarbe); BreakCondition = 1; brechen; } r+= 2; g+= 5; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); Verzögerung (100); } mainOptions(); aufrechtzuerhalten. Sonst wenn (Eingabe == '3' || IRNumb == 3) { r = 0; g = 0; b = 0;
Serial.println ("Geben Sie n zum Beenden ein");
Serial.println ("Verwenden Sie w und s, um die rote Farbe zu erhöhen oder zu verringern"); Serial.println ("Verwenden Sie r und f, um die grüne Farbe zu erhöhen oder zu verringern"); Serial.println ("Verwenden Sie y und h, um die blaue Farbe zu erhöhen oder zu verringern"); lcd.clear (); // Reinigen Sie den Bildschirm lcd.setCursor (0, 0); lcd.print("exit:0, 4/7:+/-rot"); lcd.setCursor(0, 1); lcd.print("5/8:grün, 6/9:blau");
while (input2 != 'n' || IRNumb2 != 0){
if (Serial.available() > 0) { // ist ein Zeichen verfügbar? input2 = (char)Serial.read(); } //Seriell.println (IRNumb2); IRZahl2 = 10; IRScan2();
if (IRNumb2 == 0){
brechen; } if (input2 == 'w' || IRNumb2 == 4){ r+= 2; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); aufrechtzuerhalten. Sonst if (input2 == 's' || IRNumb2 == 7) { r-= 2; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); aufrechtzuerhalten. Sonst if (input2 == 'r' || IRNumb2 == 5) {g+= 2; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); aufrechtzuerhalten. Sonst if (input2 == 'f' || IRNumb2 == 8) {g-= 2; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); }
else if (input2 == 'y' || IRNumb2 == 6){
b+= 2; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); }
sonst if (input2 == 'h' || IRNumb2 == 9){
b-= 2; rainbowColor = colorChange (r, g, b); setAll(RegenbogenFarbe); showStrip(); } } mainOptions(); } setAll (RegenbogenFarbe); showStrip(); aufrechtzuerhalten. Void showStrip () {pixel.show (); aufrechtzuerhalten. Void setAll (uint32_t color) { for(int i = 0; i <NUMPIXELS; i++) { Pixel.setPixelColor (i, color); } } // Geben Sie einen Wert von 0 bis 255 ein, um einen Farbwert zu erhalten. uint32_t colorChange (int r, int g, int b) { return Pixel. Color(r, g, b); } void mainOptions (){ // Sjows die Haupteffektoptionen lcd.clear(); // Säubern Sie den Bildschirm lcd.setCursor (0, 0); lcd.print("0 für Licht aus"); lcd.setCursor(0, 1); lcd.print("1: Weißes Licht"); Verzögerung (1000); lcd.clear (); // Reinigen Sie den Bildschirm lcd.setCursor (0, 0); lcd.print("2: Farbeffekt"); lcd.setCursor(0, 1); lcd.print("3: Handbuch"); Verzögerung (1000); } void IRScan (){ if (irrecv.decode(&results)){
if (results.value == 0XFFFFFFFF)
result.value = key_value; Else{//Serial.println (results.value, HEX); if (results.value == 0xFF6897 || results.value == 0xC101E57B){ IRNumb = 0; //Seriell.println("0"); aufrechtzuerhalten. sonst if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb = 1; //Seriell.println("1"); } else if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb = 2; //Seriell.println("2"); } else if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); aufrechtzuerhalten. sonst if (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb = 4; //Seriell.println("4"); aufrechtzuerhalten. sonst if (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } else if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } else if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb = 7; //Seriell.println("7"); } else if (results.value == 0x1BC0157B || results.value ==0xFF4AB5) {IRNumb = 8; //Seriell.println("8"); aufrechtzuerhalten. Sonst if (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println("9"); } } key_value = results.value; irrecv.resume(); }} void IRScan2 (){ if (irrecv.decode(&results)){
if (results.value == 0XFFFFFFFF)
result.value = key_value; Else {//Serial.println (results.value, HEX); if (results.value == 0xFF6897 || results.value == 0xC101E57B){ IRNumb2 = 0; //Seriell.println("0"); aufrechtzuerhalten. sonst if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb2 = 1; //Seriell.println("1"); } else if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb2 = 2; //Seriell.println("2"); aufrechtzuerhalten. sonst if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); aufrechtzuerhalten. sonst if (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb2 = 4; //Seriell.println("4"); aufrechtzuerhalten. Sonst if (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } else if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println("6"); aufrechtzuerhalten. sonst if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb2 = 7; //Seriell.println("7"); } else if (results.value == 0x1BC0157B || results.value ==0xFF4AB5) {IRNumb2 = 8; //Seriell.println("8"); aufrechtzuerhalten. Sonst if (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); } } key_value = results.value; irrecv.resume(); } }
Schritt 5: Montage
Um das Arduino am Rahmen zu montieren, würde ich es einfach und das Steckbrett, das ich auf der Rückseite des Rahmens verwendet habe, kleben und versuchen, die Kabel abzudecken / zu verstecken, damit es gut aussieht.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
So reparieren Sie einen Wechselrichter mit LCD-Hintergrundbeleuchtung. Mit einem Fujiplus FP-988D. für 0 $.: 9 Schritte
So reparieren Sie einen Wechselrichter mit LCD-Hintergrundbeleuchtung. Mit einem Fujiplus FP-988D. für $ 0.: In diesem anweisbaren werde ich Sie durch die Reparatur eines toten LCD-Hintergrundlicht-Wechselrichters mit den Teilen führen, die Sie haben. Sie können feststellen, ob Sie ein totes Gegenlicht haben, indem Sie zuerst andere Möglichkeiten ausschließen. Monitor auf mehreren Computern überprüfen. Stellen Sie sicher, dass