정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노와 블루투스를 사용하여 LED 점등을 하고싶습니다... 하지만 도통문제가 무엇인지모르겠습니다.
우승철 | 2017-12-04

 

 

실제로 사용하는 하드웨어 모습입니다. 아래는 메이킹화면이구요

이 화면을 설명드린다면 맨 오른쪽에 브레드보드에는 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;
    }  
  }
}

 

이전글   |    HC-05 블루투스 검색이 되지 않습니다 2017-12-04
다음글   |    아두이누 관련해서 질문있습니다. 2017-12-05