找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3236|回復(fù): 5
收起左側(cè)

請(qǐng)問(wèn)哪位大俠會(huì)arduino UNO,能幫忙實(shí)現(xiàn)一下暫停功能嗎?下面是基本代碼。

[復(fù)制鏈接]
ID:405111 發(fā)表于 2018-10-3 16:47 | 顯示全部樓層 |閱讀模式
2黑幣
#include<stdlib.h>
int a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
int p=9;
int d4=13;
int d3=12;
int d2=11;
int d1=10;
long n=0;
int x=100;
int del=2000;
const int buttonPin1 = 1;
const int buttonPin2 = 0;
int buttonState1 = 0;
int buttonState2 = 0;
void setup()
{
  pinMode(a,OUTPUT);
  pinMode(b,OUTPUT);
  pinMode(c,OUTPUT);
  pinMode(d,OUTPUT);
  pinMode(e,OUTPUT);
  pinMode(f,OUTPUT);
  pinMode(g,OUTPUT);
  pinMode(p,OUTPUT);
  pinMode(d4,OUTPUT);
  pinMode(d3,OUTPUT);
  pinMode(d2,OUTPUT);
  pinMode(d1,OUTPUT);
  pinMode(buttonPin1,INPUT);
  pinMode(buttonPin2,INPUT);
}
void loop()
{
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);

if(buttonState1 == 0){              //復(fù)位鍵此處程序開(kāi)始

  clearLEDs();
  pickDigit(1);
  pickNumber((n/x/600)%10); //(n/x/600)%10
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(2);
  pickNumber((n/x/60)%10); //(n/x/60)%10
  delayMicroseconds(del);                           

  clearLEDs();
  pickDigit(3);
  dispDec(3);
  pickNumber(n/x/10%6); //n/x/10%6
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(4);
  pickNumber(n/x%10); //n/x%10
  delayMicroseconds(del);  
  n++;
  }

else {
      n=0;
}

if(buttonState2 == 1){    //buttonState2作暫停功能


     這里應(yīng)該怎么寫(xiě)???




}
}
void pickDigit(int x)
{
  digitalWrite(d1,LOW);
  digitalWrite(d2,LOW);
  digitalWrite(d3,LOW);
  digitalWrite(d4,LOW);

  switch(x)
  {
    case 1:
      digitalWrite(d1,HIGH);
      break;
    case 2:
      digitalWrite(d2,HIGH);
      break;
    case 3:
      digitalWrite(d3,HIGH);
      break;
    default:
      digitalWrite(d4,HIGH);
      break;
  }
}
void pickNumber(int x)
{
  switch(x)
  {
    default:
      zero();
      break;
    case 1:
      one();
      break;
    case 2:
      two();
      break;
    case 3:
      three();
      break;
    case 4:
      four();
      break;
    case 5:
      five();
      break;
    case 6:
      six();
      break;
    case 7:
      seven();
      break;
    case 8:
      eight();
      break;
    case 9:
      nine();
      break;
  }
}
void dispDec(int x)
{
  digitalWrite(p,LOW);
}
void clearLEDs()
{
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  digitalWrite(p,HIGH);
}
void zero()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,HIGH);
}
void one()
{
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
}
void two()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,HIGH);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,HIGH);
  digitalWrite(g,LOW);
}
void three()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,LOW);
}
void four()
{
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
}
void five()
{
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
}
void six()
{
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
}
void seven()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
}
void eight()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
}
void nine()
{
  digitalWrite(a,LOW);
  digitalWrite(b,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);  
}


回復(fù)

使用道具 舉報(bào)

ID:258566 發(fā)表于 2018-10-3 18:34 | 顯示全部樓層
沒(méi)看懂這是要做什么
回復(fù)

使用道具 舉報(bào)

ID:405111 發(fā)表于 2018-10-3 21:41 | 顯示全部樓層
cccc888 發(fā)表于 2018-10-3 18:34
沒(méi)看懂這是要做什么

這代碼是arduino 實(shí)現(xiàn)秒表的功能,但就是缺少一個(gè)暫停的控制功能。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2018-10-3 21:51 | 顯示全部樓層
//簡(jiǎn)單地,如果這樣實(shí)現(xiàn)

boolean bPause=false;
void loop(){
    buttonState1 = digitalRead(buttonPin1);
    buttonState2 = digitalRead(buttonPin2);

    if(buttonState2 == 1){    //buttonState2作暫停功能。按一次暫停、再按繼續(xù)
        bPause=~bPause;
    }

    if(bPause==true){    //如果bPause,則返回
        return;
    }

    if(buttonState1 == 0){              //復(fù)位鍵此處程序開(kāi)始
        clearLEDs();
        pickDigit(1);
        pickNumber((n/x/600)%10); //(n/x/600)%10
        delayMicroseconds(del);

        clearLEDs();
        pickDigit(2);
        pickNumber((n/x/60)%10); //(n/x/60)%10
        delayMicroseconds(del);                           

        clearLEDs();
        pickDigit(3);
        dispDec(3);
        pickNumber(n/x/10%6); //n/x/10%6
        delayMicroseconds(del);

        clearLEDs();
        pickDigit(4);
        pickNumber(n/x%10); //n/x%10
        delayMicroseconds(del);  
        n++;
    }else {
        n=0;
    }

}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表