BASIC4MCU | 질문게시판 | 질문 아두이노 - ph 센서 이용 LED 켜기
페이지 정보
작성자 잼민 작성일2023-11-20 11:48 조회2,553회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=23409
본문
안녕하세요. 아두이노 팅커캐드 초보입니다. 인터넷에서 찾은 PH 센서를 이용해서 PH가 7.0보다 크면 빨간색 LED와 모터를 작동시키는 코딩을 만들고, 물의 수질이 괜찮으면 초록색 LED를 켜는 아두이노 코딩을 만들고 싶습니다. 하지만 LED와 모터가 켜지지 않습니다. 이 문제를 어떻게 해결해야할지 모르겠습니다. 도움주시면 정말 감사하겠습니다.
1
#include <LiquidCrystal.h>
2
#include <Servo.h>
3
4
const int rs = 13, en = 12, d4 = 11, d5 = 10, d6 = 9, d7 = 8;
5
const int lcdBacklightPin = 6; // LCD 백라이트 연결 핀
6
const int redLedPin = 7; // 빨간색 LED 연결 핀
7
const int greenLedPin = 6; // 초록색 LED 연결 핀
8
const int servoPin = 5; // 마이크로 서보 모터 연결 핀
9
10
Servo myservo; // Servo 객체 생성
11
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
12
13
void setup() {
14
Serial.begin(9600);
15
lcd.begin(16, 2);
16
lcd.setCursor(4, 0);
17
lcd.print("pH Value:");
18
19
pinMode(lcdBacklightPin, OUTPUT);
20
analogWrite(lcdBacklightPin, 255); // LCD 백라이트 켜기
21
22
pinMode(redLedPin, OUTPUT);
23
pinMode(greenLedPin, OUTPUT);
24
myservo.attach(servoPin); // 마이크로 서보 모터 연결
25
}
26
27
void loop() {
28
int sensorValue = analogRead(A0);
29
float ph = sensorValue * (14.0 / 1023.0);
30
Serial.println(ph);
31
lcd.setCursor(6, 1);
32
lcd.print(ph);
33
34
if (ph > 7.0) { // 임계값은 예시로 7.0으로 설정됨, 필요에 따라 조절
35
// 수질이 좋지 않은 경우
36
digitalWrite(redLedPin, HIGH); // 빨간색 LED 켜기
37
digitalWrite(greenLedPin, LOW); // 초록색 LED 끄기
38
myservo.write(90); // 마이크로 서보 모터를 중앙 위치로 이동 (90도)
39
analogWrite(lcdBacklightPin, 0); // LCD 백라이트 끄기
40
} else {
41
// 수질이 안전한 경우
42
digitalWrite(redLedPin, LOW); // 빨간색 LED 끄기
43
digitalWrite(greenLedPin, HIGH); // 초록색 LED 켜기
44
myservo.write(0); // 마이크로 서보 모터를 0도로 이동
45
analogWrite(lcdBacklightPin, 255); // LCD 백라이트 켜기
46
}
47
48
delay(1000); // 1초 대기
49
}
댓글 2
조회수 2,553master님의 댓글
master 작성일
6번핀 7번핀이 브레드보드의 GND에 연결되어 있습니다.
오동작을 따지기 전에, 전원핀에 출력핀을 연결하면 고장납니다.
master님의 댓글
master 작성일
https://blog.naver.com/iamamaker/221021964164
LCD의 Vo 핀은 위 예제처럼 반고정 가변저항에 연결해서 휘도를 조절해줍니다.
//
LCD의 15번 16번핀의 백라이트용LED는 5V에 직접 연결하고, 아두이노 핀에 연결하지 않습니다.