BASIC4MCU | 질문게시판 | 아두이노 lcd 부저
페이지 정보
작성자 탈모대장 작성일2018-06-16 19:48 조회8,752회 댓글0건본문
저희가 원래 코딩값에서 목표금액을 달성하면 부저가 울리게 하고싶은데 코딩값을 어떻게 바꿔야 하는지 질문드립니다.
#include <Wire.h> // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h> // LCD 1602 I2C용 라이브러리LiquidCrystal_I2C lcd(0x3F,16,2); // 접근주소: 0x3F or 0x27
int echoPin = 12; //초음파 센서의 핀번호를 설정한다.
int trigPin = 13;float duration, distance; //시간저장변수, 거리저장변수
int coin; // 넣은 금액;
int Money = 0; //총액 변수, 초기값 0원 설정
void setup() {
// trig를 출력모드로 설정, echo를 입력모드로 설정
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);lcd.init(); // LCD 초기화
//LCD 초기표시
lcd.backlight(); // 백라이트 켜기(뒤에 가변저항 돌려서 조정하면 화면보입니다)
lcd.setCursor(0,0); // 1번째, 1라인(위)
lcd.print(" COIN "); //16자 영어로 쓰시면됩니다
lcd.setCursor(0,1); // 1번째, 2라인(아래)
lcd.print(" BANK "); //16자 영어로 쓰시면됩니다
}void loop() {
Serial.begin(9600);
// 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다.
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
// echoPin 이 HIGH를 유지한 시간을 저장 한다.
duration = pulseIn(echoPin, HIGH);
// HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다.
distance = ((float)(340 * duration) / 10000) / 2;
// 구10원 1~5cm, 신10원 5~10cm, 50원 10~15cm, 100원 15~20cm, 500원 20~25cm 가정했습니다
if( distance <= 5)
{
Money += 10;
lcd.setCursor(0,0); // 1번째, 1라인(위) 10원표시
lcd.print(" 10 won ");
delay(500);
Serial.print(distance);
Serial.print("cm ");
Serial.print("10won ");
Serial.print(Money);
Serial.println("won");
}
else if( distance <= 10)
{
Money += 10;
delay(500);
lcd.setCursor(0,0); // 1번째, 1라인(위) 10원표시
lcd.print(" 10 won ");
Serial.print(distance);
Serial.print("cm ");
Serial.print("10won ");
Serial.print(Money);
Serial.println("won");
}
else if( distance <=15)
{
Money += 50;
delay(500);
lcd.setCursor(0,0); // 1번째, 1라인(위) 50원표시
lcd.print(" 50 won ");
Serial.print(distance);
Serial.print("cm ");
Serial.print("50won ");
Serial.print(Money);
Serial.println("won");
}
else if( distance <= 20)
{
Money += 100;
delay(500);
lcd.setCursor(0,0); // 1번째, 1라인(위) 100원표시
lcd.print(" 100 won ");
Serial.print(distance);
Serial.print("cm ");
Serial.print("100won ");
Serial.print(Money);
Serial.println("won");
}
else if( distance <= 25)
{
Money += 500;
delay(500);
lcd.setCursor(0,0); // 1번째, 1라인(위) 500원표시
lcd.print(" 500 won ");
Serial.print(distance);
Serial.print("cm ");
Serial.print("500won ");
Serial.print(Money);
Serial.println("won");
}
lcd.setCursor(0,1); //둘째줄
lcd.print(Money);delay(100);
}
댓글 0
조회수 8,752등록된 댓글이 없습니다.