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

สร้าง Line bot ง่ายๆ ด้วย Dialogflow

Dialogflow จากเดิมใช้ชื่อว่า Api.ai ถูกพัฒนาขึ้นโดย Speaktoit และต่อมาภายหลังถูก Google ซื้อ และนำไปพัฒนาต่อยอดในปี 2016 และพึ่งเปลี่ยนชื่อมาเป็น Dialogflow เมื่อไม่นานมานี้

Access raspberry pi ผ่าน internet โดยไม่ต้อง forward port

สวัสดีครับ หลายๆคนอาจเจอปัญหานี้ อยากจะ ssh ไปยัง raspberry pi ผ่าน internet จากที่ใดๆก็ได้บนโลก แต่ติดปัญหาคือ คุณอาจจะอยู่ หอพัก อพาร์ทเม้นท์ ฯลฯ ที่คุณไม่สามารถเข้าไปยุ่งกับ rounter ได้ ไม่สามารถ forward port ได้ ทําให้ไม่สามารถ Access raspberry pi ได้ ในบทความนี้มีคําตอบครับ พระเอกของงานนี้คือ weaved ซึ่งจะช่วยจักการการเชื่อมต่อให้เราเองเพียงแค่ติดตั้ง service บน raspberry pi ของเราเท่านั้น

เริ่มต้น React ด้วย Create React App

React คืออะไรReact เป็น JavaScript Library ที่ถูกพัฒนาโดย Facebook ซึ่ง React สร้างมาจากแนวคิดพื้นฐานจาก MVC (Model View Controller) โดยจะทําหน้าที่จัดการกับ Model หรือ View แต่ส่วนใหญ่จะเป็น View สามารถเขียนแบบ JSX(JavaScript syntax extension) ได้


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

            วงแหวนเว็บ