帮我设计arduino一个包含按键开关和模拟温度的两个输出两个输入的实验
时间: 2025-06-22 11:46:55 浏览: 16
### Arduino 实验设计
#### 设计概述
本实验旨在通过Arduino实现一个简单的控制系统,该系统能够接收来自按键开关和模拟温度传感器的输入信号,并控制两个输出设备的工作状态。此项目可以用于学习基本的I/O接口编程及硬件电路连接。
#### 所需材料清单
- Arduino Uno R3 开发板[^2]
- 按键开关 × 1
- 模拟温度传感器(如TMP36)× 1
- LED灯或继电器模块等作为输出设备 × 2
- 面包板及其配套跳线若干根
#### 硬件连接说明
按照下述方式将各组件接入到Arduino上:
| 组件 | 接口 |
| -- |
| 按键一端接地(GND),另一端接到数字引脚D2并串联电阻至VCC (+5V)|
| 温度传感信号线(Signal Pin)连入模拟通道A0;电源(Vcc)接+5V;地(Gnd)接地 |
| 第一个LED正极经限流电阻后连接至PWM引脚D9负极接地 |
| 第二个LED同样处理后连接至另一个PWM引脚D10 |
请注意,在实际搭建过程中应仔细核对每种元件的具体电气规格以确保安全可靠运行[^3]。
#### 软件部分 - 示例代码
下面给出一段完整的C/C++源码来完成上述功能描述的任务:
```cpp
const byte buttonPin = 2;
const byte tempSensorPin = A0;
// 定义两个输出引脚编号
const byte outputOnePin = 9;
const byte outputTwoPin = 10;
void setup(){
// 初始化串行通信波特率为9600bps以便调试打印数据
Serial.begin(9600);
// 设置按钮为输入模式,默认内部拉高
pinMode(buttonPin, INPUT_PULLUP);
// 将两个输出设置成低电平初始态
pinMode(outputOnePin, OUTPUT);
digitalWrite(outputOnePin, LOW);
pinMode(outputTwoPin, OUTPUT);
digitalWrite(outputTwoPin, LOW);
}
void loop(){
static unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
int reading = digitalRead(buttonPin);
float temperature = getTemperature();
if ((millis() - lastDebounceTime) > debounceDelay){
if (reading == LOW){ // 当按下按钮时触发动作
toggleOutputs();
lastDebounceTime = millis();
}
}
// 显示当前读数于串行监视器中
Serial.print("Button State:");
Serial.println(digitalRead(buttonPin));
Serial.print("Temperature Value:");
Serial.println(temperature);
delay(100);
}
float getTemperature(){
int sensorValue = analogRead(tempSensorPin);
float voltage = sensorValue * (5.0 / 1024.0);
return (voltage - 0.5) * 100; // TMP36公式转换摄氏度
}
void toggleOutputs(){
bool stateOne = !digitalRead(outputOnePin);
bool stateTwo = !digitalRead(outputTwoPin);
digitalWrite(outputOnePin,stateOne );
digitalWrite(outputTwoPin,stateTwo );
}
```
这段程序实现了如下逻辑:当检测到按键被按下的时候会切换两个输出的状态;同时每隔一段时间获取一次温度值并通过串行端口发送出来供观察者查看。这里假设使用的温度传感器型号为TMP36,其电压与温度之间的关系遵循特定算法计算得出最终结果[^1]。
阅读全文
相关推荐




















