Advertisement
fastoch13

Untitled

Apr 1st, 2023
853
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.09 KB | None | 0 0
  1. #include "FastLED.h"
  2. #define NUM_LEDS 45
  3. #define DATA_PIN A0
  4. #define SCORE_PIN 6
  5. #define SCORE_LEDS 6
  6. #define BRIGHTNESS 55
  7. CRGB leds[NUM_LEDS];
  8. CRGB sleds[NUM_LEDS];
  9.  
  10. bool reachedEnd = false;
  11. byte gameState = 0;
  12. //byte ledSpeed = 0;
  13. int period = 1000;
  14. unsigned long time_now = 0;
  15. byte Position = 0;
  16. byte level = 0;
  17.  
  18. const byte ledSpeed[6] = {50, 40, 30, 20, 14, 7};
  19.  
  20. //Debounce
  21. bool findRandom = false;
  22. byte spot = 0;
  23.  
  24. void setup() {
  25.   // put your setup code here, to run once:
  26.   FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  27.   FastLED.addLeds<WS2812B, SCORE_PIN, GRB>(sleds, SCORE_LEDS);
  28.   pinMode(A3, INPUT_PULLUP);
  29.   Serial.begin(9600);
  30.   Serial.println("Reset");
  31. }
  32.  
  33. void loop() {
  34.   // put your main code here, to run repeatedly:
  35.   Serial.println(gameState);
  36.   FastLED.setBrightness(BRIGHTNESS );
  37.   if (gameState == 0) {
  38.     fill_rainbow(leds, NUM_LEDS, 0, 20); //2 = longer gradient strip
  39.     fill_rainbow(sleds, SCORE_LEDS, 0, 40); //2 = longer gradient strip
  40.  
  41.     if (digitalRead(A3) == LOW) {
  42.       Position = 0;
  43.       findRandom = true;
  44.       delay(500);
  45.       for (byte i = 0; i < NUM_LEDS; i++) {
  46.         leds[i].setRGB(0, 0, 0);
  47.         delay(40);
  48.         FastLED.show();
  49.        int thisPitch = map (i, 60, 0, 100, 1500);
  50.        tone(9, thisPitch,120);
  51.       }
  52.       for (byte i = 0; i < SCORE_LEDS; i++) {
  53.         sleds[i].setRGB(0, 0, 0);
  54.         delay(100);
  55.         FastLED.show();
  56.       }
  57.       gameState = 1;
  58.     }
  59.     FastLED.show();
  60.   }
  61.   if (gameState == 1) {
  62.     period = ledSpeed[0];
  63.     if (millis() > time_now + period) {
  64.       time_now = millis();
  65.       if (findRandom) {
  66.         spot = random(56) + 3;
  67.         findRandom = false;
  68.       }
  69.       leds[spot - 1].setRGB(255, 140, 0);
  70.       leds[spot].setRGB(0, 255, 0);
  71.       leds[spot + 1].setRGB(255, 110, 0);
  72.       sleds[0].setRGB(0, 255, 0);
  73.       PlayGame(spot - 1, spot + 1);
  74.     }
  75.     if (digitalRead(A3) == LOW) {
  76.       delay(300);
  77.       findRandom = false;
  78.       if (Position > spot - 1 && Position < spot + 3) {
  79.         level = gameState;
  80.         gameState = 99;
  81.       } else {
  82.         gameState = 98;
  83.       }
  84.     }
  85.   }
  86.   if (gameState == 2) {
  87. //    period = 320;
  88.     period = ledSpeed[1];
  89.     if (millis() > time_now + period) {
  90.       time_now = millis();
  91.       if (findRandom) {
  92.         spot = random(56) + 3;
  93.         findRandom = false;
  94.       }
  95.       leds[spot - 1].setRGB(255, 190, 0);
  96.       leds[spot].setRGB(0, 255, 0);
  97.       leds[spot + 1].setRGB(255, 190, 0);
  98.       sleds[1].setRGB(255, 255, 0);
  99.       PlayGame(spot - 1, spot + 1);
  100.     }
  101.     if (digitalRead(A3) == LOW) {
  102.       delay(300);
  103.       if (spot - 1 && Position < spot + 3) {
  104.         level = gameState;
  105.         gameState = 98;
  106.       } else {
  107.         gameState = 99;
  108.       }
  109.     }
  110.   }
  111.   if (gameState == 3) {
  112.     period = ledSpeed[2];
  113.     if (millis() > time_now + period) {
  114.       time_now = millis();
  115.       if (findRandom) {
  116.         spot = random(56) + 3;
  117.         findRandom = false;
  118.       }
  119.       leds[spot].setRGB(0, 255, 0);
  120.       sleds[2].setRGB(255, 50, 0);
  121.       PlayGame(spot, spot);
  122.     }
  123.     if (digitalRead(A3) == LOW) {
  124.       delay(300);
  125.       if (Position == spot+1) {
  126.         level = gameState;
  127.         gameState = 98;
  128.       } else {
  129.         gameState = 99;
  130.       }
  131.     }
  132.   }
  133.   if (gameState == 4) {
  134.     period = ledSpeed[3];
  135.     if (millis() > time_now + period) {
  136.       time_now = millis();
  137.       if (findRandom) {
  138.         spot = random(56) + 3;
  139.         findRandom = false;
  140.       }
  141.       leds[spot].setRGB(0, 255, 0);
  142.       sleds[3].setRGB(255, 0, 0);
  143.       PlayGame(spot, spot);
  144.     }
  145.     if (digitalRead(A3) == LOW) {
  146.       delay(300);
  147.       if (Position == spot+1) {
  148.         level = gameState;
  149.         gameState = 98;
  150.       } else {
  151.         gameState = 99;
  152.       }
  153.     }
  154.   }
  155.  
  156.   if (gameState == 5) {
  157.     period = ledSpeed[4];
  158.     if (millis() > time_now + period) {
  159.       time_now = millis();
  160.       if (findRandom) {
  161.         spot = random(56) + 3;
  162.         findRandom = false;
  163.       }
  164.       leds[spot].setRGB(0, 255, 0);
  165.       sleds[4].setRGB(0, 50, 255);
  166.       PlayGame(spot , spot);
  167.     }
  168.     if (digitalRead(A3) == LOW) {
  169.       delay(300);
  170.       if (Position == spot+1) {
  171.         level = gameState;
  172.         gameState = 98;
  173.       } else {
  174.         gameState = 99;
  175.       }
  176.     }
  177.   }
  178.  
  179.   if (gameState == 6) {
  180.     period = ledSpeed[5];
  181.     if (millis() > time_now + period) {
  182.       time_now = millis();
  183.       if (findRandom) {
  184.         spot = random(56) + 3;
  185.         findRandom = false;
  186.       }
  187.       leds[spot].setRGB(0, 255, 0);
  188.       sleds[5].setRGB(0, 150, 255);
  189.       PlayGame(spot , spot);
  190.     }
  191.     if (digitalRead(A3) == LOW) {
  192.       delay(300);
  193.       if (Position == spot+1) {
  194.         level = gameState;
  195.         gameState = 98;
  196.       } else {
  197.         gameState = 99;
  198.       }
  199.     }
  200.   }
  201.  
  202.   if (gameState == 98) {
  203.     winner();
  204.   }
  205.   if (gameState == 99) {
  206.     loser();
  207.   }
  208. }
  209. void PlayGame(byte bound1, byte bound2) {
  210.   leds[Position].setRGB(255, 0, 0);
  211.   if (Position < bound1 + 1 || Position > bound2 + 1) {
  212.     leds[Position - 1].setRGB(0, 0, 0);
  213.   }
  214.   FastLED.show();
  215.   Position++;
  216.   if (Position >= NUM_LEDS) {
  217.     leds[Position - 1].setRGB(0, 0, 0);
  218.     Position = 0;
  219.   }
  220. }
  221.  
  222. void winner() {
  223.     delay(500);
  224.   for (byte i = 0; i < 3; i++) {
  225.     for (byte j = 0; j < NUM_LEDS; j++) {
  226.       leds[j].setRGB(0, 255, 0);
  227.         tone(9, 1000, 250);
  228.     }
  229.     FastLED.show();
  230.     delay(500);
  231.     clearLEDS();
  232.     FastLED.show();
  233.     delay(500);
  234.  
  235.   }
  236.   findRandom = true;
  237.   Position = 0;
  238.   Serial.println("Won");
  239.  
  240.   gameState = level + 1;
  241.   if (gameState > 6) {
  242.     gameState = 0;
  243.   }
  244. }
  245. void loser() {
  246.   for (byte i = 0; i < 3; i++) {
  247.     for (byte j = 0; j < NUM_LEDS; j++) {
  248.       leds[j].setRGB(255, 0, 0);
  249.       tone(9, 200, 250);
  250.     }
  251.     FastLED.show();
  252.     delay(500);
  253.     clearLEDS();
  254.     FastLED.show();
  255.     delay(500);
  256.     Serial.println("Lost");
  257.   }
  258.   gameState = 0;
  259. }
  260. void clearLEDS() {
  261.   for (byte i = 0; i < NUM_LEDS; i++) {
  262.     leds[i].setRGB(0, 0, 0);
  263.   }
  264. }
  265. void winAll(){
  266.  
  267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement