//第四题,I^2C总线的LCD显示'大'或'工',以及舵机的度数
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// 定义舵机和LCD对象
Servo servo;
LiquidCrystal_I2C lcd(0x27, 16/*行*/, 2/*列*/); // 设置LCD的I2C地址和行列数
void setup() {
// 初始化I2C总线和舵机
Wire.begin();
servo.attach(9); // 将舵机连接到数字引脚9上
// 初始化LCD
lcd.begin(16, 2); // 设置LCD的列数和行数
lcd.setCursor(0, 0);
}
void loop() {
//1.显示'工'或者'大'
lcd.clear();
uint8_t da[8] = {//大的字模,就是画个大上去
0b00000,
0b00100,
0b00100,
0b11111,//上面一横
0b00100,
0b01010,
0b10001,//中间竖线
0b00000,
};
lcd.createChar(3, da);//定义'大'的子模,\x03
lcd.begin(16, 2);//显示位置
lcd.print("\xB4\x03");
//工,同理
delay(5000); // 延迟一段时间以使舵机到达目标角度
//2.显示度数
// 从0度到180度逐步增加舵机角度
for (int angle = 0; angle <= 180; angle++) {
servo.write(angle); // 设置舵机角度
lcd.setCursor(0, 1);
lcd.print(" "); // 清空LCD第二行
lcd.setCursor(0, 1);
lcd.print(angle); // 在LCD第二行打印舵机角度
delay(5); // 延迟一段时间以使舵机到达目标角度
}
// 从180度到0度逐步减小舵机角度
for (int angle = 180; angle >= 0; angle--) {
servo.write(angle); // 设置舵机角度
lcd.setCursor(0, 1);
lcd.print(" "); // 清空LCD第二行
lcd.setCursor(0, 1);
lcd.print(angle); // 在LCD第二行打印舵机角度
delay(5); // 延迟一段时间以使舵机到达目标角度
}
}