ATtiny13a로 neopixel을 빛나게
소개
ATtiny13A에 neopixel 움직였다. 다음은 ATtiny10하고 싶다. #ATtiny13a #neopixel 피 c. 라고 r. 이 m/Df도 b67yr9 — Nabeshin (@desmoquattro996) June 19, 2021
neopixel
- 일루미네이션 등에 사용되는 마이크로 컴퓨터 LED.
- 1개 1개의 LED 유닛에 마이크로컴퓨터가 들어가 있어, 단 1개의 GPIO로 LED 단위로 독립한 지시를 낼 수 있다.
- Amazon에서 8개 첨부의 손쉬운 것이 있고, 현재 160엔.
마이크로 컴퓨터에 쓰기
- Arduino Nano를 라이터로 사용한다.
- 자세한 것은 「 AVR 마이크로 컴퓨터 ATtiny13 및 버튼 배터리로 L 치카 」참조.
- Arduino Nano를 라이터로 사용한다.
- 자세한 것은 「 AVR 마이크로 컴퓨터 ATtiny13 및 버튼 배터리로 L 치카 」참조.
코드
여기에서는 메인 파일만 게재.
- 이 코드에서 리모컨 제어 부분을 제거하고 루프에서 독자적인 lighting 제어하는 느낌으로 사용하셨습니다.
attiny13a_neopixel.ino
/*
* ATTINY13A neopixel
* Ref: https://github.com/fbiego/attiny13a_neopixel_ir.git
* WS2812 >> PIN 0
*/
#define F_CPU 9600000 // Must stay at this speed
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "light_ws2812.c"
#define PIXEL_NUM (8) //number of ws2812 leds
#define BRIGHTNESS (10) //brightness 0-255
#define DELAY_TIME (400) //ms
struct pixel {
uint8_t g;
uint8_t r;
uint8_t b;
};
struct pixel p[PIXEL_NUM];
void my_delay(uint16_t ms) {
while (0 < ms)
{
_delay_ms(1); //must be fixed parameter in compile time.
--ms;
}
}
void set_all_off(void) {
for (int n=0; n<PIXEL_NUM; n++) {
p[n].r = 0;
p[n].g = 0;
p[n].b = 0;
}
ws2812_setleds((struct cRGB *)&p, PIXEL_NUM);
my_delay(DELAY_TIME);
}
void setleds_act(uint8_t r, uint8_t g, uint8_t b) {
for (int n=0; n<PIXEL_NUM; n=n+2) {
p[n].r = r;
p[n].g = g;
p[n].b = b;
}
ws2812_setleds((struct cRGB *)&p, PIXEL_NUM);
my_delay(DELAY_TIME);
for (int n=0; n<PIXEL_NUM; n=n+2) {
p[n].r = g;
p[n].g = b;
p[n].b = r;
}
ws2812_setleds((struct cRGB *)&p, PIXEL_NUM);
my_delay(DELAY_TIME);
}
void setleds(uint8_t r, uint8_t g, uint8_t b) {
set_all_off();
//sequencial lighting
for (int n=0; n<PIXEL_NUM; n++) {
p[n].r = r;
p[n].g = g;
p[n].b = b;
ws2812_setleds((struct cRGB *)&p, PIXEL_NUM);
my_delay(DELAY_TIME);
}
//pattern lighting
for (int n=0; n<3; n++) {
setleds_act(r, g, b);
}
}
int main(void) {
while(1){
setleds(BRIGHTNESS, 0, 0);
my_delay(DELAY_TIME);
setleds(0, BRIGHTNESS, 0);
my_delay(DELAY_TIME);
setleds(0, 0, BRIGHTNESS);
my_delay(DELAY_TIME);
}
}
그래, 좋은 느낌.
Reference
이 문제에 관하여(ATtiny13a로 neopixel을 빛나게), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nabeshin/items/201fb12c2ca73be8db18텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)