數(shù)碼管擴展之:預測下一個數(shù)字

1 圖示

image.png

2 目標一 :產生0-9數(shù)字

image.png

3 目標二: 按鍵 產生隨機數(shù)字

image.png

4 目標三: 預測下一個將要產生的數(shù)字

image.png

5 源碼閱讀


int thisResult;  //存儲按鍵按下以后顯示在數(shù)碼管的數(shù)字。
int nextResult;  //存儲作弊數(shù)字,也就是下一次按鍵按下后即將顯示的數(shù)字。

void setup() {
  pinMode(2, INPUT_PULLUP); //2號引腳上連接有按鍵開關,將2號引腳設置為輸入上拉模式
  int pinNumber = 3;        //設置3-9號引腳為輸出模式
  while(pinNumber <= 9){
    pinMode(pinNumber, OUTPUT);
    pinNumber = pinNumber + 1;
  }
  randomSeed(analogRead(A0)); //為了每一次復位或斷電后產生不同順序的隨機數(shù)字
}

// the loop function runs over and over again forever
void loop() {
  if (!digitalRead(2)){      //讀取2號引腳電平狀態(tài)
    getRandomNumber(0,10);   //用戶按下按鍵后,開始新一次猜數(shù)字游戲
  }
  displayNumber(thisResult); //將猜數(shù)字游戲"結果"顯示在數(shù)碼管中
}

/*
用戶在每一次按下按鍵后,隨機產生的數(shù)字將存儲于nextResult變量中。
而實際顯示在數(shù)碼管上的數(shù)字是thisResult變量。
當thisResult即將顯示在數(shù)碼管前,程序會將下一次顯示的數(shù)字通過
圖形暗示的形式顯示在數(shù)碼管上。具體程序如何顯示暗示圖形,
請參閱displayCheat()函數(shù)說明。
*/
void getRandomNumber(int minNumber, int maxNumber){
  thisResult = nextResult; 
  int i; 
  while(i < 15){
    i = i + 1;
    nextResult = random(0, 10);
    displayRandom();         //顯示隨機圖案,混淆注意力
    delay(50 + i * 10);      //讓隨機圖案顯示時間由快到慢,增加混淆
    displayClear();
  }
  displayCheat(nextResult);  //顯示作弊圖案,用戶可通過此函數(shù)所顯示的圖案
                             //獲知下次按鍵后將要出現(xiàn)在LED數(shù)碼管上的數(shù)字。  
                             //此圖案是在用戶每次按下按鍵后顯示新的數(shù)字
                             //前的最后一次圖案顯示
  delay(500);
  displayClear();
}

//根據(jù)參數(shù)數(shù)值在LED數(shù)碼管上顯示數(shù)字
void displayNumber(int ledNumber){     
  switch(ledNumber){
    case 1:  //顯示1
      digitalWrite(4, HIGH);
      digitalWrite(7, HIGH); 
      break;   
    case 2:  //顯示2
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH); 
      digitalWrite(5, HIGH); 
      digitalWrite(8, HIGH); 
      digitalWrite(9, HIGH); 
      break;   
    case 3:   //顯示3
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH); 
      digitalWrite(5, HIGH); 
      digitalWrite(7, HIGH); 
      digitalWrite(8, HIGH); 
      break;   
    case 4:  //顯示4
      digitalWrite(4, HIGH); 
      digitalWrite(5, HIGH); 
      digitalWrite(6, HIGH); 
      digitalWrite(7, HIGH); 
      break;  
    case 5:  //顯示5
      digitalWrite(3, HIGH);
      digitalWrite(5, HIGH); 
      digitalWrite(6, HIGH); 
      digitalWrite(7, HIGH); 
      digitalWrite(8, HIGH); 
      break;
    case 6:  //顯示6
      digitalWrite(3, HIGH);
      digitalWrite(5, HIGH); 
      digitalWrite(6, HIGH); 
      digitalWrite(7, HIGH); 
      digitalWrite(8, HIGH); 
      digitalWrite(9, HIGH); 
      break;    
    case 7:  //顯示7
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH); 
      digitalWrite(7, HIGH);  
      break;
    case 8:  //顯示8
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH); 
      digitalWrite(6, HIGH); 
      digitalWrite(7, HIGH); 
      digitalWrite(8, HIGH); 
      digitalWrite(9, HIGH); 
      break;
    case 9:  //顯示9
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH); 
      digitalWrite(6, HIGH); 
      digitalWrite(7, HIGH); 
      digitalWrite(8, HIGH); 
      break;
    case 0:  //顯示默認
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(6, HIGH); 
      digitalWrite(7, HIGH); 
      digitalWrite(8, HIGH); 
      digitalWrite(9, HIGH); 
      break;
    default:
        digitalWrite(4, HIGH); 
        digitalWrite(5, HIGH); 
        digitalWrite(7, HIGH); 
        digitalWrite(8, HIGH);  
        digitalWrite(9, HIGH);   
    }
}

//清理顯示內容
void displayClear(){
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW); 
  digitalWrite(6, LOW); 
  digitalWrite(7, LOW); 
  digitalWrite(8, LOW); 
  digitalWrite(9, LOW); 
}

//顯示隨機圖案以混淆注意力
//使作弊圖案顯示時不易察覺。
void displayRandom(){
  int randomPin = random(3,9);
  digitalWrite(randomPin, HIGH);  
}

//顯示作弊圖案。
void displayCheat(int number){
  switch(number){
    case 1:  // 顯示數(shù)字1作弊圖案
      digitalWrite(3, HIGH);
      break;   
    case 2:  // 顯示數(shù)字2作弊圖案
      digitalWrite(6, HIGH); 
      break;   
    case 3:  // 顯示數(shù)字3作弊圖案
      digitalWrite(4, HIGH); ;
      break;   
    case 4:  // 顯示數(shù)字4作弊圖案
      digitalWrite(5, HIGH); 
      break;  
    case 5:  // 顯示數(shù)字5作弊圖案
      digitalWrite(9, HIGH); 
      break;
    case 6:  // 顯示數(shù)字6作弊圖案
      digitalWrite(7, HIGH);   
      break;    
    case 7: // 顯示數(shù)字7作弊圖案
      digitalWrite(8, HIGH);
      break;
    case 8: // 顯示數(shù)字8作弊圖案
      digitalWrite(6, HIGH);
      digitalWrite(4, HIGH);
      break;
    case 9: // 顯示數(shù)字9作弊圖案
      digitalWrite(9, HIGH);
      digitalWrite(7, HIGH);
      break;
    case 0: // 顯示數(shù)字0作弊圖案
      digitalWrite(3, HIGH);
      digitalWrite(8, HIGH); 
      break;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容