|
楼主 |
发表于 2022-8-25 11:23
|
显示全部楼层
上面代码不知咋的连起来了,重新发一下
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
LiquidCrystal_I2C lcd(0x27,16,2); //将LCD地址设置为0x27以显示16个字符和2行
int photoPin = A0; //定义传感管脚
unsigned long start;
unsigned long whole; //定义两个时间变量
float a = 0;
float b = 0;
int value = 0;
void setup()
{
// set prescale to 16
sbi(ADCSRA,ADPS2) ;
sbi(ADCSRA,ADPS1) ;
sbi(ADCSRA,ADPS0) ;
lcd.init();
lcd.backlight();
pinMode(photoPin, INPUT);
Serial.begin(9600); //开串
lcd.setCursor(0, 0); // 转到第一行开头
lcd.print("The Speed is: ");
}
void loop()
{
while ( analogRead(photoPin) > 500){};
start = micros() ; //记录起始点时间
while ( analogRead(photoPin)< 500){}; //等待物体离开
whole = micros(); //记录结束时间
a = (whole - start) / 1000;
b = 38.8/a; // 速度计算公式
lcd.setCursor(0, 1); //转到第二行开头
lcd.print(b); //LCD 屏幕显示速度
lcd.print(" m/s"); //LCD串口显示速度单位
delay(500);
} |
|