极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11017|回复: 4

ARDUINO新手——(跑马灯)求上触点、下触点开关怎么写程序

[复制链接]
发表于 2015-8-7 22:32:07 | 显示全部楼层 |阅读模式
{:soso__d899295822927b77-6978430d60b9dc96-77f0cc71f868b2307361e1219ff95464.jpg_1:}
本人纯新手
制作了一个跑马灯,安装了一个开关和一个电位器,原本想按一下开关开始工作(跑马灯开始闪烁,电位器可以调整跑马灯闪烁速度)再按一下开关停止工作(所有发光二极管灭掉),可是不太会这个(按一下)的这个程序,现在只能按住开关停止,松开开关工作,然而并没有什么卵用。
这是我的程序


int inpin=12;//定义数字12 接口
int val;//定义变量val

int ledDelay;
int potPin=A2;
byte ledPin[ ] = {2, 3, 4, 5, 7, 8, 9, 10,};     //以LED引脚创建数组
int dir = 1;
int currentLED = 0;
unsigned long changeTime;
void setup() {
   pinMode(12,INPUT);                 //将12号数字口设置为输入状态
    for (int x=0; x<8; x++)    //设置所有引脚为输出模式
    {
      pinMode(ledPin[x], OUTPUT);
    }
    changeTime = millis();
}
void loop()  
{      
  val=digitalRead(inpin);                  //读取数字12 口电平值赋给val
if (val==LOW)                             //检测按键是否按下,按键按下时小灯亮起
  {  if((millis() - changeTime) > ledDelay)    //如果过了ledDelay毫秒,执行以下程序
  {
    changeLED();
    changeTime = millis();
  }
  ledDelay=analogRead(potPin);//读出模拟引脚的0至5V的电压。
}
else
     for (int x=0;x<8;x++ ) {            // 关闭所有灯
     digitalWrite(ledPin[x], LOW);
  }
}  
void changeLED() {  
  for (int x=0; x<8; x++) {   //关闭所有灯
    digitalWrite(ledPin[x], LOW);
  }
digitalWrite(ledPin[currentLED], HIGH);    //开一个灯
currentLED+=dir;
if (currentLED == 8) {currentLED = 0;}
}

连接电路通过程序以及很明显看出来了,我用了2, 3, 4, 5, 7, 8, 9, 10几个端口(跑马灯);还有12端口用来输入开关的信号;还用了A2开玩电位器(不知道可不可以说成一个滑动变阻器)我了解到我想要的这种功能称之为上触发(不松手立刻触发)或者下触发(松手后再触发),可是不会编程,求高人指点
回复

使用道具 举报

发表于 2015-8-8 17:59:41 | 显示全部楼层
给你个小提示:a = !a;
回复 支持 反对

使用道具 举报

发表于 2015-8-8 18:46:00 | 显示全部楼层
设置一个变量作为开关
按键的时候则改变开光量

循环里面直接判断 如果开关量是0就退出循环。
回复 支持 反对

使用道具 举报

发表于 2015-8-8 18:46:46 | 显示全部楼层
复杂的可以用中断。。。。外部按键作为一个硬件中断 中断后改变开关变量
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-6 18:21:07 | 显示全部楼层
还是有点不懂,我刚学单片机,是小白一枚
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 13:42 , Processed in 0.045489 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表