Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 无法在带有Arduino的16x2 LCD中显示变量值_Variables_Arduino_Arduino Ide_Lcd - Fatal编程技术网

Variables 无法在带有Arduino的16x2 LCD中显示变量值

Variables 无法在带有Arduino的16x2 LCD中显示变量值,variables,arduino,arduino-ide,lcd,Variables,Arduino,Arduino Ide,Lcd,我正在尝试将传感器输入到我的程序中,并将其显示在16x2 LCD显示屏上。我有两个接近传感器,计算两个输入之间的时间差,并在公式中使用。该值应用于变量,我希望该值显示在LCD中。它可以与串行监视器配合使用,但在LCD上显示的值看起来乱七八糟 我已将引脚从1更改为2,因此它现在是“液晶lcd(2、3、4、5、6、7);” 现在序列运行,但LCD中没有显示数据。也许它在循环中,因此它在不断地覆盖。有没有办法改变顺序,使值只出现一次,数据显示在LCD上?(即,它持续提供输出,如果我尝试while循环,

我正在尝试将传感器输入到我的程序中,并将其显示在16x2 LCD显示屏上。我有两个接近传感器,计算两个输入之间的时间差,并在公式中使用。该值应用于变量,我希望该值显示在LCD中。它可以与串行监视器配合使用,但在LCD上显示的值看起来乱七八糟

我已将引脚从1更改为2,因此它现在是“液晶lcd(2、3、4、5、6、7);”

现在序列运行,但LCD中没有显示数据。也许它在循环中,因此它在不断地覆盖。有没有办法改变顺序,使值只出现一次,数据显示在LCD上?(即,它持续提供输出,如果我尝试while循环,它仍然不显示任何内容。串行监视器也变空

请在下面找到我的代码,并帮助我解决此问题

#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,2,4,5,6,7);
int限位开关=13;
int=2=12;
int state1=低;
int state2=低;
浮动厘米=0.050;
所需浮动时间=0.000;
浮速=0.000;
浮动持续时间浮动=0.000;
无符号长起始时间;
无符号长结束时间;
无符号长持续时间;
字节定时;
无效设置()
{
Serial.begin(9600);
lcd.begin(16,2);
引脚模式(限位开关,输入);
引脚模式(限位开关2,输入);
}
void循环()
{
int val1=数字读取(限位开关);
int val2=数字读取(限位开关2);
lcd.clear();
if(val1!=state1 | | val2!=state2)
{
state1=val1;
state2=val2;
if(state1==0&&timerRunning==0)
开始时间=毫秒();
timerRunning=1;
if(state2==0&&timerRunning==1)
endTime=millis();
timerRunning=0;
持续时间=结束时间-开始时间;
durationFloat=(浮动)持续时间;
所需时间=持续时间浮动/1000;
速度=厘米/所需时间;
lcd.setCursor(0,0);
lcd.打印(“速度:”);
打印(速度);
lcd.setCursor(0,1);
串行打印(“速度单位为m/s=”);
序列号println(velocity,7);
//lcd.print(“速度”);lcd.print(速度);
延迟(1000);
}
}

您似乎正在使用插脚1,但arduino中的插脚0和1专用于您正在使用的串行。

您是否先尝试了一个示例来检查接线是否正确?我投票关闭这个问题,因为这是一个接线问题,而不是编程问题。我已使用示例程序进行了检查,效果良好。是的。我已更改它和我把lcd.print放在循环的开头。现在工作正常。谢谢。