2401_83518003 2024-03-26 11:58 采纳率: 33.3%
浏览 3
已结题

一直不太懂这些东西,想知道怎么写,慢慢理解。

1) 开发板上电后开始D1-D4四盏灯全灭。D5-D8全亮;

  1. 当第1次按下"K4"键,D1灯亮;

  2. 当第2次按下"K4"键,D1、D2灯亮;

  3. 每按下“K4”键一次,灯亮的个数加1;直到D1-D4四盏灯全亮;

  4. 再次按下"K4"键,D1-D4四盏灯全灭,重新回到初始状态循环运行。

  • 写回答

1条回答 默认 最新

  • 关注

    2401_83518003 上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    根据题目描述,我们需要实现一个功能,在按下开发板上的按键K4时,控制四盏灯(D1-D4)的亮灭状态。具体流程如下:

    1. 开发板上电后,将D1-D4四盏灯全部关闭,将D5-D8四盏灯全部打开。

    2. 当按下第一次按键K4时,只有D1灯亮

    3. 当第二次按下按键K4时,D1和D2两盏灯同时亮

    4. 每按下一次按键K4,亮灯的数量就增加1,直到D1-D4四盏灯全部亮起为止。

    5. 当再次按下按键K4时,将D1-D4四盏灯全部关闭,重新回到状态1。

    下面是一个可能的解决方案:

    int ledPin[] = {2, 3, 4, 5};  // D1-D4四盏灯的引脚
    int buttonPin = 6;            // 按键K4的引脚
    int ledCount = sizeof(ledPin) / sizeof(ledPin[0]);  // 灯的数量
    
    int buttonState = 0;  // 按键状态,0表示未按下,1表示按下
    int ledIndex = 0;    // 亮灯的数量
    
    void setup() {
      pinMode(buttonPin, INPUT);
      for (int i = 0; i < ledCount; i++) {
        pinMode(ledPin[i], OUTPUT);
      }
    }
    
    void loop() {
      buttonState = digitalRead(buttonPin);
    
      if (buttonState == HIGH) {  // 如果按键被按下
        ledIndex++;  // 亮灯数量加1
    
        if (ledIndex > ledCount) {  // 如果灯的数量超过了总数,重新开始
          ledIndex = 1;
        }
    
        for (int i = 0; i < ledIndex; i++) {  // 亮灯数量的循环
          digitalWrite(ledPin[i], HIGH);
        }
    
        delay(500);  // 延时一段时间,防止按键抖动
      }
    
      // 如果按键未被按下或者按键抖动结束,将所有灯关闭
      for (int i = 0; i < ledCount; i++) {  
        digitalWrite(ledPin[i], LOW);
      }
    }
    

    这段代码使用了一个循环来控制亮灯的数量。在每次按下按键K4时,会将灯的数量加1,并且将相应数量的灯打开。当灯的数量超过总数时,会重新开始从1开始亮灯。如果没有按下按键或者按键抖动结束时,将关闭所有灯。

    希望这个解决方案能够帮助你理解。如果你还有其他问题,请继续提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月26日

悬赏问题

  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的