วิธีใช้งาน NeoPixel (WS2812) บนบอร์ด ESPressoLite (ESP8266)

29 Dec 2015 วิธีใช้งาน NeoPixel (WS2812) บนบอร์ด ESPressoLite (ESP8266)

สำหรับบทความนี้เราจะพูดถึงการใช้งาน NeoPixel  ซึ่งมันก็คือ RGB LED ที่มี Chip WS2812 นั่นเอง  ทำให้เราสามารถควบคุม LED หลายๆ  ตัว โดยใช้ GPIO เพียง 1 Pin ได้  ทำให้สะดวกต่อการควบคุม โดยในบทความนี้เราจะทดลองใช้งานด้วยบอร์ด ESPresso Lite ครับ

สำหรับใครที่ยังไม่เคยใช้บอร์ด ESPresso Lite สามารถดูวิธีใช้งานได้ที่นี่  https://www.appstack.cc/2015/12/lets-get-start-with-espresslite/

ในบทความนี้เราจะใช้ Library ที่เราพัฒนาเพิ่มเติมจากของ ESPrert นิดหน่อย  สามารถเข้าไปดาวน์โหลด Library ได้ที่  Github  ส่วนการติดตั้งก็เหมือนกับการติดตั้ง Library ของ ESPert  เลยครับ  โดย Download file จาก github แล้วเอาไปวางใน Document/Arduino/libraries

arduino_install_neopixel

เนื่องจากมีการเรียกใช้ Libraries NeoPixel ของ Adafruit ดังนั้นเราต้องเข้าไปติดตั้งใน Library Manager ด้วย

espert_appstack

ถ้าใครติดตั้ง Library ที่ Download มาจาก Github ถูกต้อง  จะต้องมี ESPert-AppStack ใน Example นะครับ เนื่องจาก Library ที่พัฒนาเพิ่มเติมได้ Fork มาจาก GitHub ต้นฉบับของหมอจิมมี่ และได้พัฒนาเพิ่มเติมใน branch AppStack   จึงทำให้ชื่อไฟล์ที่ Download มาเป็น ESPert-AppStack ดังนั้นใคร Download มาแล้วไม่ได้แบบนี้ลองเข้าไปดาวน์โหลดใหม่นะครับ (Download)

วิธีใช้งานไม่ยากลองเปิด Example ออกมาได้เลย

neopixel_example

การ Init ค่าสามารถทำได้โดยเรียกใช้ฟังก์ชัน espert.neopixel.init();  ซึ่งค่า default จะถูกต่อที่ GPIO 14 และกำหนดให้ NeoPixel มี LED 8 ดวง  ถ้าต้องการย้ายไปใช้ GPIO อื่น สามารถทำได้โดยเพิ่ม Prameter เข้าไปตอน Init ดังนี้

espert.neopixel.init(pin,led_count);

เช่น  สมมุติว่าเรามี NeoPixel แบบวงกลม ซึ่งมี LED ทั้งหมด 16 ดวง  และต้องการต่อที่ GPIO13 สามารถเขียนโค้ดได้แบบนี้ครับ

espert.neopixel.init(13,16);

ฟังก์ชันที่สามารถเรียกใช้งานได้

void rainbow();
void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b);
void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w);
void setPixelColor(uint16_t n, uint32_t c);
void setColor(uint8_t r, uint8_t g, uint8_t b);
void setColor(uint8_t r, uint8_t g, uint8_t b, uint8_t w);แต่ละสี
void setColor(uint32_t c);
void clear();
void off();
void show();

เมื่อสั่งงานเปลี่ยนสีทั้งหมด (setColor) ตัว NeoPixel จะทำการเปลี่ยนสีทันที  แต่ะถ้าเปลี่ยนสีทีละดวง (setPixelColor)  เราจะต้องใช้คู่กับฟังก์ชัน show() เพื่อสั่งให้ NeoPixel ด้วย  ขอให้สนุกกับการเล่น NeoPixel นะครับ

Comments

comments