BASIC4MCU | 질문게시판 | 아두이노 입문자인데 질문드립니다 ㅠㅠ
페이지 정보
작성자 moonshark 작성일2022-12-05 08:58 조회166회 댓글0건본문
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define SV1 5 // 입차 차단기 모터
#define SV2 6 // 출차 차단기 모터
#define BLUE 10 // 차단기 led
#define RED 11 // 차단기 led
#define trigPin 2
#define echoPin 2
#define trig2Pin 8
#define echo2Pin 8
Servo sv1;
Servo sv2;
int rPin = 10; //변수 redPin 선언, 10번 핀을 변수 redPin에 저장
int gPin = 11; //변수 greenPin 선언, 11번 핀을 변수 greenPin에 저장
int redPin = 12; //변수 redPin 선언, 12번 핀을 변수 redPin에 저장
int greenPin = 13; //변수 greenPin 선언, 13번 핀을 변수 greenPin에 저장
float distance1 = 0;
float duration1 = 0;
float distance2 = 0;
float duration2 = 0;
void setup() {
Serial.begin(9600);
sv1.attach(SV1);
sv2.attach(SV2);
lcd.begin(); // LCD 모듈 초기화
lcd.backlight();//LCD 백라이트 ON
pinMode(trigPin, OUTPUT); // 입
pinMode(echoPin, INPUT); // 입
pinMode(trig2Pin, OUTPUT); // 출
pinMode(echo2Pin, INPUT); // 출
pinMode(gPin, OUTPUT); // 차단기 led
pinMode(rPin, OUTPUT); // 차단기 led
}
void loop() {
//초음파 신호 보내고 받는 과정
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
// 물체에 반사되어 돌아오는 초음파 시간을 duration이라는 변수에 저장
duration1 = pulseIn(echoPin, HIGH);
// 초음파의 이동거리를 distace라는 변수에 저장
distance1 = 34000*duration1 / 1000000 / 2;
//시리얼 모니터에 거리값 출력
Serial.print(distance1);
Serial.print("cm");
pinMode(trig2Pin, OUTPUT);
digitalWrite(trig2Pin, LOW);
delayMicroseconds(2);
digitalWrite(trig2Pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig2Pin, LOW);
pinMode(echo2Pin, INPUT);
// 물체에 반사되어 돌아오는 초음파 시간을 duration이라는 변수에 저장
duration2 = pulseIn(echoPin, HIGH);
// 초음파의 이동거리를 distace라는 변수에 저장
distance2 = 34000*duration1 / 1000000 / 2;
//시리얼 모니터에 거리값 출력
Serial.print(distance2);
Serial.println("cm");
if(distance1<20)
{
sv1.write(120);
delay(150);
lcd.setCursor(0,0); // 글자가 출력될 좌표를 설정합니다. LCD상의 커서를 (0,0으로 이동)
lcd.print("welcome"); // welcome 출력
delay(500); // 화면에 글자가 보이는 시간을 설정합니다.
lcd.clear();// LCD화면을 초기화 합니다.
delay(200);// 초기화 유지 시간을 설정합니다.
digitalWrite(rPin, LOW); // 빨간불을 끕니다
// digitalWrite(gPin, HIGH); // 초록불을 킵니다
}
else if(distance2<20)
{
sv2.write(60);
delay(150);
lcd.setCursor(0,0); // 글자가 출력될 좌표를 설정합니다. LCD상의 커서를 (0,0으로 이동)
lcd.print("good-bye"); // good-bye 출력
delay(500); // 화면에 글자가 보이는 시간을 설정합니다.
lcd.clear();// LCD화면을 초기화 합니다.
delay(200);// 초기화 유지 시간을 설정합니다.
digitalWrite(redPin, LOW); // 빨간불을 끕니다
}
else
{
sv1.write(80);
delay(150);
digitalWrite(gPin, LOW); // 초록불을 끕니다
digitalWrite(rPin, HIGH); // 빨간불을 킵니다
}
{
sv2.write(80);
delay(150);
digitalWrite(gPin, LOW); // 초록불을 끕니다
digitalWrite(rPin, HIGH); // 빨간불을 킵니다
}
}
초음파센서 2개와 서브모터 2개로 차단기를 만들어보고 있는 초보자입니다! sv1 모터는 잘 작동되는데 sv2 모터가 잘 작동되지 않아 헤메고 있는데 뭐가 문제인지 지적해주시면 정말 감사하겠습니다!
댓글 0
조회수 166등록된 댓글이 없습니다.