2017/1/21 下午
PS2摇杆、LCD及UE的简单使用 from高嘉怡
1.在老师"由简单到复杂“的思想指导下,放弃将PS2摇杆连接可调电位器并在液晶上显示,改为先分别学习摇杆和LCD。只连一个摇杆,在串口监视器中观察x轴、y轴的数值,
观察得最大值为1023。在老师指导下重新接了电路图,发现摇杆中的SW不需要连接任何接口,其中VRx连A0,VRy连A1。要在串口监视其中能观察到数值,
不要忘了在程序中加入Serial.begin(9600)。程序如下:
int xpotPin = 0; //设置模拟口0为X的信号输入端口
int ypotPin = 1; //设置模拟口1为Y的信号输入端口
int xval=0; //设置变量
int yval=0;
void setup()
{
Serial.begin(9600);
pinMode(xpotPin,INPUT);//
pinMode(ypotPin,INPUT);//
delay(1000); //延时1000ms
}
void loop ()
{
xval = analogRead(xpotPin); //xval变量为从0信号口读取到的数值
yval = analogRead(ypotPin); //yval变量为从1信号口读取到的数值
Serial.print("xval:");
Serial.println(xval);
Serial.print("yval:");
Serial.println(yval);
delay(100); //延时0.1秒,这里也就是刷新速度。
}
LCD需注意libries是否装了对应的库LiquidCrystal_I2C,以及位置可能不是示例程序里的0x27,我这个的位置是0x3F。示例里字符显示的位置可能不好,可以在 lcd.setCursor(2,0)的括号里自己改一下位置。
LCD连接时SDA接A4,SCL接A5,后面蓝色的块用螺丝刀可以调它的背光度。
2.摇杆和lcd分别成功后,尝试用lcd显示摇杆每一个轴的电压数字输出,将两个程序的代码接拼一下,代码为:
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,20,4);
// set the LCD address to 0x3F for a 20 chars and 4 line display
int xpotPin = 0; //设置模拟口0为X的信号输入端口
int ypotPin = 1; //设置模拟口1为Y的信号输入端口
int xval=0; //设置变量
int yval=0;
void setup() {
pinMode(xpotPin,INPUT);
pinMode(ypotPin,INPUT);
delay(1000); //延时1000ms
}
void loop() {
xval = analogRead(xpotPin); //xval变量为从0信号口读取到的数值
yval = analogRead(ypotPin); //yval变量为从1信号口读取到的数值
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.clear(); //清屏
lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置
lcd.print("X="); //使屏幕显示文字X=
lcd.print(xval);
lcd.setCursor(7, 0) ; //设置光标位置为第一行第八个位置
lcd.print("Y="); //使屏幕显示文字Y=
lcd.print(yval);
delay(100); //延时0.1秒,这里也就是刷新速度。
}
3.在理解代码时,发现了Language Reference中所有参考的中文版,网址为:
http://www.arduino.cn/thread-12948-1-1.html
4.在将代码复制过程中,发现直接将arduino程序编辑界面中的代码复制过来会导致格式错乱,老师教了如何用UE改文本格式,具体过程如下:
(1)打开UE,将所要修改格式的内容复制到UE界面
(2)按Ctrl+R,跳出”替换“界面
(3)经过思考,确定替换对象,可全部替换,也可选定部分替换
比如将每一行开头的两个空格换成三个空格,则在”查找什么"中输入"^p ",在”替换为“中输入”^p “
其中”^p"代表回车换行
(4)按Ctrl+H切换到字符十六进制内码查看状态,再按一次返回