Intel Edison 開發板自製樂透選號機

Intel Edison 開發板自製樂透選號機
instructables是一個知名的創客網站,網站上有許多人上傳自己的作品,並且也提供專案讓其他的愛好者下載。T客邦在取得授權後,也會挑選一些有趣專案介紹給大家。這次的「自製樂透選號機」出自「Lottery Machine」,作者是mkarvonen

這是一台簡單、有效的樂透選號機。
你可以玩樂透遊戲,與親朋好友同樂或者真的拿這幾個數字去買樂透。
每隔 250 毫秒,隨機產生 7 個數字,從 1 到 39 之間的整數。
產生的數字可以任意變更。
這些數字取自我們國家(芬蘭)的全國樂透。

行動裝置使用者:若要觀看影片,請按這裡

步驟 1:組裝

Intel Edison 開發板自製樂透選號機
Intel Edison 開發板自製樂透選號機

Intel Edison 開發板自製樂透選號機

組裝很簡單。

除了 Intel Edison 開發板,還需要 Arduino 擴充板、LCD 螢幕,還有一個按鈕。

我用一塊 Shield 擴充板,連接按鈕以及 LCD。

我用的按鈕是一個簡單的觸控板,可以感測到觸摸的動作,而 LCD 螢幕則是 RGB 背光。

按鈕連接到 Arduino 擴充板上的 D7,而 LCD 則連接到 I2C。

步驟 2:編碼

Intel Edison 開發板自製樂透選號機
將開發板連接到 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:開始賺錢。

Intel Edison 開發板自製樂透選號機

Intel Edison 開發板自製樂透選號機Intel Edison 開發板自製樂透選號機

Intel Edison 開發板自製樂透選號機Intel Edison 開發板自製樂透選號機Intel Edison 開發板自製樂透選號機

Intel Edison 開發板自製樂透選號機

Intel Edison 開發板自製樂透選號機Intel Edison 開發板自製樂透選號機
就像我說的,這些號碼... 不一定會中獎!

什麼號碼會中,很難講。希望您中獎(如果中了頭彩,別忘了分我一成!)

這些數字可能產生的結果,有大約 1500 萬種可能性。

希望您喜歡我的專案,歡迎您追蹤我的動態,可以提早知道各項最新的專案。

感謝您的閱讀。

 

原文刊載於:http://www.instructables.com/id/Lottery-Machine/?ALLSTEPS

T客邦已取得授權翻譯轉載

Intel Developer Zone IoT的專區,有更多關於Edison開發板的資料和訊息,要多了解的讀者可以連進去看看。

Jazzbear
作者

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則