کوډ ولټوئ

د ESP32 ټیوټوریل 31/55 - د خنډ څخه د مخنیوي سره د LED پټې پروژه | د SunFounder د ESP32 IoT زده کړې کټ

د ESP32 ټیوټوریل 31/55 - د خنډ څخه د مخنیوي سره د LED پټې پروژه | د SunFounder د ESP32 IoT زده کړې کټ

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

ESP32-31-flowing-light-main2

د دې ټیوټوریل په اوږدو کې، موږ به اړین هارډویر اجزا، د تارونو نښلولو لارښوونې، او هغه کوډ پوښو چې د دې پروژې د ژوندي کولو لپاره اړین دی. د لا زیات بصري توضیح لپاره، ډاډ ترلاسه کړئ چې لاندې تړل شوی ویډیو وګورئ (په ویډیو کې په 00:00 کې).

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

دا پروژه څو اجزاو ته اړتیا لري، پشمول د ESP32 مایکروکنټرولر، د WS2812 LED پټه، او د انفراریډ خنډ مخنیوي سینسر. ESP32 یو پیاوړی مایکروکنټرولر دی چې په جوړ شوي Wi-Fi او بلوتوت باندې برخمن دی، چې دا د IoT غوښتنلیکونو لپاره مناسب کوي. د WS2812 LED پټه یو برنامه کیدونکی RGB LED پټه ده چې د هر LED انفرادي کنټرول ته اجازه ورکوي، موږ ته دا وړتیا راکوي چې متحرک رڼا اغیزې رامینځته کړو.

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

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

جوړونکی WS2812B
د پرزې شمېره WS2812B
منطق/IO ولټاژ 3.3 V (عادي)
د برېښنا رسولو ولټاژ 5 V (عادي)
د محصول جریان (په هر چینل) 20 mA (اعظمي)
د لوړ جریان (په هر چینل) 60 mA (اعظمي)
د PWM فریکونسي لارښود 400 Hz (عادي)
د منطق داخلیدو حدونه 0.3 Vcc (لوړ)، 0.1 Vcc (ټیټ)
د ولټاژ کمښت / RDS(on) / سنتریشن 1.2 V (اعظمي)
حرارتي حدونه 85 °C (اعظمي)
بسته بندي سطحې نصب
یادښتونه / ډولونه په مختلفو اوږدوالیو او کثافتونو کې شتون لري

 

  • ډاډ ترلاسه کړئ چې د LED پټه د غوره فعالیت لپاره د 5 V سره بریښنا کیږي.
  • د ډیټا پن لپاره یو مناسب ریزسټر وکاروئ ترڅو د سیګنال بشپړتیا ستونزو مخه ونیسئ.
  • د ډیر تودوخې مخنیوي لپاره د محصول جریان محدودیتونو څخه محتاط اوسئ.
  • د ولټاژ سپیکونو مخنیوي لپاره د برېښنا رسولو په سمه توګه جلا کړئ.
  • د مطلوب کشف حد ترلاسه کولو لپاره د انفراریډ سینسر په احتیاط سره تنظیم کړئ.

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

ESP32-31-flowing-light-wiring

د اجزاو د تارونو نښلولو لپاره، د انفراریډ خنډ مخنیوي سینسر سره پیل وکړئ. د سینسر د محصول پن په ESP32 کې پن 25 سره وصل کړئ. منځنی پن باید ځمکې سره وصل شي، او وروستی پن (VCC) باید د 3.3 V برېښنا سرچینې سره وصل شي.

ESP32-31-flowing-light-schematic

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

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

دلته د هغه کوډ لنډه کتنه ده چې دا پروژه پرمخ وړي. لومړی، موږ د LED پټي کې د پکسلونو شمېر او د اړیکو لپاره کارول شوی ډیټا پن تعریف کوو:

#define NUM_PIXELS 8
#define DATA_PIN 14

په setup() فنکشن کې، موږ د LED پټه او انفراریډ سینسر پیل کوو:

void setup() {
  pixels.begin();
  pinMode(AVOID_PIN, INPUT_PULLUP);
  uint32_t color = pixels.Color(random(256), random(256), random(256));
  pixels.fill(color);
  pixels.show();
}

په loop() فنکشن کې، موږ ګورو چې ایا یو خنډ کشف شوی او د LED پټه په مطابق کنټرول کوو:

if (avoid_value) {
    for (int i = 0; i < NUM_PIXELS; i++) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  } else {
    for (int i = NUM_PIXELS - 1; i >= 0; i--) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }

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

ښودنه / څه تمه وکړو

کله چې تنظیم بشپړ شي او کوډ پورته شي، د LED پټه باید مخ په وړاندې حرکت کولو په وخت کې تصادفي رنګونه ښکاره کړي. کله چې یو خنډ کشف شي، پټه به یو ټاکلی رنګ (لکه شین) ته واړوي او لوري به بیرته راولي. که خنډ لرې شي، پټه به د تصادفي رنګونو سره مخ په وړاندې حرکت بیا پیل کړي. په یاد ولرئ چې د انفراریډ سینسر کشف حد ممکن د کارول شوي برېښنا رسولو پر بنسټ توپیر ولري (په ویډیو کې په 10:30 کې).

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

  • 00:00 پیل
  • 2:14 د پروژې پېژندنه
  • 4:58 د تارونو اړیکه تشریح شوې
  • 7:41 د خنډ مخنیوي سینسر تنظیمول
  • 10:03 د آردوینو کوډ تشریح شوی
  • 15:40 د ESP32 بورډ او COM پورټ په آردوینو IDE کې غوره کول
  • 17:22 پروژه 1: ننداره
  • 18:18 د بیرته راستنیدونکي رنګ بدلول

انځورونه

ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main
ESP32-31-flowing-light-main
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-wiring
ESP32-31-flowing-light-wiring
832-ESP32 Tutorial 31/55- Arduino code flowing light
ژبه: C++
#include <Adafruit_NeoPixel.h>

// Set the number of pixels for the running light
#define NUM_PIXELS 8

// Set the data pin for the RGB LED strip
#define DATA_PIN 14

// Initialize the RGB LED strip object
Adafruit_NeoPixel pixels(NUM_PIXELS, DATA_PIN, NEO_GRB + NEO_KHZ800);

// Initialize the avoid sensor
#define AVOID_PIN 25

void setup() {
  // Initialize the RGB LED strip
  pixels.begin();

  // Initialize the avoid sensor
  pinMode(AVOID_PIN, INPUT_PULLUP);

  // Set the initial LED color
  uint32_t color = pixels.Color(random(256), random(256), random(256));
  pixels.fill(color);
  pixels.show();
}

void loop() {
  // Read the input from the infrared sensor
  bool avoid_value = digitalRead(AVOID_PIN);

  // Generate a random color for the current pixel
  uint32_t color = pixels.Color(random(256), random(256), random(256));

  // If no obstacle is detected
  if (avoid_value) {
    for (int i = 0; i < NUM_PIXELS; i++) {
      // Turn on the current pixel with the random color
      pixels.setPixelColor(i, color);

      // Update the RGB LED strip display
      pixels.show();

      // Turn off the current pixel
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }
  // If detects an obstacle, change the direction of the LED strip
  else {
    for (int i = NUM_PIXELS - 1; i >= 0; i--) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }
}

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

فایلونه📁

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