کوډ ولټوئ

د ESP32 ټیوټوریل 12/55 - WS2812 RGB سټریپ ۴ پروژه د SunFounder د ESP32 IoT زده کړې کټ سره

د ESP32 ټیوټوریل 12/55 - WS2812 RGB سټریپ ۴ پروژه د SunFounder د ESP32 IoT زده کړې کټ سره

په دې ټیوټوریل کې به موږ وپلټو چې څنګه د ESP32 مایکروکنټرولر په کارولو سره د WS2812 LED پټه کنټرول کړو. دا پروژه تاسو ته اجازه درکوي چې مختلف رنګونه جوړ کړئ او هر LED په انفرادي ډول کنټرول کړئ، چې د پروګرام کولو او الکترونیکي زده کړې لپاره یوه ساتیرۍ او بصري زړه راښکونکې لاره برابروي. د دې ټیوټوریل په پای کې به تاسو یو بشپړ فعال ترتیب ولرئ چې کولی شي رنګونه او نمونې په متحرک ډول بدل کړي.

SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422

د SunFounder څخه د ESP32 مایکروکنټرولر په کارولو سره، کوم چې جوړ شوي Wi-Fi او بلوتوث وړتیاوې لري، موږ کولی شو په اسانۍ سره د WS2812 RGB LED پټه وصل او کنټرول کړو. د دې LED پټې انعطاف د تخلیقي غوښتنلیکونو لپاره اجازه ورکوي، که د سینګار رڼا لپاره وي یا د تعلیمي پروژو لپاره. د ښه پوهیدو لپاره، تاسو کولی شئ په ویډیو کې (په ویډیو کې په 00:00) رجوع وکړئ.

هارډویر تشریح شوی

د دې پروژې اصلي برخې د ESP32 مایکروکنټرولر او د WS2812 LED پټه شامل دي. ESP32 یو پیاوړی مایکروکنټرولر دی چې کولی شي د Arduino په څیر دندې ترسره کړي، مګر د اضافي ارتباطي اختیارونو سره. دا د بډایه ځانګړتیاوو مجموعه لري چې دا وړتیا ورکوي چې کلاوډ سره وصل شي، چې د لیرې کنټرول او معلوماتو ثبتولو اجازه ورکوي.

د WS2812 LED پټه د انفرادي پته وړ RGB LEDs څخه جوړه ده، چې معنی یې دا ده چې هر LED کنټرول کیدی شي ترڅو مختلف رنګونه وښیې. پټه په یو واحد تار پروتوکول کار کوي، چې ډیری LEDs ته اجازه ورکوي چې پرته له سیګنال کیفیت له لاسه ورکولو سره یوځای شي. هر LED یو جوړ شوی ډرایور لري چې د ننوت سیګنال اخلي او د زنځیر په راتلونکي LED لپاره یې پیاوړی کوي.

ډیټاشیټ تفصیلات

جوړونکی Worldsemi
د برخې شمېره WS2812
منطق/IO ولتاژ 3.5–5.3 V
د بریښنا ولتاژ 5 V
د تولید جریان (په هر چینل) 20 mA اعظمي
د لوړ جریان (په هر چینل) 60 mA اعظمي
د PWM فریکونسي لارښود 400 Hz
د ننوت منطق حدونه 0.3 x VDD to 0.7 x VDD
د ولتاژ کمښت / RDS(on) / سنتریشن 0.5 V اعظمي
حرارتي حدونه -25 to 80 °C
بسته 5050
یادښتونه / ډولونه د اوږدو پټو لپاره زنځیر کیدی شي

 

  • د LED زیان مخنیوي لپاره مناسب بریښنا رسول (5 V) ډاډمن کړئ.
  • د ولتاژ سپیکونو نرمولو لپاره د بریښنا رسولو ترمینلونو په اوږدو کې یو کاپاسیټر (100 µF) وکاروئ.
  • د سیګنال تخریب کمولو لپاره د معلوماتو تارونه لنډ وساتئ.
  • د LED تودوخې په اړه محتاط اوسئ؛ د تودوخې مناسب تحلیل ډاډمن کړئ.
  • د بریښنا او ځمکې د نښلولو پر مهال سم قطبيت وګورئ.
  • که اوږدې پټې کاروئ نو د معلوماتو په کرښه کې د پل-اپ ریزسټر وکاروئ.

د تارونو لارښوونې

ESP32-12-WS2812-wiring

د WS2812 LED پټې د ESP32 سره د تار کولو لپاره، د بریښنا رسولو په نښلولو سره پیل وکړئ. د LED پټې څخه د +5V تار باید د ESP32 په 5V پن سره وصل شي، او د ځمکې (GND) تار باید د ESP32 په یو GND پن سره وصل شي.

