4.14-4.21arduino实操与总结

文章介绍了如何使用布尔运算、逻辑表达式(如if-else和&&、||)以及模拟输出(analogWrite)在电子硬件中控制LED数码管的显示,包括使用开关、数码管驱动和自定义函数实现特定功能。
摘要由CSDN通过智能技术生成
逻辑控制
2-逻辑表达式

if (sensorVal ==HIGH) {    //(sensorVal == HIGH)为逻辑表达式,结果只有真(1)或假(0)

  digitalWrite(13,LOW);    //为真,运行这一段

} else {

  digitalWrite (13,HIGH);    //为假,运行这一段

}

3-1布尔运算

boolean pushButton;   //创建布尔型变量
void setup() {
  pinMode(2,INPUT_PULLUP);
  pinMode(13,OUTPUT);
}

void loop(){
  pushButton=digitalRead(2);   //读取引脚2的电频状态赋值给布尔变量。

if (pushButton) {

  digaitalWrite(13,HIGH);   //点亮LED
  } else {
    digitalWrite(13,LOW);  

}

代码实现:开关断开时,引脚2为高电平,pushButton等于1,逻辑表达式为真,LED亮;反之,熄灭

通过布尔型变量实现对led的控制

3-2逻辑运算符&&、||、!

以&&(与)为例,在上一段代码的基础上,创建一个新的布尔型变量pushButton2,设置8号引脚为输入上拉模式,逻辑表达式改为( ! pushButton1 && ! pushButton2)可实现如视频所示效果。即当pushButton1和pushButton2都为假时(两开关都按下),led才会亮。

逻辑“与”控制LED亮暗

猜数字
1-LED数码管

1位8段共阴极LED数码管(可分为八段)

2-while

void setup() {                                                          
  pinMode(3,OUTPUT);                                  
  pinMode(4,OUTPUT);                                    
  pinMode(5,OUTPUT);                                    
  pinMode(6,OUTPUT);                                  
  pinMode(7,OUTPUT);                                   
  pinMode(8,OUTPUT);                              
  pinMode(9,OUTPUT);                                   
}

可以用while循环语句实现上述代码得到相同的运行效果:

void setup() {

int pinNumber = 3;

while (pinNumber <= 9) {

  pinNumber(pinNumber,OUTPUT);

  pinNumber = pinNumber + 1;

}

}

3-switch case语句

void loop() {                                       
int myNumber = 1;    //修改数字,使显示不同数字          
if (myNumber == 1) {    //显示1                            
  digitalWrite(4,HIGH);                                       
  digitalWrite(7,HIGH);                                          
  delay(500);                                                   

//.....清理内容                                              

}  else if(myNumber == 2){   //显示2                                                     
  ...}                                                             

这段代码可实现让数码管持续显示赋值给myNumber的数字,过多的else if过于繁琐,使用switch case语句可实现相同效果:
void loop(){
int myNumber = 1;
switch(myNumbr) {   //判断myNumber等于哪个值
case 1:  //显示1    //myNumber=1时
  digitalWrite(4,HIGH);
  digitalWrite(7,HIGH);
  break;  //跳出该段程序
case 2:  //显示2
  ...
  break;
case 3:

  ...
default:     //myNumber !=1或2或3时,数码管显示的数字,自定义(不做要求)
  .....        //加不加break都一样,都会跳出switch
}
delay(500);
//清理上一次显示内容  //非常关键       
delay(500);
}                                   

4-自定义函数 
  • 无参数

在loop{}外
void displayClear(){   //没有参数,故()内为空
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);

需要调用时,在需要的位置写displayClear();即可     //一定不要忘记()  

  • 有参数

switch(ledNumbr) {   //注意此处的变量名称要与参数名称相同
case 1:  
  digitalWrite(4,HIGH);
  digitalWrite(7,HIGH);
  break; 
case 2:  

  ...
  break;

case 3:
   ...

default:    
  ...     
 }
}   
需要调用时,在需要的位置写displayNumber(myNumber);即可 //此处参数名与loop()函数内给定的要相同  

  • 有参数有返回值

int getRandomNumber(int minNumber,int maxNumber) {

int randomNumber;
randomNumber = random(minNumber,maxNumber);
return randomNumber;
}     //该自定义函数运行效果与random函数相同
调用该函数时,把它当成random函数即可,用法相同,只是名称不同
 

5-完成代码

可在太极创客官网下载查看:

lesson 19:

数码管持续显示0-9,按下开关,显示d

lesson 24:

猜数字

模拟输出
1-analogWrite
boolean pushButton1;   // 创建布尔型变量用来存储按键开关1的电平状态
boolean pushButton2;   // 创建布尔型变量用来存储按键开关2的电平状态
int ledPin = 9;        //LED引脚号
int brightness = 128;  //LED亮度参数

void setup() {
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
  pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式
  pinMode(ledPin, OUTPUT);  //将LED引脚设置为输出模式
  Serial.begin(9600);      //启动串口通讯
}

void loop() {
  // put your main code here, to run repeatedly:
  pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
  pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量
  
  if (!pushButton1 && brightness > 0){     // 当按下按键开关1并且LED亮度参数大于0
    brightness--;                          // 减低LED亮度参数
  } else if (!pushButton2 && brightness < 255) {  //当按下按键开关2并且LED亮度参数小于255
    brightness++;                                 //增加LED亮度参数
  }
  analogWrite(ledPin, brightness);         //模拟输出控制LED亮度
  Serial.println(brightness);              //将LED亮度参数显示在串口监视器上
  delay(10);
}

代码运行效果如视频所示:

analogWrite()模拟输出

  • 36
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值