Невозможно отобразить значение переменной на 16x2 LCD с Arduino - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь подключить датчик к моей программе и отобразить его на ЖК-дисплее 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);
     }
    }

1 Ответ

0 голосов
/ 17 сентября 2018

похоже, что вы используете контакт 1, но контакты 0 и 1 в Arduino предназначены для серийного номера, который вы используете

...