실제로 사용하는 하드웨어 모습입니다. 아래는 메이킹화면이구요
이 화면을 설명드린다면 맨 오른쪽에 브레드보드에는 LED를 3개씩 1개의 포트로 사용하는 30개의 LED가 꽂혀있는 빵판입니다.
두번째로 가운데 브레드보드는 LED를 3개당 하나씩 묶기위해 사용되고, 아래엔 블루투스 HC-05를 사용하였습니다.
블루투스 RX와 TX는 0,1 포트를 사용하고, 보시는바와같이 4번부터 ~ 13번 포트까지 총 10개의 LED포트를 사용하고 있습니다.
제가 만드려는 작품은 안드로이드 핸드폰의 충전량을 블루투스로 아두이노에게 넘기고, 그값을 받아 10%센트의 잔량이면 LED 3개를
20%센트의 잔량이라면 LED 6개를 . . . . . . . 100% 완충이 돼었을때는 30개의 LED 전체가 불을 켜고싶었습니다.
개별제어하는데까지는 성공하였는데.. 아직 어플도 못만들었지만.. 핸드폰으로 블루투스 테스트어플로 연동하여 4란 숫자를 보내면 3개만 들어와야하는데 작동이돼지않습니다.. 코드를 업로드 해도 에러는 발생하지않는데 왜 생각대로 안돌아가는지 잘모르겠습니다..
아래는 아두이노에 사용하는 코드입니다.
#include <SoftwareSerial.h>
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;
int led10 = 10;
int led11 = 11;
int led12 = 12;
int led13 = 13;
SoftwareSerial BTSerial(0, 1);
byte buffer[1024];
int bufferPosition;
void setup() {
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
BTSerial.begin(9600);
Serial.begin(9600);
bufferPosition = 0;
}
void loop() {
if (BTSerial.available()) {
byte data = BTSerial.read();
Serial.write(data);
buffer[bufferPosition++] = data;
if (data <= 10){
digitalWrite(led4, HIGH);
delay(2000);
}
else if (data <= 20) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
delay(2000);
}
else if (data <= 30) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
delay(2000);
}
else if (data <= 40) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
delay(2000);
}
else if (data <= 50) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
delay(2000);
}
else if (data <= 60) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
delay(2000);
}
else if (data <= 70) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
delay(1000);
}
else if (data <= 80) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH);
delay(2000);
}
else if (data <= 90) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH);
digitalWrite(led12, HIGH);
delay(2000);
}
else if (data <= 100) {
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH);
digitalWrite(led12, HIGH);
digitalWrite(led13, HIGH);
delay(2000);
}
if (data == '\n') {
buffer[bufferPosition] = '\0';
BTSerial.write(buffer, bufferPosition);
bufferPosition = 0;
}
}
}
|