/*
24 LED NeoPixel Ring Demo
Arduino Nano + WS2812B 24 LED Ring
Library Required:
Adafruit NeoPixel
*/
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6
#define LED_COUNT 24
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
uint8_t mode = 0;
unsigned long lastChange = 0;
const unsigned long demoTime = 5000; // 5 seconds per effect
// =======================================================
void setup() {
strip.begin();
strip.setBrightness(180);
strip.show();
}
// =======================================================
void loop() {
switch (mode) {
case 0: rainbowCycle(); break;
case 1: colorChase(); break;
case 2: breatheEffect(); break;
case 3: meteorRain(); break;
case 4: theaterChaseRainbow(); break;
case 5: sparkleEffect(); break;
}
if (millis() - lastChange > demoTime) {
lastChange = millis();
mode++;
if (mode > 5) mode = 0;
strip.clear();
strip.show();
}
}
// =======================================================
// Rainbow Cycle
// =======================================================
void rainbowCycle() {
static uint16_t j = 0;
for (int i = 0; i < LED_COUNT; i++) {
strip.setPixelColor(
i,
Wheel(((i * 256 / LED_COUNT) + j) & 255)
);
}
strip.show();
j++;
delay(20);
}
// =======================================================
// Color Chase
// =======================================================
void colorChase() {
static int pos = 0;
strip.clear();
for (int t = 0; t < 5; t++) {
int idx = (pos - t + LED_COUNT) % LED_COUNT;
uint8_t b = 255 - t * 50;
strip.setPixelColor(idx, strip.Color(0, b, 255));
}
strip.show();
pos++;
if (pos >= LED_COUNT) pos = 0;
delay(60);
}
// =======================================================
// Breathing Effect
// =======================================================
void breatheEffect() {
for (int b = 10; b < 255; b += 5) {
strip.fill(strip.Color(b, 0, b));
strip.show();
delay(15);
}
for (int b = 255; b > 10; b -= 5) {
strip.fill(strip.Color(b, 0, b));
strip.show();
delay(15);
}
}
// =======================================================
// Meteor Rain
// =======================================================
void meteorRain() {
static int pos = 0;
for (int i = 0; i < LED_COUNT; i++) {
uint32_t c = strip.getPixelColor(i);
uint8_t r = (c >> 16) & 0xFF;
uint8_t g = (c >> 8) & 0xFF;
uint8_t b = c & 0xFF;
r = r > 20 ? r - 20 : 0;
g = g > 20 ? g - 20 : 0;
b = b > 20 ? b - 20 : 0;
strip.setPixelColor(i, r, g, b);
}
strip.setPixelColor(pos, 255, 180, 80);
strip.show();
pos++;
if (pos >= LED_COUNT) pos = 0;
delay(40);
}
// =======================================================
// Theater Chase Rainbow
// =======================================================
void theaterChaseRainbow() {
static int step = 0;
strip.clear();
for (int i = 0; i < LED_COUNT; i++) {
if ((i + step) % 3 == 0) {
strip.setPixelColor(
i,
Wheel((i * 10 + step * 10) & 255)
);
}
}
strip.show();
step++;
delay(80);
}
// =======================================================
// Sparkle
// =======================================================
void sparkleEffect() {
for (int i = 0; i < LED_COUNT; i++) {
uint32_t c = strip.getPixelColor(i);
uint8_t r = (c >> 16) & 0xFF;
uint8_t g = (c >> 8) & 0xFF;
uint8_t b = c & 0xFF;
r = r > 30 ? r - 30 : 0;
g = g > 30 ? g - 30 : 0;
b = b > 30 ? b - 30 : 0;
strip.setPixelColor(i, r, g, b);
}
int pixel = random(LED_COUNT);
strip.setPixelColor(
pixel,
random(256),
random(256),
random(256)
);
strip.show();
delay(50);
}
// =======================================================
// Color Wheel
// =======================================================
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos < 85) {
return strip.Color(
255 - WheelPos * 3,
0,
WheelPos * 3
);
}
if (WheelPos < 170) {
WheelPos -= 85;
return strip.Color(
0,
WheelPos * 3,
255 - WheelPos * 3
);
}
WheelPos -= 170;
return strip.Color(
WheelPos * 3,
255 - WheelPos * 3,
0
);
}
/************
हा प्रोग्राम **Arduino Nano + 24 LED WS2812B NeoPixel Ring** साठी आहे. यात २४ RGB LEDs वर विविध प्रकाश परिणाम (Effects) दाखवले जातात.
## हार्डवेअर जोडणी
| NeoPixel Ring | Arduino Nano |
| ------------- | ------------ |
| DIN | D6 |
| 5V | 5V |
| GND | GND |
### अतिरिक्त संरक्षण
* D6 आणि DIN मध्ये **330Ω रेझिस्टर**
* 5V आणि GND मध्ये **1000µF Capacitor**
* जास्त ब्राइटनेससाठी स्वतंत्र 5V सप्लाय
---
## प्रोग्राम कसा काम करतो?
### 1. लायब्ररी समाविष्ट करणे
```cpp
#include <Adafruit_NeoPixel.h>
```
ही लायब्ररी NeoPixel LEDs नियंत्रित करण्यासाठी वापरली जाते.
---
### 2. LED सेटिंग
```cpp
#define LED_PIN 6
#define LED_COUNT 24
```
* LED_PIN = D6
* LED_COUNT = 24 LEDs
---
### 3. NeoPixel ऑब्जेक्ट तयार करणे
```cpp
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
```
याद्वारे LED Ring नियंत्रित केली जाते.
---
### 4. Setup()
```cpp
void setup() {
strip.begin();
strip.setBrightness(100);
strip.show();
}
```
* LEDs सुरू होतात.
* Brightness 100 सेट होते.
* सर्व LEDs बंद होतात.
---
## Effects चे स्पष्टीकरण
### 🌈 1. Rainbow Cycle
```cpp
rainbowCycle();
```
* संपूर्ण Ring वर इंद्रधनुष्याचे रंग फिरतात.
* प्रत्येक LED वेगळ्या रंगात दिसते.
उदाहरण:
🔴🟠🟡🟢🔵🟣
---
### 🏃 2. Color Chase
```cpp
colorChase();
```
* एक प्रकाशाचा ठिपका Ring भोवती फिरतो.
* मागे fading tail दिसते.
उदाहरण:
⚪⚪🔵🔷🔹⚫⚫⚫
---
### 💜 3. Breathing Effect
```cpp
breatheEffect();
```
* LEDs हळूहळू उजळतात.
* नंतर हळूहळू मंद होतात.
मोबाइलच्या notification light सारखा प्रभाव.
---
### ☄️ 4. Meteor Rain
```cpp
meteorRain();
```
* उल्केसारखा प्रकाश फिरतो.
* मागे प्रकाशाचा trail दिसतो.
उदाहरण:
☄️────────
---
### 🎭 5. Theater Chase Rainbow
```cpp
theaterChaseRainbow();
```
* प्रत्येक तिसरी LED पेटते.
* रंग सतत बदलतात.
उदाहरण:
🔴⚫⚫🟢⚫⚫🔵⚫⚫
---
### ✨ 6. Sparkle Effect
```cpp
sparkleEffect();
```
* यादृच्छिक LEDs चमकतात.
* ताऱ्यांसारखा प्रभाव.
उदाहरण:
✨ ⭐ ✨ ⭐ ✨
---
## Main Loop
```cpp
void loop()
```
हा भाग सतत चालतो.
क्रम:
1. Rainbow
2. Chase
3. Breathe
4. Meteor
5. Theater Chase
6. Sparkle
प्रत्येक Effect:
```cpp
5000 ms
```
म्हणजे **5 सेकंद** चालतो.
---
## Brightness बदलणे
```cpp
strip.setBrightness(100);
```
* 0 = बंद
* 255 = पूर्ण ब्राइटनेस
उदाहरण:
```cpp
strip.setBrightness(50);
```
वीज कमी वापरेल.
---
## स्वतःचा रंग लावणे
```cpp
strip.setPixelColor(0,255,0,0);
```
याचा अर्थ:
* LED क्रमांक 0
* Red = 255
* Green = 0
* Blue = 0
म्हणजे LED लाल रंगात पेटेल.
---
## उपयोग
* सजावटीची लाईट
* घड्याळ प्रोजेक्ट
* संगीत Visualizer
* IoT Status Indicator
* Robot Eyes
* Gaming Decoration
* Smart Home Effects
हा कोड अपलोड केल्यावर 24-LED Ring वर 6 वेगवेगळे अॅनिमेशन सतत चालू राहतील आणि प्रत्येक 5 सेकंदांनी आपोआप पुढील Effect सुरू होईल.
**************************/https://wokwi.com/projects/new/arduino-nano