⭕ حلقهی نئوپیکسل ۱۲ تایی (NeoPixel Ring 12 (WS2812))
| اسم انگلیسی | NeoPixel Ring 12 (WS2812) |
|---|---|
| در ووکوی (Wokwi) | wokwi-led-ring |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود آردوینو · رایگان |
حلقهی نئوپیکسل ۱۲ تایی (NeoPixel Ring 12) دوازده LED رنگی آدرسپذیر WS2812 است که روی یک دایره چیده شدهاند و همه با یک سیم داده کنترل میشوند. هر LED را میتوانی جدا به هر رنگی دربیاوری؛ برای همین برای چراغ گردان، نشانگر بارگذاری، ساعت رنگی، قطبنما و تایمر عالی است.
حلقهی نئوپیکسل در ووکوی (Wokwi)
در ووکوی حلقه با شناسهی wokwi-led-ring و ویژگی "pixels": "12" ساخته میشود. پایههایش GND، VCC، DIN و DOUT هستند:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-led-ring", "id": "ring1", "top": -170, "left": 60, "attrs": { "pixels": "12" } }
],
"connections": [
[ "ring1:GND", "uno:GND.1", "black", [] ],
[ "ring1:VCC", "uno:5V", "red", [] ],
[ "ring1:DIN", "uno:6", "green", [] ]
]
}
| پایهی حلقه | وصل به |
|---|---|
| GND | uno:GND.1 |
| VCC | uno:5V |
| DIN | uno:6 |
| DOUT | آزاد؛ یا DIN حلقه یا نوار بعدی |
اگر بهجای ۱۲ عدد دیگری در pixels بگذاری، ووکوی حلقهی بزرگتر یا کوچکتر میکشد؛ فقط همان عدد را در کد هم عوض کن. حلقهی نئوپیکسل در تینکرکد فارسی جزو اشتراک پلاس است؛ مثالهایش برای خواندن رایگان باز میشوند و برای اجرا پلاس لازم داری.
سیمکشی با آردوینو (مدار واقعی)
| پایهی حلقه | آردوینو Uno | نکته |
|---|---|---|
| DIN (یا IN) | پین 6 | از راه یک مقاومت ۳۳۰ تا ۴۷۰ اهم |
| 5V (یا VCC) | 5V | برای نور کامل، منبع ۵ ولت جدا |
| GND | GND | زمین مشترک با آردوینو |
| DOUT (یا OUT) | — | به DIN حلقهی بعدی، برای زنجیر |
روی بیشتر حلقهها پایهها پد لحیمی پشت برد هستند و باید سیم را لحیم کنی. یک خازن بزرگ (حدود ۱۰۰۰ میکروفاراد) بین 5V و GND نزدیک حلقه، LEDها را از ضربهی لحظهی روشن شدن محافظت میکند. حساب جریان را هم داشته باش: دوازده LED در سفید کامل تا حدود ۷۰۰ میلیآمپر میکشند، ولی با setBrightness(60) و رنگهای تک این عدد کسری از آن میشود و USB آردوینو از پسش برمیآید. اگر حلقه را با منبع جدا تغذیه میکنی، GND منبع را به GND آردوینو وصل کن؛ بدون زمین مشترک داده به LEDها نمیرسد.
کد نمونه: تایمر حلقهای
// NeoPixel ring as a 12-second timer: one green pixel per second,
// then three red flashes.
#include <Adafruit_NeoPixel.h>
#define RING_PIN 6
#define NUM_PIXELS 12
Adafruit_NeoPixel ring(NUM_PIXELS, RING_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
ring.begin();
ring.setBrightness(60); // keep the current low
ring.show(); // all pixels off
}
void loop() {
for (int i = 0; i < NUM_PIXELS; i++) {
ring.setPixelColor(i, ring.Color(0, 150, 40));
ring.show();
delay(1000);
}
for (int k = 0; k < 3; k++) { // time is up
ring.fill(ring.Color(200, 0, 0));
ring.show();
delay(250);
ring.clear();
ring.show();
delay(250);
}
}
LEDها از ۰ تا ۱۱ شماره دارند و اولی همان است که DIN به آن میرسد. اگر نقطهی شروع جای دلخواهت نیست، بهجای چرخاندن حلقه شماره را در کد جابهجا کن، مثلاً (i + 3) % NUM_PIXELS. برای تایمر یکدقیقهای هم کافی است delay(1000) را به ۵۰۰۰ برسانی.
اشتباههای رایج
- DOUT بهجای DIN: داده فقط از DIN وارد میشود؛ اگر سیم آردوینو روی DOUT باشد، حلقه هیچ واکنشی نشان نمیدهد.
- show فراموششده:
setPixelColorفقط رنگ را در حافظه عوض میکند؛ تاshow()صدا نشود چیزی روی LED نمیآید. - عدد اشتباه: اگر در کد ۸ نوشتهای و حلقه ۱۲ تایی است، چهار LED آخر هیچوقت روشن نمیشوند.
- سفید کامل از USB: دوازده LED سفید با نور کامل از توان پورت USB بیشتر میکشد؛ روشنایی را محدود کن.
آموزشهای مرتبط
- رنگینکمان نئوپیکسل با آردوینو
- پروژهی حلقهی نئوپیکسل در تینکرکد فارسی
- نئوپیکسل تکی (WS2812)
- نوار نئوپیکسل ۸ تایی
- نئوپیکسل با میکروپایتون روی پیکو
سؤالهای رایج
حلقهی نئوپیکسل ۱۲ تایی چقدر جریان میکشد؟
هر LED در سفید کامل حدود ۶۰ میلیآمپر میکشد، پس دوازدهتا تا حدود ۷۰۰ میلیآمپر میرسد. با setBrightness نور را پایین نگه دار یا حلقه را از منبع ۵ ولت جدا تغذیه کن و زمینها را مشترک کن.
در ووکوی تعداد LEDهای حلقه را چطور عوض کنم؟
در diagram.json ویژگی pixels را در attrs قطعهی wokwi-led-ring عوض کن، مثلاً 16 یا 24، و همان عدد را در کد بهجای 12 بنویس.