1. 프로젝트 사용한 보드 종류
아두이노 UNO
2. 사용한 개발 프로그램명
아두이노 IDE
3. 사용한 센서 모델명
HC-06 블루투스 모듈
4. 연결한 회로 설명 (또는 이미지)
5. 소스코드 (주석 필수)
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(2, 3); //
int sensor = A0;
int sensorValue;
unsigned long previousMillis = 0;
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()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > 1000)
{
sensorValue = analogRead(sensor);
bluetooth.print(sensorValue);
}
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. 문제점 및 에러 내용
기존 delay함수를 millis 함수로 대체하였으나
앱인벤터 안에서 조도센서값을 불러올떄 delay(100) 을 주었을 떄에는 값이 어플안에서 한줄에 숫자만 바꼇으나
millis 함수를 쓸 경우에는 조도센서값이 한줄씩 위로 밀리는 현상이 발생하는데
이런 경우에는 어떡해 해야하나요
일단 소스코드에는 오류가 없이 컴파일이 되는데
unsigned long currentMillis() = millis();
if (currentMillis - prevMillis > 1000) {
sensorValue = analogRead(sensor);
bluetooth.print(sensorValue);
prevMillis() = currentMillis();
}
이런식으로 답변을 받았으나 prevMillis() = currentMillis(); 이문단을 입력하면 오류가 발생하여 제외하고 컴파일을 하였는데 없어도 되는 구문인지도 궁금합니다 .
|