1. 프로젝트 사용한 보드 종류
아두이노 UNO
2. 사용한 개발 프로그램명
아두이노 IDE
3. 사용한 센서 모델명
HC-06 블루투스 모듈
4. 연결한 회로 설명 (또는 이미지)
5. 소스코드 (주석 필수)
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(2, 3); // 2번핀고3번핀으로 RX TX 통신
int sensor = A0; // A0 을 조도센서 읽어드림
int sensorValue; // sencorValue 선언
void setup()
{
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(4, OUTPUT); // LED OUTPUT 1번째 LED 레드
pinMode(5, OUTPUT); // LED OUTPUT 1번째 LED 그린
pinMode(6, OUTPUT); // LED OUTPUT 1번째 LED 블루
pinMode(7, OUTPUT); // LED OUTPUT 2,3번째 LED 레드
pinMode(8, OUTPUT); // LED OUTPUT 2,3번째 LED 그린
pinMode(9, OUTPUT); // LED OUTPUT 2,3번째 LED 블루
pinMode(10, OUTPUT); // LED OUTPUT 4번째 LED 레드
pinMode(11, OUTPUT); // LED OUTPUT 4번째 LED 그린
pinMode(12, OUTPUT); // LED OUTPUT 4번째 LED 블루
}
void loop()
{
sensorValue = analogRead(sensor); //sensorValue 값을 아날로그신호(sensor)로 정의
bluetooth.print(sensorValue); //sensorValue값 (A0신호) 블루투스모니터 출력
delay(1000);
char val = bluetooth.read();
if (bluetooth.available())
{
Serial.write(bluetooth.read());
}
if(val == 'r')
{
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
digitalWrite(10,HIGH);
}
if(val == 'R')
{
digitalWrite(4,LOW);
digitalWrite(7,LOW);
digitalWrite(10,LOW);
}
if(val == 'b')
{
digitalWrite(6,HIGH);
digitalWrite(9,HIGH);
digitalWrite(12,HIGH);
}
if(val == 'B')
{
digitalWrite(6,LOW);
digitalWrite(9,LOW);
digitalWrite(12,LOW);
}
if(val == 'g')
{
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
digitalWrite(11,HIGH);
}
if(val == 'G')
{
digitalWrite(5,LOW);
digitalWrite(8,LOW);
digitalWrite(11,LOW);
}
if(val == 'e')
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(val == 'c')
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(val == 'X')
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
if(val == 'x')
{
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
if(val == 'y')
{
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
if(val == 'Y')
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
if(val == 'Z')
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
if(val == 'z')
{
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
}
else if(val == 'f')
{
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
}
}
6. 문제점 및 에러 내용
소스코드 상 문제는 없으나 소스를 보게되면 조도센서칸에 딜레이1000 을 주었는데
이 딜레이가 전체 소스에 영향을 끼치게 되어 조도센서 뿐만 아니라
LED를 껏다 켰다 할때 도 늦어져서 다른 방법을 알아보는데 방법을 찾지 못해 질문드립니다
조도센서에만 딜레이가 적용이 되고 LED ON OFF 시에는 적용이 되지 않는 방법으로 소스코드를 작성하고싶습니다
인터럽트를 쓰라고 조언을 교수님께 받았는데 어떻게 적용해야할지 모르겠습니다.
그리고 딜레이를 변경시 어플내에서 조도센서값이 3자리가 아닌 8자리 그이상으로 1줄씩 계속 나와서
그부분도 알고싶습니다
|