触摸屏幕与温度传感器项目全解析
立即解锁
发布时间: 2025-08-24 00:49:09 阅读量: 1 订阅数: 4 

### 触摸屏幕与温度传感器项目全解析
#### 1. 触摸屏幕项目
##### 1.1 触摸屏幕键盘项目(Project 34)
- **代码初始化**:
```cpp
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
// Power connections
#define Left 8
#define Bottom 9
#define Right 10
#define Top 11
// Analog connections
#define topInput 0
#define rightInput 1
int coordX = 0, coordY = 0;
```
这里使用 `LiquidCrystal` 库创建 `lcd` 对象,指定了 LCD 的引脚。同时定义了触摸屏幕的引脚,并初始化了 `coordX` 和 `coordY` 用于存储触摸坐标。
- **设置阶段**:
```cpp
void setup() {
lcd.begin(16, 2);
lcd.clear();
}
```
在 `setup` 函数中,初始化 LCD 为 16 列 2 行,并清空显示。
- **主循环**:
```cpp
void loop() {
if (touch()) {
if ((coordX>110 && coordX<300) && (coordY>170 && coordY<360)) {lcd.print("3");}
if ((coordX>110 && coordX<300) && (coordY>410 && coordY<610)) {lcd.print("2");}
if ((coordX>110 && coordX<300) && (coordY>640 && coordY<860)) {lcd.print("1");}
if ((coordX>330 && coordX<470) && (coordY>170 && coordY<360)) {lcd.print("6");}
if ((coordX>330 && coordX<470) && (coordY>410 && coordY<610)) {lcd.print("5");}
if ((coordX>330 && coordX<470) && (coordY>640 && coordY<860)) {lcd.print("4");}
if ((coordX>490 && coordX<710) && (coordY>170 && coordY<360)) {lcd.print("9");}
if ((coordX>490 && coordX<710) && (coordY>410 && coordY<610)) {lcd.print("8");}
if ((coordX>490 && coordX<710) && (coordY>640 && coordY<860)) {lcd.print("7");}
if ((coordX>760 && coordX<940) && (coordY>170 && coordY<360)) {scrollLCD();}
if ((coordX>760 && coordX<940) && (coordY>410 && coordY<610)) {lcd.print("0");}
if ((coordX>760 && coordX<940) && (coordY>640 && coordY<860)) {lcd.clear();}
delay(250);
}
}
```
在主循环中,通过 `touch` 函数检测触摸操作。若触摸发生,根据 `coordX` 和 `coordY` 的值判断触摸位置,进而在 LCD 上显示相应数字或执行 `scrollLCD` 函数或清空显示。
- **触摸检测函数**:
```cpp
boolean touch() {
boolean touch = false;
// get horizontal co-ordinates
pinMode(Left, OUTPUT);
digitalWrite(Left, LOW);
pinMode(Right, OUTPUT);
digitalWrite(Right, HIGH);
pinMode(Top, INPUT);
pinMode(Bottom, INPUT);
delay(3);
coordX = analogRead(topInput);
// get vertical co-ordinates
pinMode(Bottom, OUTPUT);
digitalWrite(Bottom, LOW);
pinMode(Top, OUTPUT);
digitalWrite(Top, HIGH);
pinMode(Right, INPUT);
pinMode(Left, INPUT);
delay(3);
coordY = analogRead(rightInput);
if(coordX < 1000 && coordX > 0 && coordY < 1000 && coordY > 0) {touch = true;}
return touch;
}
```
`touch` 函数通过设置引脚的输入输出状态,读取模拟值获取触摸的 `X` 和 `Y` 坐标。若坐标在有效范围内,则判定为触摸发生。
- **滚动显示函数**:
```cpp
void scrollLCD() {
for (int scrollNum=0; scrollNum<16; scrollNum++) {
lcd.scrollDisplayLeft();
delay(100);
}
lcd.clear();
}
```
`scrollLCD` 函数通过循环 16 次,每次向左滚动一位显
0
0
复制全文
相关推荐









