小的时候过生日,长辈们有的时候会送一些遥控小汽车,哪怕是到了高中也不明白其中的道理,到了大学,了解了一部分硬件知识,我已经有所理解了。
所以今天我要做的实验就是PS2操纵杆实验。还是先上代码。
const int xPin=A0;
const int yPin=A1;
const int swPin=7;
void setup() {
// put your setup code here, to run once:
pinMode(swPin,INPUT);
digitalWrite(swPin,HIGH);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("X:");
Serial.print(analogRead(xPin),DEC);
Serial.print("/tY:");
Serial.print(analogRead(yPin),DEC);
Serial.print("/tZ:");
Serial.println(digitalRead(swPin));
delay(100);
}
首先还是对用到的变量进行定义,包括xPin,yPin和swPin(我看接线那上面写的sw,我查的是按钮的意思)。因为这个操作杆是一个二维的,所以有x轴和y轴,也就是这里的xPin和yPin,并且分别接在A0和A1引脚。这里的swPin主要就是按下时Z=0的坐标也会显示出来。
在setup函数中呢,我们将swPin所在的引脚设置为输入模式,并将其改为高电平。(这里的话应该就是不按下不反应,按下才反应)。然后再设置一个串口监视器。
在loop函数中,我们主要目的就是通过串口监视器来监视xPin和yPin的变化并将它们在串口监视器中打印出来。为了显示出来数字,这里用的时analogRead而不是digitalRead,本指令用于从Arduino的模拟输入引脚读取数值。Arduino控制器有多个10位数模转换通道。这意味着Arduino可以将0-5伏特的电压输入信号映射到数值0-1023(太极创客上面查的)。这也就解释了为什么串口监视器上面x和y的值有界限。然后就是监视z的状态,因为不用测swPin的数值,只用测高低电平,所以用digitalRead。最后延时0.1s。
到这里我们可以畅想一下。用if语句,如果x轴的数据或者y的数据大于某个值,就可以执行下一个程序,是不是就可以操作一系列的东西呢?比如我上一个实验,如果我把光敏传感器和声音传感器改用PS2操作感,让x>600的时候灯亮,或是一些其他的值,是不是于我而言的另一种创新呢?
创作不易,感谢点赞,关注,收藏!!!