Arduino 按钮随机LED

Arduino按钮控制随机LED

1. 所需硬件

– Arduino Uno控制器
– 5个LED
– 5个220 欧姆电阻
– 1个10k欧姆电阻
– 连接线
– 面包版
– 1个按钮

2.电路图

在这里插入图片描述

注意线路的连接,不要看漏或接错

3.代码

const int redLed = 2;
const int yellowLed = 3;
const int whiteLed = 4;
const int blueLed = 5;
const int greenLed = 6;
const int askButton = 12;

int askButtonState = 0;
int awnser = 0;

void setup() {
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(whiteLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(askButton, INPUT);
}

void loop() {
  askButtonState = digitalRead(askButton);
  if (askButtonState == HIGH) {
    // 关闭所有LED
    digitalWrite(redLed, LOW);
    digitalWrite(yellowLed, LOW);
    digitalWrite(whiteLed, LOW);
    digitalWrite(blueLed, LOW);
    digitalWrite(greenLed, LOW);
    delay(100); // 短暂延迟防抖

    awnser = random(5); // 生成随机答案(0-4)
    switch (awnser) {
      case 0: // no
        digitalWrite(redLed, HIGH);
        delay(1000);
        break;
      case 1: // rather not
        digitalWrite(yellowLed, HIGH);
        delay(1000);
        break;
      case 2: // maybe
        digitalWrite(whiteLed, HIGH);
        delay(1000);
        break;
      case 3: // rather yes
        digitalWrite(blueLed, HIGH);
        delay(1000);
        break;
      case 4: // yes
        digitalWrite(greenLed, HIGH);
        delay(1000);
        break;
    }
  }
}
 

扩展(代码解释)

askButtonState = digitalRead(askButton); :这行代码的作用是读取按钮引脚的电平状态。 digitalRead() 是 Arduino 内置函数,用于获取指定数字引脚的电平( HIGH 表示高电平, LOW 表示低电平),并把这个状态值赋给变量 askButtonState ,这样程序就能知道按钮当前是被按下还是未被按下。

  • if (askButtonState == HIGH) :这是一个条件判断语句。它的作用是判断按钮引脚的电平是否为高电平( HIGH )。通常在按钮电路中,如果按钮被按下,电路会发生变化,使得连接按钮的引脚电平变为高电平,当检测到这个高电平(即 askButtonState == HIGH 成立)时,就会执行 if 语句块里的代码,一般是触发相应的功能(比如之前代码里的随机点亮 LED 等操作)。

解释 random() 函数

random() 是 Arduino 内置的生成随机数的函数,有以下两种常用形式:

  • random(max) :生成一个范围在 0 (包含)到 max (不包含)之间的随机整数。例如 random(5) ,会生成 0 、 1 、 2 、 3 、 4 中的一个随机数,这在之前的代码里用于随机选择点亮不同的 LED。
  • random(min, max) :生成一个范围在 min (包含)到 max (不包含)之间的随机整数。比如 random(1, 10) ,会生成 1 到 9 之间的随机整数。

在使用 random() 函数前,通常会用 randomSeed(analogRead(0)) (如之前代码所示)来初始化随机数生成器, analogRead(0) 读取模拟引脚 A0 的随机电压值作为种子,这样可以让每次生成的随机数更具随机性,避免重复的随机序列。

成品

VID20251108162845

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值