بیا، د LED پټې څخه د معلوماتو ننوت تار د ESP32 په پن 14 سره وصل کړئ. ډاډ ترلاسه کړئ چې اړیکې خوندي دي ترڅو د معلوماتو سم لیږد ډاډمن شي. که تاسو ډیری پټې یا اوږد واټن کاروئ، د سیګنال بشپړتیا ډاډمن کولو لپاره د لیول شیفټر کارولو په اړه فکر وکړئ. دا ترتیب به تاسو ته اجازه درکړي چې د LED پټه مستقیم د ESP32 څخه کنټرول کړئ.

د کوډ مثالونه او واک ترو

کوډ د WS2812 LED پټې کنټرول لپاره د Adafruit NeoPixel کتابتون کاروي. دا د LED پټې په پیل کولو او د لومړني رنګ په تور ټاکلو سره پیل کیږي. په کوډ کې کلیدي پیژندونکي LED_PIN شامل دي، کوم چې د LED پټې د معلوماتو کرښې سره وصل شوی پن تعریفوي، او NUM_LEDS، کوم چې په پټه کې د LEDs شمېر مشخص کوي.

#include  // د Adafruit NeoPixel کتابتون شامل کړئ

#define LED_PIN 14 // NeoPixel LED پټه
#define NUM_LEDS 8 // د LEDs شمېر

د سیٹ اپ فنکشن کې، پټه د strip.begin() په کارولو سره پیل کیږي، او لومړنی رنګ د strip.show() سره تور ټاکل کیږي. دا پټه د رنګ بدلونونو لپاره چمتو کوي کله چې پروګرام روان وي.

void setup() {
  strip.begin(); // د NeoPixel پټه پیل کړئ
  strip.show(); // لومړنی رنګ تور وټاکئ
}

د پروګرام اصلي لوپ د دوو for لوپونو څخه جوړ دی. لومړی لوپ هر LED یو په یو د رنګ په ټاکلو او د پټې په تازه کولو سره چالانوي. دوهم لوپ هر LED په ورته ډول بندوي. دا یو ساده مګر مؤثر رڼا انیمیشن جوړوي.

void loop() {
  // LEDs یو په یو چالان کړئ
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // د i-th LED رنګ سور وټاکئ
    strip.show(); // د LED پټه د نویو رنګونو سره تازه کړئ
    delay(100); // د 100 ملی ثانیو لپاره انتظار وکړئ
  }
  
  // LEDs یو په یو بند کړئ
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // د i-th LED رنګ تور وټاکئ (بند یې کړئ)
    strip.show(); // د LED پټه د نویو رنګونو سره تازه کړئ
    delay(100); // د 100 ملی ثانیو لپاره انتظار وکړئ
  }
}

د مختلف رنګ اغیزو او انیمیشنونو د پلي کولو څرنګوالي په اړه د نورو تفصیلاتو لپاره د مقالې لاندې بشپړ کوډ بارولو وګورئ.

ډیمونسټریشن / څه تمه وکړئ

یوځل چې تاسو تارونه بشپړ کړل او کوډ یې پورته کړ، تاسو باید وګورئ چې په پټۍ باندې LEDs یو په یو په ټاکل شوي رنګ کې روښانه کیږي، او ورپسې په هماغه ترتیب سره بندیږي. دا د "ځغاستې څراغ" اغېز رامینځته کوي. که LEDs تمه شوي ډول روښانه نه شي، خپل تارونه اړیکې دوه ځله وګورئ او ډاډ ترلاسه کړئ چې د برېښنا رسول کافي دی. همدارنګه، تایید کړئ چې سم پن په کوډ کې تعریف شوی دی (په ویډیو کې په 12:30).

د ویډیو وخت نښې

  • 00:00 پیل
  • 1:40 د WS2812 LED پیژندنه
  • 7:25 د پروژې اسنادو پاڼه
  • 9:16 د RGB رنګ تشریح شوی
  • 13:16 د تارونو اړیکې تشریح شوې
  • 13:48 د Arduino کوډ-1 تشریح شوی
  • 19:03 د ESP32 بورډ او پورټ غوره کول په Arduino IDE کې
  • 20:45 د کوډ-1 ډیمو
  • 22:00 د انفرادي LED کنټرول
  • 24:16 ځغاستې څراغ LED
  • 25:41 شا او خوا څراغ

انځورونه

ESP32-12-WS2812-wiring
ESP32-12-WS2812-wiring
ESP32-12-WS2812-schematic
ESP32-12-WS2812-schematic
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
811-ESP32 Tutorial 12/55- Arduino code for WS2812 RGB LED stripe using ESP32
ژبه: C++
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library

#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs

// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); 

void setup() {
  strip.begin(); // Initialize the NeoPixel strip
  strip.show(); // Set initial color to black
}

void loop() {
  // Turn on LEDs one by one
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
    strip.show(); // Update the LED strip with the new colors
    delay(100); // Wait for 100 milliseconds
  }
  
  // Turn off LEDs one by one
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
    strip.show(); // Update the LED strip with the new colors
    delay(100); // Wait for 100 milliseconds
  }
}

هغه شیان چې تاسو ورته اړتیا لرئ

سرچینې او حوالې

تر اوسه هیڅ سرچینې نشته.

فایلونه📁

هیڅ فایل شتون نلري.