DIY Persistence-of-Vision (POV) Globe – LED-Kugel mit Arduino Mega
Komponenten
| Bauteil | Menge |
|---|---|
| Arduino Mega 2560 | 1 |
| Adafruit NeoPixel Ring WS2812 5050 RGB LED (58 LEDs pro Halbkugel) | 2 |
| Widerstand 330 Ω | 1 |
| Näherungssensor (z. B. Hall-Sensor) | 1 |
| DC-Motor (für Rotation) | 1 |
| Kugellager 625 2RS (5×16×5 mm) | 1 |
| 3D-gedruckte Teile (Halbkugelschalen, Halterungen) | 1 Satz |
Werkzeuge
- 3D-Drucker
- Lötkolben
Funktionsprinzip (Persistence of Vision)
Eine LED-Reihe rotiert schnell. Durch das Nachleuchten des Auges (≈ 1/25 s) verschmelzen die einzelnen Lichtpunkte zu einem stehenden Bild. Mit 58 LEDs pro Halbkugel (gesamt 116) und ausreichender Drehzahl entsteht eine kugelförmige Grafik.
Aufbau
- Zwei Halbkugelschalen 3D-drucken, je einen NeoPixel-Ring (58 LEDs) einbauen.
- Welle mit Kugellager im Fuß lagernd, DC-Motor treibt an.
- Hall-Sensor (oder Reflexlichtschranke) an fester Position → 1 Impuls pro Umdrehung (Referenz).
- Arduino Mega steuert LEDs per FastLED-Bibliothek, synchronisiert auf Hall-Impuls.
Code (d_nya.ino)
Der Sketch nutzt ein 40×75 Pixel großes Bitmap-Array (kalp) für ein Herz-Muster. Bei jedem Hall-Impuls wird die nächste Spalte ausgegeben. Die LEDs 7–46 zeigen das Muster (Grün = Pixel an, Blau = aus), danach kurzer Weiß/Blau-Flash für Referenz.
#include <FastLED.h>
#define NUM_LEDS 58
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
bool kalp[40][75] = { /* ... großes Bitmap-Array ... */ };
volatile byte hall = 0;
unsigned int wait = 1; // µs pro Spalte
unsigned int wait2 = 10; // µs Pause
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
attachInterrupt(1, LEDiyak, RISING); // Pin 3 auf Mega = INT1
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB::Black;
FastLED.show();
}
void LEDiyak() {
hall++;
if (hall > 2) hall = 0;
}
void loop() {
if (hall > 0) {
for (int m = 0; m < 75; m++) {
for (int i = 0; i < 40; i++) {
leds[i + 7] = kalp[i][m] ? CRGB::Green : CRGB::Blue;
}
FastLED.show();
delayMicroseconds(wait);
}
// Referenz-Farben
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB::Blue;
FastLED.show(); delayMicroseconds(wait2);
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB::White;
FastLED.show(); delayMicroseconds(wait2);
}
}
Schaltplan
Hall-Sensor → Pin 3 (INT1), NeoPixel Data → Pin 6, Motor separat versorgt. Gemeinsames GND.
Herstellungsprozess
- Arduino POV-Uhr: Persistence-of-Vision LED-Display selbst bauen
- Individuelle 4×4 Tic-Tac-Toe Visitenkarten-Platine – Design, Bau und Programmierung
- Multi-Position Temperatursensor-System für Smart-Home-Integration
- DIY Lötkolben-Controller für 862D+ – Präzision & Zuverlässigkeit
- MotionSense: Smarte Einbruchserkennung mit Arduino & ESP8266
- 3D-Drucker Brandschutz: Intelligentes Sensorsicherheitssystem
- Tragbares Persistence-of-Vision-Display mit Arduino UNO und ATtiny85 bauen
- Web-fähigen IoT-Messer mit Arduino, Yaler und IFTTT bauen
- Arduino-basierte abstoßende Magnetschwebung: Einfache Schaltung & DIY-Anleitung
- CoroFence Thermaldetektor: PIR-Sensor & IoT-Integration mit Panasonic GridEye