Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:cstan:led-slot-machine [2022/05/27 21:40]
marius.podeanu [Software Design]
pm:prj2022:cstan:led-slot-machine [2022/05/27 22:03] (current)
marius.podeanu
Line 34: Line 34:
 ===== Software Design ===== ===== Software Design =====
 __//​**Source Code:​**//​__ ​ __//​**Source Code:​**//​__ ​
 +
 +<​html>​
 +
 +<​div ​
 +
 +style="​height:​400px;​width:​700px;​border:​1px solid #​ccc;​font:​10px/​18px Georgia, Garamond, Serif;​overflow:​auto;">​
 +
 +#include &​ltWire.h&​gt<​br>​
 +#include &​ltLiquidCrystal_I2C.h&​gt<​br>​
 +<br>
 +#define NOTE_B0 ​ 31<​br>​
 +#define NOTE_C1 ​ 33<​br>​
 +#define NOTE_CS1 35<​br>​
 +#define NOTE_D1 ​ 37<​br>​
 +#define NOTE_DS1 39<​br>​
 +#define NOTE_E1 ​ 41<​br>​
 +#define NOTE_F1 ​ 44<​br>​
 +#define NOTE_FS1 46<​br>​
 +#define NOTE_G1 ​ 49<​br>​
 +#define NOTE_GS1 52<​br>​
 +#define NOTE_A1 ​ 55<​br>​
 +#define NOTE_AS1 58<​br>​
 +#define NOTE_B1 ​ 62<​br>​
 +#define NOTE_C2 ​ 65<​br>​
 +#define NOTE_CS2 69<​br>​
 +#define NOTE_D2 ​ 73<​br>​
 +#define NOTE_DS2 78<​br>​
 +#define NOTE_E2 ​ 82<​br>​
 +#define NOTE_F2 ​ 87<​br>​
 +#define NOTE_FS2 93<​br>​
 +#define NOTE_G2 ​ 98<​br>​
 +#define NOTE_GS2 104<​br>​
 +#define NOTE_A2 ​ 110<​br>​
 +#define NOTE_AS2 117<​br>​
 +#define NOTE_B2 ​ 123<​br>​
 +#define NOTE_C3 ​ 131<​br>​
 +#define NOTE_CS3 139<​br>​
 +#define NOTE_D3 ​ 147<​br>​
 +#define NOTE_DS3 156<​br>​
 +#define NOTE_E3 ​ 165<​br>​
 +#define NOTE_F3 ​ 175<​br>​
 +#define NOTE_FS3 185<​br>​
 +#define NOTE_G3 ​ 196<​br>​
 +#define NOTE_GS3 208<​br>​
 +#define NOTE_A3 ​ 220<​br>​
 +#define NOTE_AS3 233<​br>​
 +#define NOTE_B3 ​ 247<​br>​
 +#define NOTE_C4 ​ 262<​br>​
 +#define NOTE_CS4 277<​br>​
 +#define NOTE_D4 ​ 294<​br>​
 +#define NOTE_DS4 311<​br>​
 +#define NOTE_E4 ​ 330<​br>​
 +#define NOTE_F4 ​ 349<​br>​
 +#define NOTE_FS4 370<​br>​
 +#define NOTE_G4 ​ 392<​br>​
 +#define NOTE_GS4 415<​br>​
 +#define NOTE_A4 ​ 440<​br>​
 +#define NOTE_AS4 466<​br>​
 +#define NOTE_B4 ​ 494<​br>​
 +#define NOTE_C5 ​ 523<​br>​
 +#define NOTE_CS5 554<​br>​
 +#define NOTE_D5 ​ 587<​br>​
 +#define NOTE_DS5 622<​br>​
 +#define NOTE_E5 ​ 659<​br>​
 +#define NOTE_F5 ​ 698<​br>​
 +#define NOTE_FS5 740<​br>​
 +#define NOTE_G5 ​ 784<​br>​
 +#define NOTE_GS5 831<​br>​
 +#define NOTE_A5 ​ 880<​br>​
 +#define NOTE_AS5 932<​br>​
 +#define NOTE_B5 ​ 988<​br>​
 +#define NOTE_C6 ​ 1047<​br>​
 +#define NOTE_CS6 1109<​br>​
 +#define NOTE_D6 ​ 1175<​br>​
 +#define NOTE_DS6 1245<​br>​
 +#define NOTE_E6 ​ 1319<​br>​
 +#define NOTE_F6 ​ 1397<​br>​
 +#define NOTE_FS6 1480<​br>​
 +#define NOTE_G6 ​ 1568<​br>​
 +#define NOTE_GS6 1661<​br>​
 +#define NOTE_A6 ​ 1760<​br>​
 +#define NOTE_AS6 1865<​br>​
 +#define NOTE_B6 ​ 1976<​br>​
 +#define NOTE_C7 ​ 2093<​br>​
 +#define NOTE_CS7 2217<​br>​
 +#define NOTE_D7 ​ 2349<​br>​
 +#define NOTE_DS7 2489<​br>​
 +#define NOTE_E7 ​ 2637<​br>​
 +#define NOTE_F7 ​ 2794<​br>​
 +#define NOTE_FS7 2960<​br>​
 +#define NOTE_G7 ​ 3136<​br>​
 +#define NOTE_GS7 3322<​br>​
 +#define NOTE_A7 ​ 3520<​br>​
 +#define NOTE_AS7 3729<​br>​
 +#define NOTE_B7 ​ 3951<​br>​
 +#define NOTE_C8 ​ 4186<​br>​
 +#define NOTE_CS8 4435<​br>​
 +#define NOTE_D8 ​ 4699<​br>​
 +#define NOTE_DS8 4978<​br>​
 +<br>
 +int melody[] = {<br>
 +  NOTE_AS4, NOTE_AS4, NOTE_AS4, NOTE_AS4,<​br>​
 +  NOTE_AS4, NOTE_AS4, NOTE_AS4, NOTE_AS4,<​br>​
 +  NOTE_AS4, NOTE_AS4, NOTE_AS4, NOTE_AS4,<​br>​
 +  NOTE_AS4, NOTE_AS4, NOTE_AS4, NOTE_AS4,<​br>​
 +  NOTE_AS4, NOTE_AS4, NOTE_AS4, NOTE_AS4,<​br>​
 +  NOTE_D5, NOTE_D5, NOTE_D5, NOTE_D5,<​br>​
 +  NOTE_C5, NOTE_C5, NOTE_C5, NOTE_C5, <br>
 +  NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, <br>
 +  NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5,<​br>​
 +  NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5, <br>
 +  NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5, <br>
 +  NOTE_C5, NOTE_AS4, NOTE_A4, NOTE_F4,<​br>​
 +  NOTE_G4, 0, NOTE_G4, NOTE_D5,<​br>​
 +  NOTE_C5, 0, NOTE_AS4, 0,<​br>​
 +  NOTE_A4, 0, NOTE_A4, NOTE_A4,<​br>​
 +  NOTE_C5, 0, NOTE_AS4, NOTE_A4, <br>
 +  NOTE_G4,0, NOTE_G4, NOTE_AS5,<​br>​
 +  NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5,<​br>​
 +  NOTE_G4,0, NOTE_G4, NOTE_AS5,<​br>​
 +  NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5,<​br>​
 +  NOTE_G4, 0, NOTE_G4, NOTE_D5,<​br>​
 +  NOTE_C5, 0, NOTE_AS4, 0,<​br>​
 +  NOTE_A4, 0, NOTE_A4, NOTE_A4,<​br>​
 +  NOTE_C5, 0, NOTE_AS4, NOTE_A4, <br>
 +  NOTE_G4,0, NOTE_G4, NOTE_AS5,<​br>​
 +  NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5,<​br>​
 +  NOTE_G4,0, NOTE_G4, NOTE_AS5,<​br>​
 +  NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5<​br>​
 + ​};<​br>​
 +<br>
 +// note durations: 4 = quarter note, 8 = eighth note, etc.:<​br>​
 +int noteDurations[] = {<br>
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  4,​4,​4,​4,<​br>​
 +  };<​br>​
 +<br>
 +  <br>
 +//Actual code<​br>​
 +<br>
 +LiquidCrystal_I2C lcd(0x27,​20,​4);<​br>​
 +<br>
 +int ledcolor;<​br>​
 +int a = 1; //sets the delay until next color<​br>​
 +<br>
 +<br>
 +int red1 = 8; //sets the RED led pin for FIRST RGB<​br>​
 +int green1 = 9; //sets the GREEN led pin for FIRST RGB<​br>​
 +int blue1 = 10; //sets the BLUE led pin for FIRST RGB<​br>​
 +<br>
 +int red2 = 5; //sets the RED led pin for SECOND RGB<​br>​
 +int green2 = 6; //sets the GREEN led pin for SECOND RGB<​br>​
 +int blue2 = 7; //sets the BLUE led pin for SECOND RGB<​br>​
 +<br>
 +int red3 = 11; //sets the RED led pin for THIRD RGB<​br>​
 +int green3 = 12; //sets the GREEN led pin for THIRD RGB<​br>​
 +int blue3 = 13; //sets the BLUE led pin for THIRD RGB<​br>​
 +<br>
 +int button = 3;<​br>​
 +int pressed = 0; //checks if the button is pressed<​br>​
 +<br>
 +<br>
 +void setup() { //this sets the output pins<​br>​
 +<br>
 +  pinMode(red1,​ OUTPUT);<​br>​
 +  pinMode(green1,​ OUTPUT);<​br>​
 +  pinMode(blue1,​ OUTPUT);<​br>​
 +  <br>
 +    pinMode(red2,​ OUTPUT);<​br>​
 +  pinMode(green2,​ OUTPUT);<​br>​
 +  pinMode(blue2,​ OUTPUT);<​br>​
 +  <br>
 +    pinMode(red3,​ OUTPUT);<​br>​
 +  pinMode(green3,​ OUTPUT);<​br>​
 +  pinMode(blue3,​ OUTPUT);<​br>​
 +  <br>
 +    pinMode(button,​ INPUT);<​br>​
 +    <br>
 +<br>
 +    lcd.init();<​br>​
 +    // Print a message to the LCD.<​br>​
 +    lcd.backlight();<​br>​
 +    lcd.setCursor(0,​0);<​br>​
 +    lcd.print("​Press the button"​);<​br>​
 +    lcd.setCursor(4,​1);<​br>​
 +    lcd.print("​to play!"​);<​br>​
 +<br>
 +    RGB_color1(0,​ 0, 0);<​br>​
 +    RGB_color2(0,​ 0, 0);<​br>​
 +    RGB_color3(0,​ 0, 0);<​br>​
 +  <br>
 +}<br>
 +<br>
 +<br>
 +void RGB_color1(int red_value, int green_value,​ int blue_value){<​br>​
 +  digitalWrite(red1,​ red_value);<​br>​
 +  digitalWrite(green1,​ green_value);<​br>​
 +  digitalWrite(blue1,​ blue_value);<​br>​
 +}<br>
 +<br>
 +void RGB_color2(int red_value, int green_value,​ int blue_value){<​br>​
 +  digitalWrite(red2,​ red_value);<​br>​
 +  digitalWrite(green2,​ green_value);<​br>​
 +  digitalWrite(blue2,​ blue_value);<​br>​
 +}<br>
 +<br>
 +void RGB_color3(int red_value, int green_value,​ int blue_value){<​br>​
 +  digitalWrite(red3,​ red_value);<​br>​
 +  digitalWrite(green3,​ green_value);<​br>​
 +  digitalWrite(blue3,​ blue_value);<​br>​
 +}<br>
 +<br>
 +<br>
 +void loop() {<br>
 +  int a = random(6); //randomly selects a number between 0 and 6<br>
 +  int b = random(6);<​br>​
 +  int c = random(6);<​br>​
 +  int ledcolor1 = a;<​br>​
 +  int ledcolor2 = b;<​br>​
 +  int ledcolor3 = c;<​br>​
 +  pressed = digitalRead(button);<​br>​
 +<br>
 +<br>
 +  if (pressed == LOW) {<br>
 +    delay(300);<​br>​
 +<br>
 +        switch (a) {<br>
 +    case 0: //if ledcolor equals 0 then the led will turn red<​br>​
 +        RGB_color1(255,​ 0, 0);<​br>​
 +        delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 1: //if ledcolor equals 1 then the led will turn green<​br>​
 +        RGB_color1(0,​ 255, 0);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 2: //if ledcolor equals 2 then the led will turn blue<​br>​
 +        RGB_color1(0,​ 0, 255); // Blue<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 3: //if ledcolor equals 3 then the led will turn yellow<​br>​
 +        RGB_color1(255,​ 255, 0);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 4: //if ledcolor equals 4 then the led will turn cyan<​br>​
 +        RGB_color1(255,​ 255, 255);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 5: //if ledcolor equals 5 then the led will turn magenta<​br>​
 +        RGB_color1(255,​ 0, 255); // Magenta<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +    }<br>
 +<br>
 +<br>
 +        switch (b) {<br>
 +    case 0: //if ledcolor equals 0 then the led will turn red<​br>​
 +        RGB_color2(255,​ 0, 0);<​br>​
 +        delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 1: //if ledcolor equals 1 then the led will turn green<​br>​
 +        RGB_color2(0,​ 255, 0);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 2: //if ledcolor equals 2 then the led will turn blue<​br>​
 +        RGB_color2(0,​ 0, 255); // Blue<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 3: //if ledcolor equals 3 then the led will turn yellow<​br>​
 +        RGB_color2(255,​ 255, 0);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 4: //if ledcolor equals 4 then the led will turn cyan<​br>​
 +        RGB_color2(255,​ 255, 255);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 5: //if ledcolor equals 5 then the led will turn magenta<​br>​
 +        RGB_color2(255,​ 0, 255); // Magenta<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +    }<br>
 +<br>
 +        switch (c) {<br>
 +    case 0: //if ledcolor equals 0 then the led will turn red<​br>​
 +        RGB_color3(255,​ 0, 0);<​br>​
 +        delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 1: //if ledcolor equals 1 then the led will turn green<​br>​
 +        RGB_color3(0,​ 255, 0);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 2: //if ledcolor equals 2 then the led will turn blue<​br>​
 +        RGB_color3(0,​ 0, 255); // Blue<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 3: //if ledcolor equals 3 then the led will turn yellow<​br>​
 +        RGB_color3(255,​ 255, 0);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 4: //if ledcolor equals 4 then the led will turn cyan<​br>​
 +        RGB_color3(255,​ 255, 255);<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +<br>
 +    case 5: //if ledcolor equals 5 then the led will turn magenta<​br>​
 +        RGB_color3(255,​ 0, 255); // Magenta<​br>​
 +      delay(a);<​br>​
 +    break;<​br>​
 +    }<br>
 +    <br>
 +  }<br>
 +  <br>
 +  <br>
 +  if (ledcolor1 == ledcolor2) {<br>
 +    if (ledcolor2 == ledcolor3) {<br>
 +      if (pressed == LOW){<​br>​
 +                    <br>
 +          lcd.init();<​br>​
 +          // Print a message to the LCD.<​br>​
 +          lcd.backlight();<​br>​
 +          lcd.setCursor(0,​0);<​br>​
 +          lcd.print("​Congratulations!"​);<​br>​
 +          lcd.setCursor(1,​1);<​br>​
 +          lcd.print("​ You won 10k!"​);<​br>​
 +          <br>
 +          for (int thisNote = 0; thisNote < 112; thisNote++) {<br>
 +<br>
 +          int noteDuration = 750 / noteDurations[thisNote];<​br>​
 +          tone(2, melody[thisNote],​ noteDuration);<​br>​
 +<br>
 +          int pauseBetweenNotes = noteDuration * 1.3;<​br>​
 +          delay(pauseBetweenNotes);<​br>​
 +<br>
 +          noTone(2);<​br>​
 +      }<br>
 +<br>
 +      lcd.clear();<​br>​
 +      setup();<​br>​
 +          <br>
 +      }<br>
 +    }<br>
 +  }<br>
 +}<br>
 +  ​
 +
 +</​div>​
 +
 +</​html>​
 +\\
  
  
Line 53: Line 441:
 \\ \\
 \\ \\
 +
  
 {{:​pm:​prj2022:​cstan:​slotmachine1.jpg?​378|}} {{:​pm:​prj2022:​cstan:​slotmachine1.jpg?​378|}}
 {{:​pm:​prj2022:​cstan:​slotmachine2.jpg?​378|}} {{:​pm:​prj2022:​cstan:​slotmachine2.jpg?​378|}}
 {{:​pm:​prj2022:​cstan:​slotmachine3.jpg?​378|}} {{:​pm:​prj2022:​cstan:​slotmachine3.jpg?​378|}}
 +
  
 \\ \\
pm/prj2022/cstan/led-slot-machine.1653676811.txt.gz · Last modified: 2022/05/27 21:40 by marius.podeanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0