BASIC4MCU | 질문게시판 | 아두이노 코드 질문있습니다.
페이지 정보
작성자 호2 작성일2022-12-07 15:53 조회1,273회 댓글0건본문
지금 만드는 것이 조도센서에 들어오는 빛의 세기에 따라서 블라인드를 자동으로 올리고 내리는 것입니다.
input1~4는 모터(모터 2개 사용했습니다.)입니다.
A0핀에 조도센서 연결했습니다.
void setup()
{
Serial.begin(9600);
pinMode(input1, OUTPUT);
pinMode(input2, OUTPUT);
pinMode(9, OUTPUT);
pinMode(input3, OUTPUT);
pinMode(input4, OUTPUT);
pinMode(11, OUTPUT);
time = millis();
}
void loop()
{
int readValue = analogRead(A0);
Serial.println(readValue);
delay(1000);
if(readValue <= 400)
{
Serial.print("forward");
digitalWrite(input1, LOW);
digitalWrite(input2, HIGH);
digitalWrite(input3, LOW);
digitalWrite(input4, HIGH); // 햇빛이 밝을 때 모터가 정회전하면서 블라인드를 내립니다.
analogWrite(9, Speed);
digitalWrite(11, Speed);
if(time > 3500)
{
Serial.print("STOP !!!");
digitalWrite(input1, LOW);
digitalWrite(input2, LOW);
digitalWrite(input3, LOW);
digitalWrite(input4, LOW); // 모터가 정회전 후 3.5초 후에 정지합니다.
}
}
else if(readValue > 400 and readValue <= 550)
{
Serial.print("backword");
digitalWrite(input1, HIGH);
digitalWrite(input2, LOW);
digitalWrite(input3, HIGH);
digitalWrite(input4, LOW);
analogWrite(9, Speed);
analogWrite(11, Speed); // 햇빛이 적을 때 모터가 역회전하면서 블라인드를 올립니다.
if(time > 3500)
{
Serial.print("STOP !!!");
digitalWrite(input1, LOW);
digitalWrite(input2, LOW);
digitalWrite(input3, LOW);
digitalWrite(input4, LOW); // 모터가 역회전 후 3.5초 후에 정지합니다.
}
}
}
처음 동작할 때 모터 정회전 후 3.5초 후에 정지까지는 됩니다. 그런데 역회전이 안되더라구요.... 모터가 역회전 후 3.5초 후에 정지하는 코드를 지우고 실행하면 역회전은 되는데 안 멈추고 계속 회전합니다...
지금 만들려는 것이 한번 전원 공급을 해주면 따로 조작하지 않아도 조도센서 값을 계속 읽으면서 밝을 때는 3.5초 동안 블라인드를 내리고 정지 -> 어두울 때는 3.5초 동안 블라인드를 올리고 정지입니다.
도움 부탁드립니다...ㅠㅠ
댓글 0
조회수 1,273등록된 댓글이 없습니다.