查看: 146|回复: 1

[未解决] 这个程序该怎么改动

[复制链接]

该用户从未签到

发表于 2022-8-5 15:25 | 显示全部楼层 |阅读模式
int inpin1 = 13; //定义数字13接口
int val;//定义变量val
int buttonState1 = 0; //按键初始值为0
int beforeState1 = 0; //检测上一次按下是否松开
int k = 0;  //光标位置
int j = 0;  //光标位置
short i = 1;
void setup() {
  Serial.begin(9600);
     pinMode(inpin1, INPUT); //定义按键接口为输入接口
  for (int yinjiao = 2; yinjiao < 13; yinjiao++)
  {
    pinMode(yinjiao, OUTPUT);
    digitalWrite(yinjiao, HIGH);
  }
}
void loop() {
  val = digitalRead(inpin1); //读取数字13口电平值赋给val
    buttonState1 = digitalRead(inpin1); //读取按键状态
  if (buttonState1 == 1 and beforeState1 == 0) //如果按键按下并且上一次按下松开
  {
    switch (k)
    {
      case 1:
        k = 0;
        break;
      case 0:
        i++;
        break;
    }
  }
  if (buttonState1 != beforeState1) //消抖
  {
    delay(20);
  }
  beforeState1 = buttonState1;
  Serial.println(i);
  if (i >= 2 < 13)
  {
    digitalWrite(i, LOW);
  }
  else
  {
    i = 1;
  }
}
-----------------------------------------------------------------------------------
上面是一个按键依次让(2-12)12个口低电平模式的程序。只能一直开下去,我想按键按到12下后
(2-12)口开始反转变为高电平。请问大神们,我该怎么改呢?谢谢啦

该用户从未签到

发表于 2022-8-9 11:49 | 显示全部楼层

回帖奖励 +10 金币

说实话没太看懂你的代码,但按照你说的意思,你应该用个计数就行了呀?类似:
最开始 i = 1;
  1. if(按钮被按下)
  2. {
  3. i++;
  4. digitalWrite(i, LOW);
  5. }
  6. if (i == 12)
  7. {
  8. i = 1;
  9. 全部恢复高电平(用你setup里面的那个就行)
  10. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Arduino IDE助手,【支持中文代码】和自动完成
Arduino IDE助手,【支持
最近在学习arduino,发现代码框不支持自动完成列表,故做了这个辅助编辑器。支持中文
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
【花雕动手做】有趣好玩音乐可视化(14)---水杯水瓶灯
【花雕动手做】有趣好玩音
偶然心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较
求大佬指导气流传感器怎么编代码呢
求大佬指导气流传感器怎么
新手求助!端口不显示的问题
新手求助!端口不显示的问
我的板子连到电脑上没有显示端口,试过安装ch340和驱动精灵都识别不出来,数据线也换
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表