Projekte/Infinity-Mirror-Catears: Difference between revisions
< Projekte
Jump to navigation
Jump to search
m (Minor typo fixes) |
(library) |
||
| Line 73: | Line 73: | ||
==== Code ==== |
==== Code ==== |
||
| + | Benötigte Bibliotheken: |
||
| + | |||
| + | - https://github.com/adafruit/Adafruit_NeoPixel Ich habe 1.15.1 verwendet. |
||
// CC-BY Wutchilli |
// CC-BY Wutchilli |
||
//sudo chmod 666 /dev/ttyUSB0 (personal memory of a Linux command) |
//sudo chmod 666 /dev/ttyUSB0 (personal memory of a Linux command) |
||
Latest revision as of 20:45, 27 June 2025
Infinity Mirror Cat Ears
Wir alle lieben Katzenohren, wir sind alle fasziniert von Infinity Mirror.
Wieso also nicht beides kombinieren? :D
BOM
- ESP32_Devkit
- Kupferlackdraht 0,3 mm
- ~ 1m Kabel 3 Adern
- ca. 27cm WS2812C-2020 RGB 4mm breite Streifen 300 LED/m
- Micro USB Kabel + Powerbank als Stromversorgung
- Behältniss für den ESP
- 4 Breadboard Kabel unterschiedlicher Farbe, Buchse-Buchse
- 2mm starkes Plexiglas
- Spiegelfolie
- Sekundenkleber
- Heißkleber
- Schrumpfschlauch
- Isolierband
- 3d-Druck Filament
- Lötzinn
Werkzeug
- Lötkolben
- Lasercutter
- 3d-Drucker
- Heißklebepistole
- Skapell + Schneidbrett
- Schraubzwinge
- Computer
- Cuttermesser/Abisolierwerkzeug
- Seitenschneider
Arbeitsschritte
- Ohren drucken und bei Bedarf nacharbeiten (insbesondere auf die Kabelschächte achten)
- erstmal eine Testscheibe lasern und bei Bedarf Skalierung anpassen da Drucker und Laser unterschiedliche Toleranzen haben (bei mir passten 99% leicht klemmend)
- 4 Ohrscheiben lasern
- Spiegelfolie mit dem Skapell zuschneiden indem die Folie mit der Schraubzwinge zwischen der Ohrscheibe und dem Schneidbrett eingeklemmt wird und die Ohrscheibe als Führung dient
- Spiegelfolie gemäß den Herstellerangaben auf die Scheiben anbringen
- mit Arduino IDE den Code auf den ESP32 flashen
- vom LED Streifen zwei 3 Segment und zwei 5 Segment Streifen abschneiden
- zweimal jeweils ein 3 an ein 5 Segment Streifen mit ca 5mm langen Kupferlackdraht Stücken löten (LED Richtung beachten !!!, die Daten gehen erst durch das 5 Segment Stück)
- Adern des Kabels durch den Haarreifkabelkanal durchfädeln und bis ins letzte Ohr fädeln (wenn euere Adern zu dick sind kann auch der Kupferlackdraht verwendet werden)
- Ende der Adern an das 5 Segment Ende eines LED Streifens löten, darauf achten dass der Streifen auf den Adern liegen muss und keine “Verlängerung” ist
- LED Streifen testweise ins Ohr legen und im Anderen Ohr markieren wo der 2. LED Streifen angelötet werden muss
- bisschen mehr Kabel in die Ohren schieben um die markierte Stelle zum Bearbeiten rauszuschieben, die Stelle abisolieren und den Zweiten LED Streifen anlöten
- von 3 Breadboard Kable ein Stecker Abschneiden und die Stecker an das Katzenohrkabel löten, Schrumpfschlauch nicht vergessen
- Kabel auf den ESP32 stecken (+ auf 5v, - auf GND, und Datenleitung auf Pin16)
- 4. Breadboardkabel als Jumper zwischen Pin 5 und GND auf den ESP32 verwenden
- Als Test den ESP32 mit Strom versorgen, die LED Streifen sollten jetzt alle blau leuchten
- Wenn der Test erfolgreich war die LED Streifen in den Rahmen kleben
- Ohrscheiben mit der Spiegelfolie nach innen in den Rahmen einsetzen und bei Bedarf mit Sekundenkleber festkleben
- Mit Heißkleber, Schrumpfschlauch und Isolierband eine Zugentlastung fürs Kabel improvisieren
- ESP32 in das Behältniss eurer Wahl einbauen
- ESP32 mit dem USB Kabel an die Powerbank anstecken
- Katzenohren aufsetzen und cute sein :3
Hinweise
- je nachdem welchen Pin der Jumper mit Gnd verbindet leuchten die Ohren anders. (19= wandernder Regenbogen, 18 = Orange blinkend, 5 = Blau, 17=weiß )
- Die Ohren werden zwar warm haben sich bei mir aber auch nach stundenlangem Tragen nicht zerstört
- Mir wurde das Feedback gegeben dass die Ohren teilweise blenden.
- Zurzeit sind die Ohren Parallel und können nicht unabhängig voneinander angesteuert werden
Download
3d Modelle
Ohrscheibe
Code
Benötigte Bibliotheken:
- https://github.com/adafruit/Adafruit_NeoPixel Ich habe 1.15.1 verwendet.
// CC-BY Wutchilli
//sudo chmod 666 /dev/ttyUSB0 (personal memory of a Linux command)
#include <Adafruit_NeoPixel.h>
#define PIN_WS2812C 16 // The ESP32 pin GPIO16 connected to WS2812C
#define NUM_PIXELS 40 // The number of LEDs (pixels) on C LED ws2812c
Adafruit_NeoPixel ws2812c(NUM_PIXELS, PIN_WS2812C, NEO_GRB + NEO_KHZ800);
const int Jumper19 = 19; // GIOP19 pin connected to Jumper19
const int Jumper18 = 18;
const int Jumper5 = 5;
const int Jumper17 = 17;
int currentState19; // the current reading from the input pin
int currentState18;
int currentState5;
int currentState17;
void setup() {
ws2812c.begin(); // initialize ws2812c object (REQUIRED)
pinMode(Jumper19, INPUT_PULLUP); //Jumper19 as Input defined
pinMode(Jumper18, INPUT_PULLUP);
pinMode(Jumper5, INPUT_PULLUP);
pinMode(Jumper17, INPUT_PULLUP);
}
void loop() {
ws2812c.show();
ws2812c.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called
currentState19 = digitalRead(Jumper19);
currentState18 = digitalRead(Jumper18);
currentState5 = digitalRead(Jumper5);
currentState17 = digitalRead(Jumper17);
if ((currentState19 == LOW) ) {
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) { // rainbow effect
for(int i=0; i<ws2812c.numPixels(); i++) {
int pixelHue = firstPixelHue + (i * 65536L / ws2812c.numPixels());
ws2812c.setPixelColor(i, ws2812c.gamma32(ws2812c.ColorHSV(pixelHue)));
}
ws2812c.show();
delay(5);
}
}
if ((currentState18 == LOW) ) { // flashing orange signal light
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {
ws2812c.setPixelColor(pixel, ws2812c.Color(255, 75, 0));
}
ws2812c.show();
delay(1500);
ws2812c.clear();
ws2812c.show();
delay(1500);
}
if (currentState5 == LOW) { // blue
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {
ws2812c.setPixelColor(pixel, ws2812c.Color(0, 0, 255));
}
}
if (currentState17 == LOW) { // white
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {
ws2812c.setPixelColor(pixel, ws2812c.Color(255, 255, 255));
}
}
}