Untitled
unknown
plain_text
a year ago
7.0 kB
5
Indexable
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Encoder.h> #include <Adafruit_NeoPixel.h> #define buttonCancel 5 #define buttonArcade 9 #define buttonPause 6 #define buttonConfirm 8 #define ledPin 10 LiquidCrystal_I2C lcd(0x27, 20, 4); Encoder enc(2,3); Adafruit_NeoPixel ledRing = Adafruit_NeoPixel(12, ledPin, NEO_GRB + NEO_KHZ800); String lineClear = " "; long position = 0; long time = 0; long timeSet = 0; long timeSeconds = 0; long timeMinutes = 0; long timeHours = 0; unsigned long timeAcutalSeconds = 0; unsigned long timeSavedSeconds = 0; int color = 0; int R = 0; int G = 0; int B = 0; int players = 2; //zmienna do określenia ilości graczy int player = 1; // zmienna do określenia kolejności graczy int i = 0; int player1 = 0; // gracz - tutaj przypisujemy kolejność i jednocześnie kolor int player2 = 0; int player3 = 0; int player4 = 0; int player5 = 0; int player6 = 0; int menuMode = 0; boolean pauseStatus = false; void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); ledRing.begin(); ledRing.show(); pinMode(buttonPause, INPUT_PULLUP); pinMode(buttonCancel, INPUT_PULLUP); pinMode(buttonArcade, INPUT_PULLUP); pinMode(buttonConfirm, INPUT_PULLUP); } void encoderRead(){ //odczyt wartości z pokrętła position = 0; long newPos = enc.read(); if(newPos != position){ position = newPos / 4; } } void ledRingConst(){ // zapalenie ringu ledowego ledRing.setPixelColor(0, ledRing.Color(R,G,B)); ledRing.setPixelColor(1, ledRing.Color(R,G,B)); ledRing.setPixelColor(2, ledRing.Color(R,G,B)); ledRing.setPixelColor(3, ledRing.Color(R,G,B)); ledRing.setPixelColor(4, ledRing.Color(R,G,B)); ledRing.setPixelColor(5, ledRing.Color(R,G,B)); ledRing.setPixelColor(6, ledRing.Color(R,G,B)); ledRing.setPixelColor(7, ledRing.Color(R,G,B)); ledRing.setPixelColor(8, ledRing.Color(R,G,B)); ledRing.setPixelColor(9, ledRing.Color(R,G,B)); ledRing.setPixelColor(10, ledRing.Color(R,G,B)); ledRing.setPixelColor(11, ledRing.Color(R,G,B)); ledRing.show(); } void timeSetting(){ //ustawienie kursora na ekranie i czasu timeMinutes = time / 60; if(timeMinutes > 9){ lcd.setCursor(6,2); lcd.print(timeMinutes); }else{ lcd.setCursor(6,2); lcd.print(" "); lcd.setCursor(7,2); lcd.print(timeMinutes); } lcd.setCursor(8,2); lcd.print(":"); timeSeconds = time - (timeMinutes * 60); lcd.setCursor(9,2); lcd.print(timeSeconds); if(timeSeconds == 0){ lcd.setCursor(10,2); lcd.print("0"); } } void loop() { while(menuMode == 0){ lcd.setCursor(0,0); lcd.print("-CARCASSONE-BRZDEK-TERRAFORMACJA-KRYPTYDA-7 CUDOW SWIATA-DISCOVERY-BRASS-ARNAK-"); lcd.scrollDisplayLeft(); delay(400); if(digitalRead(buttonConfirm) == LOW || digitalRead(buttonArcade) == LOW){ menuMode++; lcd.clear(); delay(200); } } while(menuMode == 1){ //okno menu z wyborem ilości graczy lcd.setCursor(0,0); lcd.print("PODAJ LICZBE GRACZY"); lcd.setCursor(5,1); lcd.print("OD 2 DO 6:" + lineClear); encoderRead(); players = position; Serial.println(position); lcd.setCursor(0,2); lcd.print(players + lineClear); if(digitalRead(buttonConfirm) == LOW){ menuMode++; lcd.clear(); delay(500); } } while(menuMode == 2){ //okno menu z wyborem kolejności graczy (kolorów) if(players > 6 || players < 2){ lcd.setCursor(0,0); lcd.print("BLEDNA ILOSC GRACZY!"); lcd.setCursor(2,1); lcd.print("PODAJ OD 2 DO 6"); delay(3000); menuMode--; lcd.clear(); } while(i < players && menuMode == 2){ lcd.setCursor(0,0); lcd.print("KOLOR " + String(player) + ". GRACZA"); encoderRead(); color = position; Serial.println(color); lcd.setCursor(0,2); lcd.print(color + lineClear); if(digitalRead(buttonCancel) == LOW){ menuMode--; } switch(color){ case 1: R = 200; G = 0; B = 0; ledRingConst(); break; case 2: R = 0; G = 200; B = 0; ledRingConst(); break; case 3: R = 0; G = 0; B = 200; ledRingConst(); break; } if(digitalRead(buttonConfirm) == LOW){ if(player == 1){ player1 = color; } if(player == 2){ player2 = color; } if(player == 3){ player3 = color; } if(player == 4){ player4 = color; } if(player == 5){ player5 = color; } if(player == 6){ player6 = color; } player++; i++; delay(500); } if(player > players){ menuMode++; lcd.clear(); } } while(menuMode == 3){ //okno menu z ustawieniem limitu czasu ruchu gracza lcd.setCursor(2,0); lcd.print("USTAW CZAS RUCHU"); encoderRead(); time = position * 15; Serial.println(timeSet); timeSetting(); if(digitalRead(buttonConfirm) == LOW){ timeSet = time; menuMode++; lcd.clear(); } if(digitalRead(buttonCancel) == LOW){ menuMode = 1; lcd.clear(); player = 1; players = 0; i = 0; delay(100); } } while(menuMode == 4){ lcd.setCursor(3,1); lcd.print("GRA USTAWIONA"); lcd.setCursor(6,2); lcd.print("START?"); delay(500); lcd.noDisplay(); delay(500); lcd.display(); if(digitalRead(buttonConfirm) == LOW){ menuMode++; lcd.clear(); } if(digitalRead(buttonCancel) == LOW){ menuMode--; lcd.clear(); timeSet = 0; delay(500); } } while(menuMode == 5){ lcd.setCursor(0,0); lcd.print("Czas gry:"); lcd.setCursor(0,1); lcd.print("Suma ruchow:"); lcd.setCursor(0,2); lcd.print("Czas ruchu:"); lcd.setCursor(0,3); lcd.print("MAGDA SZYBCIEJ!"); if(digitalRead(buttonPause) == LOW){ pauseStatus = true; //tutaj jakoś trzeba wymyśleć pauze, żeby działała zawsze i zatrzymywała wszystkie zegary } //tutaj miejsce na cały kod programu do liczenia czasu i przełączania graczy i kolorów } } }
Editor is loading...
Leave a Comment