BASIC4MCU | 질문게시판 | 아두이노 IF문 관련 질문입니다
페이지 정보
작성자 sjy1752 작성일2020-09-14 13:06 조회14,273회 댓글1건본문
#define OUT1 3
#define OUT2 4
#define OUT3 5
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(0,1); //RX,TX
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
pinMode(OUT1, OUTPUT);
pinMode(OUT2, OUTPUT);
pinMode(OUT3, OUTPUT);
}
void loop() {
float sensor = analogRead(A0); // 0~1023의 값
sensor = sensor*5.00/1023; // sensor = 충전량(%)
Serial.print(sensor);
Serial.write(0x0d); //글자 정렬
Serial.write(0x0a); //줄 변경
if(3.0 <= sensor <= 3.3)
{
digitalWrite(OUT1, HIGH); //초음파센서 ON
digitalWrite(OUT2, HIGH); //초음파센서 ON
digitalWrite(OUT3, HIGH); //초음파센서 ON
delay(4); //delay 0.004초
digitalWrite(OUT1, LOW); //초음파센서 off
digitalWrite(OUT2, LOW); //초음파센서 off
digitalWrite(OUT3, LOW); //초음파센서 off
delay(16); //delay 0.016초
}
else if(3.3 < sensor <= 3.9)
{
digitalWrite(OUT1, HIGH); //초음파센서 ON
digitalWrite(OUT2, HIGH); //초음파센서 ON
digitalWrite(OUT3, LOW); //초음파센서 OFF
delay(4); //delay 0.004초
digitalWrite(OUT1, LOW); //초음파센서 off
digitalWrite(OUT2, LOW); //초음파센서 off
digitalWrite(OUT3, LOW); //초음파센서 off
delay(16); //delay 0.016초
}
else if(3.9 < sensor <= 4.2)
{
digitalWrite(OUT1, HIGH); //초음파센서 ON
digitalWrite(OUT2, LOW); //초음파센서 OFF
digitalWrite(OUT3, LOW); //초음파센서 OFF
delay(4); //delay 0.004초
digitalWrite(OUT1, LOW); //초음파센서 off
digitalWrite(OUT2, LOW); //초음파센서 off
digitalWrite(OUT3, LOW); //초음파센서 off
delay(16); //delay 0.016초
}
else
{
digitalWrite(OUT1, LOW); //초음파센서 OFF
digitalWrite(OUT2, LOW); //초음파센서 OFF
digitalWrite(OUT3, LOW); //초음파센서 OFF
delay(4); //delay 0.004초
digitalWrite(OUT1, LOW); //초음파센서 off
digitalWrite(OUT2, LOW); //초음파센서 off
digitalWrite(OUT3, LOW); //초음파센서 off
delay(16); //delay 0.016초
}
}
충전기 관련 코드를 작성하고 있습니다.
배터리 전압이 위의 범위에 따라서 아두이노의 3,4,5번 핀에 연결된 LED를 하나씩 동작시키려고 합니다.
그런데 A0핀에 입력되는 배터리 전압이 3.5V일 경우에는 위의 범위대로 LED가 2개만 들어와야하는데 3개가 모두 들어옵니다. 어떤 부분이 문제인지 알 수 있을까요??
참고로 가장 첫번째 if 문을 다음과 같이 변경하면 정상적으로 작동합니다.
if(sensor == 0)
{
digitalWrite(OUT1, HIGH); //초음파센서 ON
digitalWrite(OUT2, LOW); //초음파센서 OFF
digitalWrite(OUT3, HIGH); //초음파센서 ON
delay(4); //delay 0.004초
digitalWrite(OUT1, LOW); //초음파센서 off
digitalWrite(OUT2, LOW); //초음파센서 off
digitalWrite(OUT3, LOW); //초음파센서 off
delay(16); //delay 0.016초
}
댓글 1
조회수 14,273master님의 댓글
master 작성일
if(3.0 <= sensor <= 3.3)
이런 수식은 산수책에서 허용되는 것으로
c언어에서는 허용하지 않습니다.
if(3.0 <= sensor && sensor <= 3.3)
이런식으로 변경하세요