2024年10月6日 星期日

WS2812 全彩LED 燈條測試研發紀錄

 目的:測試 WS2812 LED  PCB

名稱

版本

備註

Arduino IDE

2.3.2


FastLED

3.6.0


開發板PICO RP2040 

RP2040-Zero


Arduino Mbed OS RP2040

4.1.1

這個專案是選擇Arduino的板子才能支援多燈條的設定

Raspberry Pi PICO RP2040

3.7.1



板子的選擇如下:

工具🡪開發板🡪Arduino Mbed OS RP2040 borads 🡪 Raspberry Pi Pico

這個選項很重要要非常小心注意

這個是控制四塊PCB的程式

可以成功的運行

如果選擇Raspberry Pi Pico RP2040 如下圖:

同樣的程式compiler 會出現下列錯誤:

原因不明可能是Fastled library 與Raspberry Pi Pico 的底層有不相容吧!!

I/O PORT 規劃表


項次

Arduino 腳位名稱

程式定義名稱

I/O

動作

說明

1

GPIO 0

保留

 

 

 

2

GPIO1

保留

 

 

 

3

GPIO2

SMART_LEDS

O

clk

J2.2

4

GPIO3

SPI_CLK

O

clk

J4.2

5

GPIO4

SDA

IO

 

OLED SDA

6

GPIO5

SCL

IO

 

OLED SCL

7

GPIO6

SPI_MOSI

O

clk

J4.4

8

GPIO7

nSPI_MISO

I

clk

J4.5

9

GPIO8

SPI_STB

O

clk

J4.7

10

GPIO9

nLED_OE

O

clk

J4.8

11

GPIO10

MUSSEL_0

O

clk

J4.10

12

GPIO11

MUSSEL_1

O

clk

J4.11

13

GPIO12

MUSSEL_2

O

clk

J4.12

14

GPIO13

 

 

 

 

15

GPIO14

 

 

 

 

16

GPIO15

 

 

 

 

17

GPIO16

 

 

 

 

18

GPIO17

 

 

 

 

19

GPIO18

 

 

 

 

20

GPIO19

 

 

 

 

21

GPIO20

 

 

 

 

22

GPIO21

 

 

 

 

23

GPIO22

 

 

 

 

24

GPIO23

板子上的WS2812B LED

O

 

保留

25

GPIO24

板子上的USER 按鍵

IO

 

保留

26

GPIO25

板子上的LED

O

 

保留

27

GPIO26

ADC0

 

ADC_LEFT J4.16

28

GPIO27

ADC 1

I

 

 

29

GPIO28

ADC 2

I

 

 

30

GPIO29

ADC 3

I

 

 


WS2812 全採LED驅動下面是我寫的範例程式

/// @file    ArrayOfLedArrays.ino

/// @brief   Set up three LED strips, all running from an array of arrays

/// @example ArrayOfLedArrays.ino


// ArrayOfLedArrays - see https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples for more info on

// using multiple controllers.  In this example, we're going to set up three NEOPIXEL strips on three

// different pins, each strip getting its own CRGB array to be played with, only this time they're going

// to be all parts of an array of arrays.

/*

2024/03/12

程式設計 : 李進衛

發展板: RP2040

機種:  LED測試程式

版本:1.0

根據Fastled library 範例修改以符合治具測試使用

這個程式compiler的板子選項要特別注意

在ArduinoIDE中:工具-->開發板-->Arduino Mbed OS RP2040 borads-->Raspberry Pi Pico

才能compiler成功

LED的亮度可以考慮使用VR調節但是這個程式我沒有加入這個功能,開發板的ADC我有預留出來

視狀況加入這個亮度的調節功能


*/

#include <FastLED.h>


#define NUM_STRIPS 4    //四聯板

#define NUM_LEDS_PER_STRIP 60  //每一片板子的LED數

#define BRIGHTNESS 50   //2024/03/07 by 李進衛 modify 60

#define delaytime 25  //50 // delay time


CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP]; //開二維陣列處理LED


// For mirroring strips, all the "special" stuff happens just in setup.  We

// just addLeds multiple times, once for each strip

void setup() {

  // tell FastLED there's 60 NEOPIXEL leds on pin 3

  FastLED.addLeds<WS2812B, 3, GRB>(leds[0], NUM_LEDS_PER_STRIP);


  // tell FastLED there's 60 NEOPIXEL leds on pin 4

  FastLED.addLeds<WS2812B, 4, GRB>(leds[1], NUM_LEDS_PER_STRIP);


  // tell FastLED there's 60 NEOPIXEL leds on pin 5

  FastLED.addLeds<WS2812B, 5, GRB>(leds[2], NUM_LEDS_PER_STRIP);


  // tell FastLED there's 60 NEOPIXEL leds on pin 6

  FastLED.addLeds<WS2812B, 6, GRB>(leds[3], NUM_LEDS_PER_STRIP);


}


void loop() {

  // This outer loop will go over each strip, one at a time

         FastLED.setBrightness(BRIGHTNESS);

  for(int x = 0; x < NUM_STRIPS; x++) {

    // This inner loop will go over each led in the current strip, one at a time

    for(int i = 0; i < NUM_LEDS_PER_STRIP; i++) {

      leds[x][i] = CRGB::White; //Red;

      FastLED.show();

//      leds[x][i] = CRGB::Black;

      delay(delaytime);

    }


    for(int i = NUM_LEDS_PER_STRIP; i>=0; i--) {

      leds[x][i] = CRGB::Red;

      FastLED.show();

//      leds[x][i] = CRGB::Black;

      delay(delaytime);

    }


    for(int i = 0; i < NUM_LEDS_PER_STRIP; i++) {

      leds[x][i] = CRGB::Green; //Red;

      FastLED.show();

//      leds[x][i] = CRGB::Black;

      delay(delaytime);

    }

    for(int i = NUM_LEDS_PER_STRIP; i>=0; i--) {

      leds[x][i] = CRGB::Blue;

      FastLED.show();

//      leds[x][i] = CRGB::Black;

      delay(delaytime);

    }


  }



  

}


沒有留言:

如何使用終端機軟體收集來自於Arduino的資料

  將治具使用Micro USB cable 連上電腦 開啟終端機軟體 選擇 Serial🡪按下OK File🡪Log…  設定log file要存放位置,建議檔案名稱直接取名為*.CSV 例如:20231224.csv 按下治具Reset按鍵開始收集資料