Я пытаюсь подключить датчик к моей программе и отобразить его на ЖК-дисплее 16x2.У меня есть два датчика приближения, где разница во времени между двумя входами рассчитывается и используется в формуле.Это значение применяется к переменной, и я хочу, чтобы это значение отображалось на ЖК-дисплее.Он отлично работает с последовательным монитором, но на ЖК-дисплее значения выглядят как гибберши.
Я изменил вывод с 1 на 2, чтобы теперь он был «LiquidCrystal lcd (2, 3, 4, 5, 6»)., 7); ".
И теперь последовательность выполняется, но на ЖК-дисплее нет данных.Может быть, это в цикле и, следовательно, он постоянно перезаписываетсяЕсть ли способ изменить последовательность так, чтобы значение приходило только один раз и данные отображались на ЖК-дисплее?(т. е. он непрерывно обеспечивает вывод, и если я пытаюсь выполнить цикл while, он все равно ничего не показывает. Serial Monitor также становится пустым.
Изображение Serial Monitor
Изображение на ЖК-дисплее
Пожалуйста, найдите мой код ниже и помогите мне с этой проблемой.
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
int limitSwitch = 13;
int limitSwitch2 = 12;
int state1 = LOW;
int state2 = LOW;
float centimeter = 0.050;
float timeRequired = 0.000;
float velocity = 0.000;
float durationFloat = 0.000;
unsigned long startTime;
unsigned long endTime;
unsigned long duration;
byte timerRunning;
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
pinMode(limitSwitch,INPUT);
pinMode(limitSwitch2,INPUT);
}
void loop()
{
int val1 = digitalRead(limitSwitch);
int val2 = digitalRead(limitSwitch2);
lcd.clear();
if( val1 != state1 || val2 != state2 )
{
state1 = val1;
state2 = val2;
if( state1 == 0 && timerRunning == 0 )
startTime = millis();
timerRunning = 1;
if( state2 == 0 && timerRunning == 1)
endTime = millis();
timerRunning = 0;
duration = endTime - startTime;
durationFloat = (float) duration;
timeRequired = durationFloat / 1000;
velocity = centimeter / timeRequired;
lcd.setCursor(0, 0);
lcd.print("Speed: ");
lcd.print(velocity);
lcd.setCursor(0, 1);
Serial.print("Speed in m/s = ");
Serial.println(velocity,7);
// lcd.print("Speed: "); lcd.print(velocity);
delay(1000);
}
}