정보나눔

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

smart curtain 개발 관련 질문입니다!
앤짱 | 2021-06-05

현재 smart curtain 개발(과제)을 하고 있는데요..

 

timer1함수를 이용해 센서가 계속 작동하는 것은 중지시켰지만

delay함수 때문에 a==2 인 상황에서 a==1 , a==3, a==4로 바로 전환을 시킬수가 없네요..

어떻게하면 delay없이 a를 바꿀 수 있을까요?

도움 요청드립니다.

extern volatile unsigned long timer0_millis;
#include <SoftwareSerial.h>    
#include <Stepper.h>
#include <dht.h>
#include <SimpleTimer.h>
SoftwareSerial BT(2,3);
const int stepsPerRevolution = 64; 
Stepper myStepper(stepsPerRevolution, 11,9,10,8); 
dht DHT;
#define DHT11_PIN A1
SimpleTimer timer;
char a = BT.read();
void setup() 
{
Serial.begin(9600);         //Sets the data rate in bits per second (baud) for serial data transmission
pinMode(7, OUTPUT); 
myStepper.setSpeed(300);
BT.begin(9600);//Sets digital pin 13 as output pin

}
void loop(){


if(BT.available()){
char a = BT.read();
  if (a=='1'){
    
    digitalWrite(7,HIGH);
    myStepper.step(2048);
    delay(500);
    Serial.print('1');
  }
  if (a=='2'){
    automode();
   
   
  }  
  if (a=='3'){
   
    digitalWrite (7,LOW);
    myStepper.step(-2048);
    Serial.print('2');
    delay(500);
  }   if (a=='4'){
   
    digitalWrite (7,LOW);
    myStepper.step(-2048);
    Serial.print('2');
    delay(500);
  }           
  }                 

}

void automode(){
  
  
   
   int chk = DHT.read11(DHT11_PIN);
    int AnalogValue;
    AnalogValue = analogRead(A0);
   
    if(DHT.temperature>30&&AnalogValue>600){
      myStepper.step(-2048);
      timer1();
      
      
    }else if(DHT.temperature>30&&AnalogValue<600){
     myStepper.step(2048); 
    timer1();
    }else if (DHT.temperature<30&&AnalogValue>600){
    myStepper.step(2048);
    timer1();
    }else if (DHT.temperature<30&&AnalogValue<600){
  myStepper.step(-2048);
    timer1();
    }
    return;}
    void timer1(){
       
      timer0_millis;
      
      if (timer0_millis>=100000){
        timer0_millis=0;}
       
        do{delay(5);}
        while(timer0_millis<100000);
        return;}

        

    
      
  
      

 

이전글   |    아두이노 4선식 로드셀 4개를 이용한 코드 작성 중 오류..!... 2021-06-02
다음글   |    아두이노 브레드보드 없이 직렬 연결 질문 ... 2021-06-06