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

ระวังโดน Hack facebook โดยไม่รู้ตัว

สวัสดีครับ วันนี้ผมจะนําเสนอเรื่องราวของการ hack facebook รูปแบบหนึ่ง ซึ่งถ้าไม่ทันระวังก็อาจจะตกเป็นเหยื่อได้ รูปแบบการ hack แบบนี้เค้าเรียกกันว่า Phishing โดย hacker จะทําการปลอมหน้าเพจขึ้นมา ส่วนใหญ่จะปลอมเป็นหน้าเพจ login ของเว็บที่ hacker ต้องการ user password เช่น ถ้า hacker ต้องการ user และ password ของ facebook hacker ก็จะทําหน้า login ของ facebook ปลอมขึ้นมา เพื่อหลอกให้เหยื่อ login จากหน้าปลอมนั้น แล้วส่งข้อมูล user password ของ เหยื่อมายัง hacker

Vue.js เริ่มต้น ตอน1 (สร้าง Project)

ในยุคนี้การทําเว็บส่วนใหญ่จะเน้นไปทางการทำ Web ที่เป็น Single Page Application จึงมี Framework ที่มาช่วยในการทําเว็บแบบ Single Page Application ที่จะช่วยให้เราสร้างเว็บได้ง่ายขึ้น Vue.js ก็เป็น Framework ตัวนึงที่นิยมใช้กัน ซึ่งในบทความนี้เราจะมาเรียนรู้วิธีการใช้งาน Vue.js เบื้องต้น

สร้าง Chrome Extension ด้วย Vuejs

ในการสร้าง Chrome Extension หรือเรียกเป็นภาษาไทย "ส่วนขยาย" จะใช้ HTML/CSS/JavaScript ในการเขียน ซึ่งจะคล้ายกับการเขียนเว็บทั่วๆไป ในเมื่อมันเป็น HTML/CSS/JavaScript ก็จับมาเขียนด้วย Vuejs ซะเลย เพื่อให้ง่ายต่อการพัฒนา


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

Build with ❤️ and Astro.

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