Lotteri maskin (2 / 3 steg)
Steg 2: kodning
Anslut styrelsen till datorn och börja kodning.
Koden använder EEPROM för att lagra den genererade nummer så det blir inga samma nummer i de dragna numren på skärmen.
Börja med inklusive komponenter och globala variabler.
#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 nummer [numNumbers];
booleska isInit = false;
booleska lcdNeedsRefreshed = false;
booleska isFirstButtonPush = sant;
Sedan gå till setup. Jag ingår en liten intro som berättar vad du ska göra.
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 ("Håll FINGRET på");
lcd.setCursor(0,1);
LCD.Print ("knappen");
Delay(3000);
LCD.Clear();
}
Sedan till slingan. Slingan använder några subrutiner som görs nedan.
void loop() {
IF(isFirstButtonPush) {
readButtonPush();
IF(!isInit) {
isInit = sant;
}
} annat {
readButtonPush();
IF(lcdNeedsRefreshed) {
LCD.Home();
LCD.Clear();
printNumbersToLCD();
lcdNeedsRefreshed = false;
Delay(50);
}
lcd.setRGB(50,255,11);
}
Delay(200);
}
void readButtonPush() {
int läsa = digitalRead(buttonPin);
lcd.scrollDisplayLeft();
lcd.setCursor(0,1);
LCD.Print ("vinnande nummer! Eller inte.");
IF(Reading == low) {
generateRandomNumbers();
isFirstButtonPush = false;
lcdNeedsRefreshed = sant;
}
}
Slutligen de subrutiner som jag nämnde tidigare.
void generateRandomNumbers() {
för (int jag = 0; jag < numNumbers; i ++) {
nummer [i] = nextRandomNumber();
}
}
int nextRandomNumber() {
int nextRandom = random(1,39);
booleska isDuplicate = false;
för (int jag = 0; jag < numNumbers; i ++) {
om (nextRandom == numbers[i]) isDuplicate = true;
}
IF(isDuplicate) return nextRandomNumber();
återvända nextRandom;
}
void printNumbersToLCD() {
lcd.setCursor(0,0);
för (int jag = 0; jag < numNumbers; i ++) {
IF(Numbers) {
LCD.Print(Numbers[i]);
}
om (jag! = 6) lcd.print("-");
}
}
Om du har några frågor bara fråga. Jag ska försöka besvara dem.