Кодты іздеу

ESP32 Оқулық 12/55 - WS2812 RGB Жолақ 4 Жобасы SunFounder ESP32 IoT оқу жинағымен

ESP32 Оқулық 12/55 - WS2812 RGB Жолақ 4 Жобасы SunFounder ESP32 IoT оқу жинағымен

Бұл оқулықта біз ESP32 микроконтроллерін пайдаланып WS2812 жарықдиодты жолағын қалай басқаруға болатынын қарастырамыз. Бұл жоба әртүрлі түстер жасауға және әр жарықдиодты жеке басқаруға мүмкіндік береді, бұл бағдарламалау мен электрониканы үйренудің қызықты және көрнекі тәсілін ұсынады. Осы оқулықтың соңында сізде түстер мен үлгілерді динамикалық түрде өзгерте алатын толық жұмыс істейтін қондырғы болады.

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

Кірістірілген Wi-Fi және Bluetooth мүмкіндіктері бар SunFounder компаниясының ESP32 микроконтроллерін пайдалана отырып, WS2812 RGB жарықдиодты жолағын оңай қосуға және басқаруға болады. Бұл жарықдиодты жолақтың икемділігі сәндік жарықтандыру немесе білім беру жобалары үшін шығармашылық қолданбаларға мүмкіндік береді. Қадамдарды жақсырақ түсіну үшін бейнені (00:00-дегі бейнеде) қарауға болады.

Аппараттық құралдар түсіндірмесі

Бұл жобаның негізгі компоненттеріне ESP32 микроконтроллері және WS2812 жарықдиодты жолағы кіреді. ESP32 - бұл Arduino сияқты тапсырмаларды орындай алатын, бірақ қосымша қосылу мүмкіндіктері бар қуатты микроконтроллер. Оның бұлтқа қосылуға, қашықтан басқаруға және деректерді журналға тіркеуге мүмкіндік беретін бай мүмкіндіктер жиынтығы бар.

WS2812 жарықдиодты жолағы жеке адрестелетін RGB жарықдиодтарынан тұрады, яғни әр жарықдиодты әртүрлі түстерді көрсету үшін басқаруға болады. Жолақ бір сымды протоколда жұмыс істейді, бұл сигнал сапасын жоғалтпай бірнеше жарықдиодтарды тізбектей қосуға мүмкіндік береді. Әр жарықдиодта кіріс сигналын қабылдап, оны тізбектегі келесі жарықдиод үшін күшейтетін кірістірілген драйвер бар.

Деректер парағының мәліметтері

Өндіруші Worldsemi
Бөлшек нөмірі WS2812
Логика/IO кернеуі 3.5–5.3 В
Қоректендіру кернеуі 5 В
Шығыс тогы (арнаға) 20 мА макс
Ең жоғары ток (арнаға) 60 мА макс
PWM жиілігі бойынша нұсқау 400 Гц
Кіріс логикалық шектері 0.3 x VDD - 0.7 x VDD
Кернеудің төмендеуі / RDS(on) / қанығу 0.5 В макс
Жылулық шектер -25 - 80 °C
Қаптама 5050
Ескертулер / нұсқалар Ұзағырақ жолақтар үшін тізбектей қосуға болады

 

  • Жарықдиодтардың зақымдануын болдырмау үшін дұрыс қоректендіруді (5 В) қамтамасыз етіңіз.
  • Кернеу шыңдарын тегістеу үшін қоректендіру терминалдарына конденсаторды (100 µF) қолданыңыз.
  • Сигналдың нашарлауын азайту үшін деректер сымдарын қысқа ұстаңыз.
  • Жарықдиодтың температурасына мұқият болыңыз; дұрыс жылуды таратуды қамтамасыз етіңіз.
  • Қоректендіру мен жерді қосу кезінде полярлықты дұрыс сақтаңыз.
  • Ұзын жолақтарды пайдаланған кезде деректер желісінде жоғары тарту резисторын қолданыңыз.

Сымды қосу нұсқаулары

ESP32-12-WS2812-wiring

WS2812 жарықдиодты жолағын ESP32-ге қосу үшін алдымен қоректендіруді жалғаңыз. Жарықдиодты жолақтың +5V сымы ESP32-дегі 5V түйреуішіне, ал жер (GND) сымы ESP32-дегі GND түйреуіштерінің біріне қосылуы керек.

