爱瞌睡的盾 发表于 2015-8-7 22:32:07

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

{: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, 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, LOW);
}
}
void changeLED() {
for (int x=0; x<8; x++) {   //关闭所有灯
    digitalWrite(ledPin, LOW);
}
digitalWrite(ledPin, 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;

darkorigin 发表于 2015-8-8 18:46:00

设置一个变量作为开关
按键的时候则改变开光量

循环里面直接判断 如果开关量是0就退出循环。

darkorigin 发表于 2015-8-8 18:46:46

复杂的可以用中断。。。。外部按键作为一个硬件中断 中断后改变开关变量

爱瞌睡的盾 发表于 2015-10-6 18:21:07

还是有点不懂,我刚学单片机,是小白一枚
页: [1]
查看完整版本: ARDUINO新手——(跑马灯)求上触点、下触点开关怎么写程序