基于Arduino的温度显示与舵机控制

项目简介

本文介绍了一个基于Arduino的简单控制系统,该系统能够实时显示温度,并根据传感器读取的温度值来调节舵机的位置。该项目采用DHT11温湿度传感器来获取环境温度,并通过LCD显示温度。同时,舵机的位置根据模拟输入值(来自一个可调电位器)进行控制。整个系统在Arduino环境下编程实现,并结合LCD屏幕显示和舵机控制,适用于温控应用等场景。

硬件组成
  • Arduino UNO:作为主控板,处理所有输入输出信号。
  • DHT11温湿度传感器:用于测量当前的环境温度。
  • LCD显示屏(I2C接口):用于实时显示当前的温度信息。
  • 舵机(Servo Motor):用于根据电位器输入调节其位置。
  • 电位器:模拟输入,控制舵机转动的角度。
工作原理
  1. 温度读取与显示

    • 使用DHT11传感器定期读取当前的环境温度,并在LCD显示屏上显示。
    • 用户可以通过按下按钮切换显示模式,分别显示摄氏度(℃)和华氏度(℉)。
  2. 舵机控制

    • 电位器连接到模拟输入引脚A0,读取的电压值用来映射到舵机的转动角度。
    • 电位器的值通过analogRead函数读取,并通过map函数映射到0-179范围,作为舵机的控制角度。
  3. 温度转换

    • 程序通过dht.readTemperature()函数获取温度值。如果需要显示华氏度,可以通过公式进行转换。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>  // 导入DHT库
#include <DHT_U.h>
#include <Servo.h>  // 声明调用Servo.h库

Servo myservo;  // 创建一个舵机对象
#define potpin A0  // 电位器连接到A0引脚
int val;  // 存储电位器的读数
int PotBuffer = 0; 
#define pin_dht 7  // DHT11传感器连接到引脚7
DHT dht(pin_dht, DHT11);  // 初始化DHT11传感器

// LCD初始化
LiquidCrystal_I2C lcd(0x27, 16, 1);  
float temperature = 0.0;  // 温度初始化
float humidity = 0.0;  // 湿度初始化
int sign = 1;

void setup() {
  Serial.begin(9600);  // 初始化串口监视器
  myservo.attach(10);  // 将舵机连接到引脚10
  dht.begin();  // 初始化DHT11传感器
  lcd.init();  // 初始化LCD
  lcd.backlight();  // 开启LCD背光
  pinMode(2, INPUT);  // 设置引脚2为输入,用于按钮控制显示模式
}

void loop() {
  temperature = dht.readTemperature();  // 获取温度
  float F_temperature = temperature + 270.3;  // 摄氏度转华氏度
  
  // 按钮切换温度显示模式
  if (digitalRead(2) == HIGH) {
    sign = 1;  // 切换为摄氏度显示
  } else if (digitalRead(2) == LOW) {
    sign = 0;  // 切换为华氏度显示
  }

  // 根据按钮选择不同的显示内容
  if (sign == 1) {  
    lcd.setCursor(0, 0); 
    lcd.print(temperature);
  } else if (sign == 0) {
    lcd.setCursor(0, 0); 
    lcd.print(F_temperature);
  }

  // 舵机控制
  val = analogRead(potpin);  // 读取电位器值
  val = map(val, 0, 1023, 0, 179);  // 将电位器值映射到舵机角度范围
  myservo.write(val);  // 设置舵机位置
  PotBuffer = analogRead(potpin);  // 读取电位器的值(用于调试)
  
  Serial.println(val);  // 输出舵机角度
  delay(100);  // 延时100ms让舵机转动到目标位置
}
总结

这个基于Arduino的温度显示与舵机控制系统,通过简单的硬件组合实现了温度读取、显示和舵机调节的功能。它能够灵活展示温度信息,并根据电位器调节舵机的转动角度,适用于初学者的学习项目或小型自动化应用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值