정보나눔

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

조도센서 앱인벤터안에서 한줄 씩 표현하기 질문드려요
아두이노뉴비 | 2019-09-16
 

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();  이문단을 입력하면 오류가 발생하여 제외하고 컴파일을 하였는데 없어도 되는 구문인지도 궁금합니다 .

이전글   |    아두이노로 플립플롭을 구현하는 방법을 여쭤보고 싶습니다!... 2019-09-15
다음글   |    아두이노 사진촬영 이미지 블루투스로 전송... 2019-09-16