這是一台簡單、有效的樂透選號機。
你可以玩樂透遊戲,與親朋好友同樂或者真的拿這幾個數字去買樂透。
每隔 250 毫秒,隨機產生 7 個數字,從 1 到 39 之間的整數。
產生的數字可以任意變更。
這些數字取自我們國家(芬蘭)的全國樂透。
行動裝置使用者:若要觀看影片,請按這裡!
步驟 1:組裝
組裝很簡單。
除了 Intel Edison 開發板,還需要 Arduino 擴充板、LCD 螢幕,還有一個按鈕。
我用一塊 Shield 擴充板,連接按鈕以及 LCD。
我用的按鈕是一個簡單的觸控板,可以感測到觸摸的動作,而 LCD 螢幕則是 RGB 背光。
按鈕連接到 Arduino 擴充板上的 D7,而 LCD 則連接到 I2C。
步驟 2:編碼
將開發板連接到 PC,開始編寫程式碼。
程式碼使用 EEPROM 儲存產生的數字,所以螢幕上不會出現抽中相同數字的情形。
一開始,以 #include 含入各項元件與全域變數。
#include
#include #include "rgb_lcd.h"
const int numNumbers = 7; const int buttonPin = 7;
rgb_lcd lcd;
const int colorR = 255; const int colorG = 0; const int colorB = 0;
int numbers[numNumbers];
boolean isInit = false; boolean lcdNeedsRefreshed = false; boolean isFirstButtonPush = true;
接下來是設定,我在這個部分用了一個小引導,說明這裡的動作。
void setup() {
pinMode(buttonPin, INPUT_PULLUP);int eeprom=EEPROM.read(0); eeprom+=1; EEPROM.write(0, eeprom); randomSeed(eeprom);
lcd.begin(16, 2); lcd.home(); lcd.clear(); lcd.setRGB(colorR, colorG, colorB); lcd.setRGB(255,255,255); lcd.setCursor(0,0); lcd.print("HOLD FINGER ON"); lcd.setCursor(0,1); lcd.print("THE BUTTON"); delay(3000); lcd.clear(); }
然後是程式迴圈,這裡的迴圈使用幾個副程式,像底下這樣。
void loop(){
if(isFirstButtonPush){ readButtonPush(); if(!isInit){
isInit = true; } }else{ readButtonPush();
if(lcdNeedsRefreshed){ lcd.home(); lcd.clear(); printNumbersToLCD(); lcdNeedsRefreshed = false; delay(50); }
lcd.setRGB(50,255,11);
}
delay(200); }
void readButtonPush(){
int reading = digitalRead(buttonPin); lcd.scrollDisplayLeft(); lcd.setCursor(0,1); lcd.print(" Winning numbers! Or not.");
if(reading == LOW){ generateRandomNumbers(); isFirstButtonPush = false; lcdNeedsRefreshed = true; } }
最後是我在前面提到的副程式。
void generateRandomNumbers(){
for(int i = 0; i < numNumbers; i++){ numbers[i] = nextRandomNumber(); } }int nextRandomNumber(){ int nextRandom = random(1,39); boolean isDuplicate = false; for(int i = 0; i < numNumbers; i++){ if(nextRandom == numbers[i]) isDuplicate = true; } if(isDuplicate) return nextRandomNumber(); return nextRandom; }
void printNumbersToLCD(){
lcd.setCursor(0,0); for(int i = 0; i < numNumbers; i++){ if(numbers){ lcd.print(numbers[i]); } if(i != 6) lcd.print("-");
} }
如果你有任何疑問,歡迎提出來,我會儘量回答。
步驟 3:開始賺錢。
就像我說的,這些號碼... 不一定會中獎!
什麼號碼會中,很難講。希望您中獎(如果中了頭彩,別忘了分我一成!)
這些數字可能產生的結果,有大約 1500 萬種可能性。
希望您喜歡我的專案,歡迎您追蹤我的動態,可以提早知道各項最新的專案。
感謝您的閱讀。
原文刊載於:http://www.instructables.com/id/Lottery-Machine/?ALLSTEPS
T客邦已取得授權翻譯轉載
在Intel Developer Zone 的IoT的專區,有更多關於Edison開發板的資料和訊息,要多了解的讀者可以連進去看看。
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!