Arduino。7
1.按键控制
其中一个重点的是 INPUT 和INPUT_PULLUP的区别
按键要设置INPUT_PULLUP这除了输入之外,会激活内部上拉电阻,因为要接受按键下按的信号,默认会是高电平,所以按下得到的信号应该是LOW。
2.dht11
#include <DHT11.h> // 假设你安装的是这个库
#include <LiquidCrystal_I2C.h>
// 如果你的 LCD 地址不是 0x27,请改为扫描到的地址(如 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// 创建 DHT11 对象,必须在创建时传入引脚号
#define DHT11PIN 8
DHT11 dht(DHT11PIN); // 正确:构造函数需要引脚参数
void setup() {
Serial.begin(9600); // 可选,用于调试
lcd.init();
lcd.backlight();
lcd.print("Initializing...");
delay(2000); // 等待传感器稳定
lcd.clear();
}
void loop() {
// 读取温湿度(假设返回值为 int,失败时返回 -1 或其他特殊值)
int humidity = dht.readHumidity();
int temperature = dht.readTemperature();
// 检查读取是否成功(请根据实际库的返回值调整判断条件)
// 如果库返回 -1 表示失败,则用下面的判断;如果返回其他值,请修改
if (humidity == -1 || temperature == -1) {
lcd.setCursor(0, 0);
lcd.print("Sensor Error ");
lcd.setCursor(0, 1);
lcd.print("Check wiring ");
} else {
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("% "); // 加空格清除前次残留
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C ");
}
delay(2000); // DHT11 最小间隔 1 秒
}

Arduino IDE 有一个示例的功能,我一开始一直都不知道,直到dht11一直出错,最后通过示例写出正确的代码。
3.超声波传感器

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //设置LCD1602设备地址0x27
const int TrigPin = 8;//定义超声波的Trig(控制)口
const int EchoPin = 9;//定义超声波的echo(接收)口
float distance;//定义距离变量
void setup() {
lcd.init();
lcd.backlight();
lcd.print("Waiting......");
delay(1000);
pinMode(TrigPin,OUTPUT);
pinMode(EchoPin,INPUT);
}
void loop() {
digitalWrite(TrigPin,LOW);
delayMicroseconds(2);
digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin,LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00; // 检测脉冲宽度,把测得的距离赋值给distance变量
lcd.setCursor(0,0);
lcd.print("distance: ");
lcd.setCursor(5,1);
lcd.print(distance);
lcd.print("cm");
}
传感器需要让Trig引脚至少输出一个10us(微秒)的高电平脉冲,传感器收到信号之后,会自动发射一组40kHz的超声波,超声波发射的同时Echo引脚拉高即为高电平,开始计时。当检测到反射回来的声波时,再将Echo的引脚拉低(低电平)即停止计时。
pulseIn(EchoPin, HIGH)函数精确读取总时长;
根据s=vt/2;计算时间。
-
pulseIn(EchoPin, HIGH):这是一个内置函数,它会等待Echo引脚变为HIGH,然后开始计时,直到引脚变为LOW,返回高电平持续的微秒数。如果超时(默认1秒),则返回0。 -
时间转距离:声速约为340 m/s,声音从发射到返回经过的路程是距离的2倍。因此:
距离(cm)=时间(µs)×340m/s2×10000=时间(µs)58距离(cm)=2×10000时间(µs)×340m/s=58时间(µs)这里使用
除以 58.00是近似公式,更精确的系数是58.2或58.8,但58.0对一般测量已足够。使用浮点数除法保留小数。
更多推荐

所有评论(0)