STM32L010とWS2812B(3個)でランダムに光らせる。 (Keil)
x Mbed2
x ws2812bがなぜ3個なのかと言うと2,3個で電流が超えるらしい
x 軽量高速化
目的
GPIOのテスト
STM32L010F4P6
説明
WS2812Bの接続ピンは、PA4(10ピン)です。
x 動作確認は、しましたが画像は、イメージです。
//WS2812_LED3_RAND_010_1
#include "mbed.h"
char l[90]; //max30 led
DigitalOut myled(PA_4);
// 5432109876543210
#define on1 0b0000000000010000
#define off1 0b0000000000000000
#define M_ON1 GPIOA->ODR=on1;GPIOA->ODR=on1;GPIOA->ODR=on1;GPIOA->ODR=on1;
#define M_OFF1 GPIOA->ODR=off1;GPIOA->ODR=off1;GPIOA->ODR=off1;GPIOA->ODR=off1;
// 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3
void bit_off1()
{
//0.3us 800khz
M_ON1;
M_ON1;
GPIOA->ODR = on1;
M_OFF1;
M_OFF1;
M_OFF1;
M_OFF1;
M_OFF1;
M_OFF1;
M_OFF1;
GPIOA->ODR = off1;
}//bit_off1
// 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
void bit_on1()
{
//1us 800khz
M_ON1;
M_ON1;
M_ON1;
M_ON1;
M_ON1;
M_ON1;
M_ON1;
GPIOA->ODR = on1;
GPIOA->ODR = on1;
GPIOA->ODR = on1;
M_OFF1;
GPIOA->ODR = off1;
GPIOA->ODR = off1;
GPIOA->ODR = off1;
}//bit_on1
//ws2812bにデータを送る
int ws_led(int num1)
{
char al;
__disable_irq(); // disable interrupt
for(int ii=0; ii<num1; ii++) {
al=l[ii];
if( al & 0b10000000 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b01000000 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b00100000 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b00010000 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b00001000 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b00000100 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b00000010 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
if( al & 0b00000001 ){bit_on1();/*ビットが1*/}else{bit_off1();/*ビットが0*/}
}//for
__enable_irq(); // enable interrupt
return(0);//リターン
}
//メイン
int main() {
//無限ループ
while(1){
for(int ii=0;ii<9;ii++){
l[ii] = rand()%52;
}//for
//ws2812bへデータを送る
ws_led(9);
//1秒待つ
wait_ms(100);
} //while
} //main
Author And Source
この問題について(STM32L010とWS2812B(3個)でランダムに光らせる。 (Keil)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/9f75294b8ea94fb4ef2d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .