Cover image

การใช้งาน Neo Pixel WS2812B กับ Raspberry pi2

23 May 2019

Share to:

ในบทความที่แล้ว เราทำความรู้จักกับ Neo Pixel WS2813 กันไปแล้ว วันนี้ผมจะมาแนะนำเรื่อง การนำ Raspberry Pi2 มาควบคุม Neo Pixel WS2812B

อุปกรณ์ที่ต้องใช้

  • Raspberry Pi2 ติดตั้ง OS เรียบร้อย
  • Neo Pixel WS2812B
  • สายไฟสําหรับจัมพ์ระหว่าง Neo Pixel WS2812B กับ Raspberry Pi2

เมื่อเตรียมอุปกรณ์เสร็จแล้วให้คุณต่อสายตามนี้ครับ

  • Raspberry pi2 ขา 2 <-----> NeoPixel ขา 1(VDD 5V)
  • Raspberry pi2 ขา 6 <-----> NeoPixel ขา 3(GND)
  • Raspberry pi2 ขา 12 <-----> NeoPixel ขา 4(DIN)

ตําแหน่ง ขา ของ Raspberry Pi2

Image

รูปการต่ออุปกรณ์

Image

เมื่อต่อสายเสร็จเรียบร้อย ให้ Download Source code ที่

github.com/thitiblog/ws2812b-raspberry-pi2.git

และไฟล์ต่วอย่างการใช้งาน ดังนี้

  • neo-test.cpp <--- ไฟล์ตัวอย่างการใช้งาน library
  • neopixel <--- ไฟล์ตัวอย่างที่ถูก compile แล้ว
  • ws2812b.cpp <--- ไฟล์ library .cpp
  • ws2812b.h <--- ไฟล์ library .h

หลังจากนั้นให้เปิดไฟล์ neo-test.cpp ขึ้นมาจะมีเนื้อหาตามนี้

#include "ws2812b.h"

int main(int argc, char **argv){

   ws2812b *_ws2812b = new ws2812b(1); //1 pixel LED
   _ws2812b->initHardware();
   _ws2812b->clearLEDBuffer();

   int tmp;

   for(;;){
      //RGB Blink.
      _ws2812b->setPixelColor(0, 255, 0, 0);
      _ws2812b->show();
      usleep(1000*1000);

      _ws2812b->setPixelColor(0, 0, 255, 0);
      _ws2812b->show();
      usleep(1000*1000);

      _ws2812b->setPixelColor(0, 0, 0, 255);
      _ws2812b->show();
      usleep(1000*1000);

      //Rainbow
       for( int i=0 ; i<=255 ; i++){
           if( i < 85 ){
               _ws2812b->setPixelColor(0, i*3, 255-i*3, 0);
               _ws2812b->show();
           }else if( i < 170 ){
               tmp = i-85;
               _ws2812b->setPixelColor(0, 255-tmp*3, 0, tmp*3);
               _ws2812b->show();
           }else{
               tmp = i-170;
               _ws2812b->setPixelColor(0, 0, tmp*3, 255-tmp*3);
               _ws2812b->show();
           }
           usleep(1000);
       }

		usleep(1000*1000);
   }

   delete _ws2812b;

   return 0;
}

ผมจะอธิบายการใช้งาน library จากตัวอย่าง Code ด้านบนเลยนะครับ

  • บรรทัดที่ 1: include library เข้ามาก่อนครับ(parameter ที่ส่งไปเป็นเลข 1 คือ จํานวนของ NeoPicel ที่เราต่อครับ)
  • บรรทัดที่ 5: คือ ให้เราสร้าง object ของ class ws2812b ขึ้นมาก่อน
  • บรรทัดที่ 6: ให้เรา Init hardware ก่อน คือ library จะไป config ค่า hardware ต่างๆให้เรา
  • บรรทัดที่ 7: คือ clear ค่า buffer

ขั้นตอนเมื้อกี้คือขั้นตอนแรกก่อนจะเริ่มสั่งให้ NeoPixel ทํางาน ขั้นตอนต่อไปให้เราดูที่ 2 method นี้

  • _ws2812b->setPixelColor(pixel, r, g, b); <--- เป็นคําสั่ง Set ค่าสีว่าจะให้แสดงสีอะไร
  • _ws2812b->show(); <--- เป็นคําสั่ง ที่สั่งให้ Neo Pixel ติดขึ้นมาเป็นสีตามที่เรา Set ไว้

รายละเอียดของ parameter

  • pixel: ตําแหน่งของ Neo Pixel ที่เราต้องการ Set ค่าสี(ในกรณีที่ต่อ Neo Pixel หลายๆตัว)
  • r: ค่าของสี แดง (0-255) 0คือ ปิดสีนี้ไปเลย 255 คือสว่างสุด
  • g: ค่าของสี เขียว (0-255) 0คือ ปิดสีนี้ไปเลย 255 คือสว่างสุด
  • b: ค่าของสี นํ้าเงิน (0-255) 0คือ ปิดสีนี้ไปเลย 255 คือสว่างสุด

เสร็จแล้ว Compile ให้เรียบร้อยครับ

จบเพียงเท่านี้ครับ ผิดพลาดตรงไหนขออภัยด้วยนะครับ :)

ข้อมูลจาก element14

Suggestion blogs

เหรียญ 1 บาท เนื่องในวันอาหารโลก

เหรียญ 1 บาท เนื่องในวันอาหารโลก พ.ศ.2525 องค์การอาหารและเกษตรแห่งสหประชาชาติขอความร่วมมือให้กรมธนารักษ์จัดทำเหรียญกษาปณ์ที่ระลึกเนื่องในวันอาหารโลก องค์การอาหารและเกษตรแห่งสหประชาชาติเป็นองค์การระหว่างประเทศที่ดำเนินการเกี่ยวกับการเพิ่มผลผลิตในการเกษตรให้มากยิ่งขึ้น เพื่อมิให้ประชากรของโลกขาดแคลนอาหาร และเนื่องด้วยวันที่ 16 ตุลาคม พ.ศ. 2524 เป็นวันฉลองการก่อตั้งองค์การอาหารและการเกษตรแห่งสหประชาชาติ ครบปีที่ 36 องค์การ ฯ จึงถือเอาวันที่

Unbox ไฟฉาย Nitecore TIP 2017

ไฟฉาย Nitecore รุ่น TIP Version 2017 เป็นไฟฉายรุ่นที่ที่มีความสว่างสูงสุด 360 Lumens แสงพุ่งไกลถึง 74 เมตร จุดเด่นของรุ่นนี้คือ เป็นไฟฉายที่มีขนาดเล็กแต่ให้ความสว่างสูง มีแบตเตอรี่ภายใน คุณสมบัติโดยทั่วไปดังนี้

20 JavaScript Array Methods ที่ควรรู้

สวัสดีครับ ในบทความนี้จะมีเนื้อหาการใช้งาน Function ในภาษา JavaScript และ TypeScript ที่จะช่วยให้เราสามารถจัดการข้อมูลใน Array ได้ง่ายขึ้นมากๆ ตัวอย่างเช่น Filter ข้อมูล, รวมข้อมูล, Loop ข้อมูล, เพิ่มข้อมูล, ลบข้อมูล ฯลฯ


Copyright © 2019 - 2024 thiti.dev |  v1.41.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Youtube channel   Telegram   Email contact   วงแหวนเว็บ