BASIC4MCU | 질문게시판 | 센서나 블루투스에서 조건문이 실행이 느립니다.
페이지 정보
작성자 현아 작성일2024-05-03 16:41 조회465회 댓글0건본문
안녕하세요 아두이노를 혼자 공부하고 있습니다.
#include <SoftwareSerial.h>
SoftwareSerial btSerial(11, 12);
#include <Adafruit_NeoPixel.h>
#define LED_PIN 4
#define LED_COUNT 20
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRBW + NEO_KHZ800);
int red = 0;
int green = 0;
int blue = 0;
int c = btSerial.read();
void setup() {
btSerial.begin(9600);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pixels.begin();
pixels.show();
}
void loop() {
analogWrite(3,0);
analogWrite(5,0);
analogWrite(6,0);
for (int i=0; i<LED_COUNT; i++){
pixels.setPixelColor(i, 0, 0, 0, 0);
pixels.show();
}
c = btSerial.read();
if (c == 65){
analogWrite(5, 250);
analogWrite(3, 30);
for (int i=0; i<LED_COUNT; i++){
pixels.setPixelColor(i, 210, 50, 0, 0);
pixels.show();
}
do{
} while (btSerial.read() == -1);
}
else if (c == 66){
analogWrite(3, 250);
for (int i=0; i<LED_COUNT; i++){
pixels.setPixelColor(i, 50, 250, 0, 0);
pixels.show();
}
do{
} while (btSerial.read() == -1);
}
else if (c == 67){
for (int i=0; i<LED_COUNT; i++){
pixels.setPixelColor(i, 0, 0, 0, 250);
pixels.show();
}
do{
} while (btSerial.read() == -1);
}
else if (c == 68){
do{
for (int i=0; i<20; i++){
pixels.setPixelColor(i, 200 - i*10, 0 + i*10, 0, 0);
pixels.show();
delay(100);
}
for (int i=0; i<20; i++){
pixels.setPixelColor(i, 0, 200 - i*10, 0 + i*10, 0);
pixels.show();
delay(100);
}
for (int i=0; i<20; i++){
pixels.setPixelColor(i, 0 + i*10, 0, 200 - i*10, 0);
pixels.show();
delay(100);
}
} while (btSerial.read() == -1);
}
}
이렇게 코드를 짰는데 블루투스에서 입력값을 입력하면 한 번 눌렀을 때 바로 되지 않고 여러 번 입력해주어야 인식이 됩니다..
루프를 돌고 있어서 맨 위에 c의 값의 변화가 타이밍이 안 맞아서 그렇다고 생각되는데 어떻게 하면 바로바로 인식되게 할 수 있을까요?
참고로 이 코드에서는 입력값이 없을때는 c에 -1의 값이 계속 입력됩니다.. (사실 c가 아니라 btSerial.read() 값이 -1입니다.)
앱인벤터로 어플을 만들어서 하고 있습니다. BLE HM-10을 사용하고 아두이노 나노 보드를 사용 중입니다.
어디에 도움을 요청 해야하고 어떻게 검색해야 하는지를 몰라 인터넷 서치 중에 여기를 찾게 되었습니다. 도와주세요...ㅜㅜ
댓글 0
조회수 465등록된 댓글이 없습니다.