arduino初学小白必看(进阶2)

学习arduino的进阶教学2。
与上一节相关,可以去看看博主的上一篇博文。

arduino进阶

序列埠输出

选择DigitalReadSerial,然后根据注释以及自己的设计调整数据。
序列埠输出
附上代码


int pushButton = 7; //我们按钮会用脚位7,所以假设代数pushButton,令该代数为7
int buttonState =0//假设代数buttonState为按钮状态,先令为0
 
void setup() {
  Serial.begin(9600); //开始与电脑的连接窗口,定传输速率为9600
  pinMode(pushButton, INPUT); //将7号脚位作为输入(即侦测器)
}

void loop() {
  buttonState = digitalRead(pushButton); //从7号脚位侦测到按钮状况(1 or 0 有按或没按),把结果给buttonState
  Serial.println("hi~~"); //ln为换行字符,根据需要自己改动。
  Serial.println(buttonState); //让序列埠出状况!!!
  delay(1);     //括号内是时间,现在设定的是1ms
}

当上传后,点击序列埠(也就是这个像放大镜一样的按键)。
序列埠
接下来根据我们设定好的传输速率,把序列埠右下角的传输速率改成我们设定好的。
传输速率
如果说决定有点多,试着加上if条件,这样子会好一点,按一次按钮跳出一个hi~~1.


int pushButton = 7; //我们按钮会用脚位7,所以假设代数pushButton,令该代数为7
int buttonState =0//假设代数buttonState为按钮状态,先令为0
int beforeState =0; //假设之前的状态
void setup() {
  Serial.begin(9600); //开始与电脑的连接窗口,定传输速率为9600
  pinMode(pushButton, INPUT); //将7号脚位作为输入(即侦测器)
}

void loop() {
  buttonState = digitalRead(pushButton); //从7号脚位侦测到按钮状况(1 or 0 有按或没按),把结果给buttonState
  if(buttonState==1 and beforeState==0){
  Serial.println("hi~~")
  Serial.println(buttonState); //让序列埠出状况!!!
  }
  beforeState=buttonState;
  delay(1);       
}

制作计数器

为了实现计数,引入了presstime。


int pushButton = 7; //我们按钮会用脚位7,所以假设代数pushButton,令该代数为7
int buttonState =0//假设代数buttonState为按钮状态,先令为0
int beforeState =0; //假设之前的状态
int presstime =0; //假设按下的次数

void setup() {
  Serial.begin(9600); //开始与电脑的连接窗口,定传输速率为9600
  pinMode(pushButton, INPUT); //将7号脚位作为输入(即侦测器)
}

void loop() {
  buttonState = digitalRead(pushButton); //从7号脚位侦测到按钮状况(1 or 0 有按或没按),把结果给buttonState
  if(buttonState==1 and beforeState==0){
    presstime=presstime+1;
  Serial.println("hi~~");
  Serial.println(presstime); //让序列埠出状况!!!
  }
  beforeState=buttonState;
  delay(1);       
}

这个是现在写好的代码,上传后会实验会发现有机械误差,因此为了消除误差,就需要用到Debounce。

Debounce简介

因为物理元件的特性及人为操作的影响,按钮会在按下去的时候跳动,也就是bounce,为了消除影响,也就是debounce,我们需要对一定时间差内的bounce进行消除,也就是将一个时间差里面的bounce看作是一次。
debounce

计数器代码

int pushButton = 7; //我们按钮会用脚位7,所以假设代数pushButton,令该代数为7
int buttonState =0//假设代数buttonState为按钮状态,先令为0
int beforeState =0; //假设之前的状态
int presstime =0; //假设按下的次数

void setup() {
  Serial.begin(9600); //开始与电脑的连接窗口,定传输速率为9600
  pinMode(pushButton, INPUT); //将7号脚位作为输入(即侦测器)
}

void loop() {
  buttonState = digitalRead(pushButton); //从7号脚位侦测到按钮状况(1 or 0 有按或没按),把结果给buttonState
  if(buttonState==1 and beforeState==0){
    presstime=presstime+1;
  Serial.println("hi~~");
  Serial.println(presstime); //让序列埠出状况!!!
  }
  if(buttonState!=beforeState){
      delay(20); //将20ms看作bounce的时间差
  }
  beforeState=buttonState;
  delay(1);       
}

debounce的时间差根据个人需求自己更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值