Әрі қарай, жарықдиодты жолақтың деректер кіріс сымын ESP32-дегі 14 түйреуішіне қосыңыз. Деректердің дұрыс берілуін қамтамасыз ету үшін қосылымдардың сенімді екеніне көз жеткізіңіз. Егер сіз бірнеше жолақты немесе ұзағырақ қашықтықты пайдалансаңыз, сигнал тұтастығын қамтамасыз ету үшін деңгей ауыстырғышты қолдануды қарастырыңыз. Бұл қондырғы жарықдиодты жолақты тікелей ESP32-ден басқаруға мүмкіндік береді.

Код мысалдары және түсіндірме

Код WS2812 жарықдиодты жолағын басқару үшін Adafruit NeoPixel кітапханасын пайдаланады. Ол жарықдиодты жолақты инициализациялаудан және бастапқы түсті қара түске орнатудан басталады. Кодтағы негізгі идентификаторларға жарықдиодты жолақтың деректер желісіне қосылған түйреуішті анықтайтын LED_PIN және жолақтағы жарықдиодтар санын көрсететін NUM_LEDS кіреді.

#include  // Adafruit NeoPixel кітапханасын қосу

#define LED_PIN 14 // NeoPixel жарықдиодты жолағы
#define NUM_LEDS 8 // Жарықдиодтар саны

Орнату функциясында жолақ strip.begin() көмегімен инициализацияланады және бастапқы түс strip.show() көмегімен қара түске орнатылады. Бұл бағдарлама іске қосылғанда жолақты түс өзгерістеріне дайындайды.

void setup() {
  strip.begin(); // NeoPixel жолағын инициализациялау
  strip.show(); // Бастапқы түсті қара түске орнату
}

Бағдарламаның негізгі циклі екі for циклінен тұрады. Бірінші цикл әр жарықдиодты бір-бірден қосып, оның түсін орнатады және жолақты жаңартады. Екінші цикл әр жарықдиодты сол сияқты өшіреді. Бұл қарапайым, бірақ тиімді жарық анимациясын жасайды.

void loop() {
  // Жарықдиодтарды бір-бірден қосу
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // i-ші жарықдиодтың түсін қызыл түске орнату
    strip.show(); // Жарықдиодты жолақты жаңа түстермен жаңарту
    delay(100); // 100 миллисекунд күту
  }
  
  // Жарықдиодтарды бір-бірден өшіру
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // i-ші жарықдиодтың түсін қара түске орнату (өшіру)
    strip.show(); // Жарықдиодты жолақты жаңа түстермен жаңарту
    delay(100); // 100 миллисекунд күту
  }
}

Әртүрлі түс эффектілері мен анимацияларды қалай енгізуге болатыны туралы қосымша мәліметтер алу үшін мақаланың төменгі жағындағы толық кодты жүктеуді қараңыз.

Демонстрация / Не күтуге болады

Сымдарды жалғап, кодты жүктегеннен кейін, таспадағы жарықдиодтардың бірінен соң бірі көрсетілген түспен жанатынын, содан кейін сол ретпен өшетінін көруіңіз керек. Бұл «жүгіретін жарық» эффектісін жасайды. Егер жарықдиодтар күтілгендей жанбаса, сым қосылымдарын қайта тексеріп, қуат көзінің жеткілікті екеніне көз жеткізіңіз. Сондай-ақ, кодта дұрыс пиннің анықталғанын тексеріңіз (бейнеде 12:30).

Бейне уақыт белгілері

  • 00:00 Басы
  • 1:40 WS2812 жарықдиодына кіріспе
  • 7:25 Жоба құжаттама беті
  • 9:16 RGB түсі түсіндірілді
  • 13:16 Сым жалғау түсіндірілді
  • 13:48 Arduino коды-1 түсіндірілді
  • 19:03 Arduino IDE-де ESP32 платасын және портты таңдау
  • 20:45 Код-1 демонстрациясы
  • 22:00 Жеке жарықдиодты басқару
  • 24:16 Жүгіретін жарықдиодты жарық
  • 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
  }
}

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Әлі ресурстар жоқ.

Файлдар📁

Файлдар жоқ.