BASIC4MCU | 질문게시판 | 아두이노 블루투스 네오픽셀 제어
페이지 정보
작성자 daef 작성일2020-06-15 07:20 조회5,345회 댓글1건본문
블루투스로 통신을해 네오픽셀을 제어하려고 하였습니다.
오류가 나는것은 아닙니다.
오류없이 컴파일도 되고 블루투스도 잘 작동되는데
L을 입력하고 숫자값 3개를 형식에 맞추어 넣어도 자꾸 안되서 질문 올립니다.
아두이노에 대해서 잘 아시는 고수분 답 좀 부탁드립니다.
#include <SoftwareSerial.h>
#include <Adafruit_NeoPixel.h>
#define PIN 6 // 핀 번호
#define NUMPIXELS 20 // LED 개수
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
SoftwareSerial bluetooth(2,3);
void setup() {
pixels.begin();//네오픽셀 사용설정
pixels.setPixelColor(0, pixels.Color(0,0,0));//네오픽셀 초기설정
pixels.show();//네오픽셀 설정 적용
bluetooth.begin(9600);//블루투스 사용설정(software serial)
}
int r = 0, g = 0, b = 0;
char choice;
void loop() {
choice = bluetooth.read();
if (choice == 'L') {
r = bluetooth.read();//첫번째 데이터를 r에 저장
g = bluetooth.read();//두번째 데이터를 g에 저장
b = bluetooth.read();//세번째 데이터를 b에 저장
for ( int k=0; k < NUMPIXELS; k++) {
pixels.setPixelColor(k, pixels.Color(r,g,b));//수신받은 데이터를 토대로 색상
pixels.show();//네오픽셀에 적용용
}
}else if (choice =='S') {
for (int j=0; j < NUMPIXELS; j++) {
pixels.setBrightness(255); // LED밝기 0~255
pixels.setPixelColor(j,255,255,255); // (LED번호, R,G,B)
pixels.show(); // LED에 값 적용
}
}else if (choice =='F') {
for (int i=0; i < NUMPIXELS; i++) {
pixels.setBrightness(0); // LED밝기 0~255
pixels.setPixelColor(i,0,0,0); // (LED번호, R,G,B)
pixels.show(); // LED에 값 적용
}
}
}
댓글 1
조회수 5,345master님의 댓글
master 작성일
SoftwareSerial은 하드웨어 시리얼과 다릅니다.
bluetooth.read() 데이터가 도착하지도 않은 상태에서 수신을 시도하면 엉터리 값을 가지고 바로 리턴합니다.
매 바이트마다 available() 체크를 반드시 한 후에 read() 해야 합니다.