#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte heart[] = {
B00000,
B01010,
B10101,
B10001,
B10001,
B01010,
B00100,
B00000
};
byte jei[] = {
B00000,
B11111,
B00100,
B00100,
B00100,
B10100,
B11100,
B00000
};
byte smile[] = {
B00000,
B01010,
B01010,
B00000,
B10001,
B11011,
B01110,
B00000
};
byte diamond[] = {
B00000,
B00100,
B01010,
B10001,
B10001,
B01010,
B00100,
B00000
};
byte rectangle[] = {
B00000,
B11111,
B10001,
B10001,
B10001,
B10001,
B11111,
B00000
};
byte kei[] = {
B00000,
B10010,
B10100,
B11000,
B11000,
B10100,
B10010,
B00000
};
#define VERT A0
#define SEL 2
int credits = 10;
int bet = 0;
int symbols[3];
void displayGame();
void spin();
void results();
void betting(int direction);
void setup() {
pinMode(SEL, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.backlight();
// same smile
// one K, two diamond
// 1 heart, 1 J, 1 rectangle
lcd.createChar(0, heart);
lcd.createChar(1, jei);
lcd.createChar(2, smile);
lcd.createChar(3, diamond);
lcd.createChar(4, rectangle);
lcd.createChar(5, kei);
randomSeed(analogRead(A1));
displayGame();
}
void loop() {
int vert = analogRead(VERT);
int selPressed = digitalRead(SEL);
if (vert > 800 && bet < credits) {
betting(1);
delay(200);
} else if (vert < 200 && bet > 0) {
betting(-1);
delay(200);
}
if (selPressed == LOW) {
if (bet > 0) {
spin();
results();
delay(500);
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Place a bet!");
delay(2000);
displayGame();
}
}
}
void displayGame() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Slot:");
lcd.setCursor(0, 1);
lcd.print("C:");
lcd.print(credits);
lcd.setCursor(10, 1);
lcd.print("BET:");
lcd.print(bet);
}
void betting(int direction) {
if (direction == 1) {
bet++;
credits--;
} else if (direction == -1) {
bet--;
credits++;
}
displayGame();
}
void spin() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Slot:");
for (int i = 0; i < 3; i++) {
symbols[i] = random(0, 6);
lcd.setCursor(6 + i*4, 0);
lcd.write(byte(symbols[i]));
}
}
void results() {
int reward = 0;
if (symbols[0] == 1 && symbols[1] == 1 && symbols[2] == 1) {
reward = bet * 10;
} else if ((symbols[0] == 3 && symbols[1] == 3 && symbols[2] == 5) ||
(symbols[0] == 3 && symbols[1] == 5 && symbols[2] == 3) ||
(symbols[0] == 5 && symbols[1] == 3 && symbols[2] == 3)) {
reward = bet * 3;
} else if ((symbols[0] == 1 && symbols[1] == 4 && symbols[2] == 0) ||
(symbols[0] == 4 && symbols[1] == 0 && symbols[2] == 1) ||
(symbols[0] == 0 && symbols[1] == 1 && symbols[2] == 4)) {
reward = bet * 1;
}
credits += reward;
bet = 0;
lcd.setCursor(0, 1);
lcd.print("Won:");
lcd.print(reward);
delay(2000);
displayGame();
}