BASIC4MCU | 질문게시판 | 초음파센서에 아무것도 잡히지 않을 시 그래프를 비워놓는 방법 질문드립니다.
페이지 정보
작성자 idghte 작성일2024-04-14 06:31 조회1,380회 댓글0건본문
꽤 오래 붙잡고있었는데 잘 안되서 질문드립니다.
초음파센서에 잡힌 물체의 거리에 따라 그래프가 증감하는 형식의 코드입니다.
그래프 증감은 잘 되지만 문제는 아무 물체가 잡히지 않으면 그래프를 비워놓고싶은데 꽉 차있습니다.. 도와주십쇼
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int trig_pin = 3;
int echo_pin = 4;
float duration = 0;
int distance = 0;
int i = 0;
int j = 0;
int start_flag = 1;
byte b00[8] {00,00,00,00,00,00,00,00};
byte b16[8] {16,16,16,16,16,16,16,16};
byte b24[8] {24,24,24,24,24,24,24,24};
byte b28[8] {28,28,28,28,28,28,28,28};
byte b30[8] {30,30,30,30,30,30,30,30};
byte b31[8] {31,31,31,31,31,31,31,31};
void setup()
{
ss_mode_setup();
lcd.createChar(0,b00);
lcd.createChar(1,b16);
lcd.createChar(2,b24);
lcd.createChar(3,b28);
lcd.createChar(4,b30);
lcd.createChar(5,b31);
lcd.init();
lcd.backlight();
lcd.init();
lcd.backlight();
}
void loop()
{
if(start_flag == 1)
{
ss_mode();
}
}
void ss_mode_setup()
{
lcd.createChar(0,b00);
lcd.createChar(1,b16);
lcd.createChar(2,b24);
lcd.createChar(3,b28);
lcd.createChar(4,b30);
lcd.createChar(5,b31);
lcd.init();
lcd.backlight();
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
Serial.begin(9600);
}
void ss_mode()
{
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
distance = duration / 29 / 2;
lcd.setCursor(0,1);
lcd.print("U:");
lcd.setCursor(2,1);
lcd.print(" ");
int i = distance / 5;
int j = distance % 5;
Serial.print(distance);
Serial.print(" ");
Serial.print(i);
Serial.print(" ");
Serial.print(j);
lcd.setCursor(2,1);
if(i >= 14) // 14이상이면
{
for(int k = 0; k<14; k++)
{
lcd.write(5);
}
}
else if(i<14)
{
for(int k = 0; k<i; k++)
{
lcd.write(5);
}
}
lcd.setCursor(i+2,1);
lcd.write(j);
}
댓글 0
조회수 1,380등록된 댓글이 없습니다.