esp-01 arduino WS2812B W2812

主旨: RGB 彩灯帶晶片WS2812B W2812 實習
日期: 2019/12/18~2019/12/18
說明:

1。之前是用 MPC82G516 (8051) , TINY13A (AVR) 做彩灯條的控制。
2。暫找不到彩灯條,找到前年,合作廠提供的 100 顆彩灯, 未帶線, 需自行焊接。
3。因為要動手焊線路,就停頓一些日子,沒去動它。
4。今,想用 arduino 去控制它,就動手焊接實習。
5。可以用以前的原碼進行改寫,但,用網上既有的程式庫,也是一種選擇,於是就採後者。

https://www.trademe.co.nz/electronics-photography/other-electronics/electronic-components/leds/listing-2445505601.htm
Neopixel WS2812B W2812 5050 RGB LED環形燈,帶集成驅動器
手上有這近100顆, 要進行實測, 用arduino 

https://core-electronics.com.au/tutorials/ws2812-addressable-leds-arduino-quickstart-guide.html

WS2812 / NeoPixel可尋址LED:Arduino快速入門指南
10顆*20mA=200mA
網文提供的 原碼, 複製使用時, 要修改, 因為, 每列會重覆顯示。


已經實習成功,檔名是 ws2801.ino



主旨:原自寫的WS2812 彩灯條 TINY13A AVR C ,改寫為 esp-01 Arduino 碼
硬體:上圖, ESP-01 + WS2812B
紀要:改碼後, 測試不成功。暫行放棄。
說明:


: 貴州案, tiny13A 有沒有控制彩燈條

: 有的。

關於delay(), millis(), micros(),delayMicroseconds與定时器(教程)計時


工作: 寫< 1us 的delay_me()
說明: 
我懷疑, 要用 nop 才不會被esp8266 略過。
我用 while(t--); 它根本就沒執行, 直接略過。for(i=0;i< 10000;i++); 它也是,略過。

void delay_me(ulong t){
static    int k;
     while(t--) for(k=0;k< 160;k++) __asm__("nop\n\t");
}
delay_me(10000);

t0= 40835506 t1= 40936932 t= 101426
這才有反應, 正常點的反應,之前都是略過。有反應了, 就精簡如下。
重點: 
while(t--); for(i=0;i< 10000;i++); 這等同沒有。8051C, 則會佔cpu時間,esp8266 arduino 則沒有佔。

工作: 寫< 1us 的delay_me()
說明: 

void delay_me(ulong t){
   while(t--) __asm__("nop\n\t");
}
delay_me(10000);

輸出如下:
t0= 14087109 t1= 14087739 t= 630

delay_me() => 0.063us
結論: 這樣寫就對了。


問: 灯沒反應, 很可能是 high low, 送反了.
答: 變更後, 灯一樣沒反應, 我決定放棄。

問: 是否顏色未變化,看不出來。
答: 改用亂變作為灯色, 10,顏色全沒有變化。放棄。

: arduino 如何印小數
: Serial.println(1.23456, 2) 小數點2 gives "1.23"

計劃:用8051 C 或 AVR C , 驅動彩灯1次,找明原因
說明:
1。之前用的彩灯,有可能和現在用的有所不同,重新用我之前的工具,干一次,以進一步了解原因。
2。。。。



留言

這個網誌中的熱門文章

無效的努力

股市-華頓S&P黃豆(00693U) 操作法