Delay entfernt, cpu auf 160MHz, Ton gerichtet
This commit is contained in:
parent
682a8345ab
commit
b0405eef7c
2 changed files with 180 additions and 55 deletions
|
@ -16,3 +16,7 @@ lib_deps =
|
|||
adafruit/Adafruit WS2801 Library@^1.1.1
|
||||
lbernstone/Tone32@^1.0.0
|
||||
platform = espressif32
|
||||
|
||||
|
||||
; set frequency to 160MHz
|
||||
board_build.f_cpu = 160000000L
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <Arduino.h>
|
||||
#include <Adafruit_WS2801.h>
|
||||
#include <Tone32.h>
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
|
||||
/**
|
||||
* Player 1: x = 0
|
||||
|
@ -11,6 +12,7 @@
|
|||
#define PIN_JOYSTICK_1_BUTTON 12
|
||||
#define PIN_JOYSTICK_2_BUTTON 26
|
||||
#define PIN_PIEZO 17
|
||||
#define CHANNEL_PIEZO 1
|
||||
#define PIN_JOYSTICK_1_Y 13
|
||||
#define PIN_JOYSTICK_2_Y 27
|
||||
#define PIN_JOYSTICK_1_X 14
|
||||
|
@ -39,11 +41,11 @@
|
|||
#define PADDLE_MOVE_UP 1
|
||||
#define PADDLE_MOVE_DOWN 2
|
||||
|
||||
#define LED_TYPE_OFF 1
|
||||
#define LED_TYPE_OFF 1
|
||||
#define LED_TYPE_PADDLE_BLUE 2
|
||||
#define LED_TYPE_PADDLE_RED 3
|
||||
#define LED_TYPE_BALL 4
|
||||
#define LED_TYPE_BALL_YELLOW 5
|
||||
#define LED_TYPE_BALL 4
|
||||
#define LED_TYPE_BALL_YELLOW 5
|
||||
#define LED_TYPE_POINTS_BLUE 6
|
||||
#define LED_TYPE_POINTS_RED 7
|
||||
|
||||
|
@ -51,10 +53,18 @@
|
|||
#define TONE_WALL 2
|
||||
#define TONE_BUZZ 3
|
||||
|
||||
#define GAME_STATE_RUNNING 1
|
||||
#define GAME_STATE_END 2
|
||||
#define GAME_STATE_INIT 3
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
#define GAME_STATE_RUNNING 1
|
||||
#define GAME_STATE_END 2
|
||||
#define GAME_STATE_INIT 3
|
||||
#define GAME_STATE_INACTIVE 4
|
||||
#define GAME_STATE_PLAY_WITH_ME 5
|
||||
|
||||
#define LIGHT_STATE_BAGGROUND 1
|
||||
#define LIGHT_STATE_PLAY 2
|
||||
#define LIGHT_STATE_WITH 3
|
||||
#define LIGHT_STATE_ME 4
|
||||
#define LIGHT_STATE_END 5
|
||||
|
||||
|
||||
uint8_t dataPin = 2;
|
||||
uint8_t clockPin = 4;
|
||||
|
@ -89,10 +99,12 @@ void toggleLed(byte x, byte y, byte type);
|
|||
byte getPlayerMovement(byte playerId);
|
||||
void endGame();
|
||||
void attentionLight();
|
||||
void attentionLight1();
|
||||
unsigned long delay_light = millis();
|
||||
byte lightState = LIGHT_STATE_BAGGROUND;
|
||||
boolean delay_light_high = true;
|
||||
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
static uint32_t Color(uint8_t r, uint8_t g, uint8_t b) {
|
||||
return ((uint32_t)r << 16) | ((uint32_t)g << 8) | b;
|
||||
}
|
||||
|
@ -128,6 +140,8 @@ static uint32_t Color(uint8_t r, uint8_t g, uint8_t b) {
|
|||
|
||||
void setup()
|
||||
{
|
||||
ledcAttachPin(PIN_PIEZO , CHANNEL_PIEZO);
|
||||
ledcSetup(CHANNEL_PIEZO, 10000, 16);
|
||||
pinMode(PIN_JOYSTICK_1_Y, INPUT);
|
||||
pinMode(PIN_JOYSTICK_1_BUTTON, INPUT_PULLUP);
|
||||
pinMode(PIN_JOYSTICK_2_Y, INPUT);
|
||||
|
@ -147,6 +161,8 @@ void loop()
|
|||
switch(gameState) {
|
||||
case GAME_STATE_INIT:
|
||||
|
||||
lightState = LIGHT_STATE_BAGGROUND;
|
||||
delay_light_high = true;
|
||||
initGame();
|
||||
break;
|
||||
case GAME_STATE_RUNNING:
|
||||
|
@ -157,14 +173,34 @@ void loop()
|
|||
if (isButtonPressed()) {
|
||||
gameState = GAME_STATE_INIT;
|
||||
}
|
||||
else if (millis() - lastDrawUpdate > 30000)
|
||||
else if (millis() - lastDrawUpdate > 3000 && millis() - lastDrawUpdate < 30000 && millis() - delay_light >= 500 && false == delay_light_high || millis() - lastDrawUpdate > 15000 && millis() - lastDrawUpdate < 30000 && millis() - delay_light >= 500 && true == delay_light_high )
|
||||
{
|
||||
resetLEDs();
|
||||
pointsPlayerBlue = 0;
|
||||
pointsPlayerRed = 0;
|
||||
attentionLight();
|
||||
gameState = GAME_STATE_INACTIVE;
|
||||
}
|
||||
|
||||
else if (millis() - lastDrawUpdate > 30000 && millis() - delay_light >= 1500)
|
||||
{
|
||||
gameState = GAME_STATE_PLAY_WITH_ME;
|
||||
}
|
||||
|
||||
break;
|
||||
case GAME_STATE_INACTIVE:
|
||||
|
||||
resetLEDs();
|
||||
pointsPlayerBlue = 0;
|
||||
pointsPlayerRed = 0;
|
||||
attentionLight1();
|
||||
gameState = GAME_STATE_END;
|
||||
break;
|
||||
|
||||
case GAME_STATE_PLAY_WITH_ME:
|
||||
|
||||
resetLEDs();
|
||||
pointsPlayerBlue = 0;
|
||||
pointsPlayerRed = 0;
|
||||
attentionLight();
|
||||
gameState = GAME_STATE_END;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -484,54 +520,139 @@ void attentionLight()
|
|||
int with [46] = {13,14,15,16,17,18,22,36,42,58,57,56,55,54,53,73,74,75,76,77,78,93,106,114,126,133,115,116,117,118,113,154,155,156,157,158,153,163,176,183,193,195,196,197,198,194};
|
||||
int me [30] = {53,54,55,56,57,58,65,75,85,93,94,95,96,97,98,113,114,115,116,117,118,126,138,146,121,133,144,124,135,141};
|
||||
|
||||
|
||||
|
||||
for (int i = 0; i< 200; i++)
|
||||
switch (lightState)
|
||||
{
|
||||
pixels.setPixelColor(i,Color(0,5,5));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
delay(1000);
|
||||
|
||||
for (int i = 0; i<44; i++)
|
||||
{
|
||||
pixels.setPixelColor(play[i],Color(255,0,0));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
delay(1500);
|
||||
|
||||
for (int i = 0; i< 200; i++)
|
||||
{
|
||||
pixels.setPixelColor(i,Color(5,5,5));
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i<46; i++)
|
||||
{
|
||||
pixels.setPixelColor(with[i],Color(255,0,0));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
delay(1500);
|
||||
|
||||
case LIGHT_STATE_BAGGROUND:
|
||||
|
||||
for (int i = 0; i< 200; i++)
|
||||
{
|
||||
pixels.setPixelColor(i,Color(5,5,5));
|
||||
}
|
||||
{
|
||||
pixels.setPixelColor(i,Color(0,5,5));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
lightState = LIGHT_STATE_PLAY;
|
||||
delay_light = millis();
|
||||
|
||||
break;
|
||||
|
||||
case LIGHT_STATE_PLAY:
|
||||
|
||||
for (int i = 0; i<44; i++)
|
||||
{
|
||||
pixels.setPixelColor(play[i],Color(255,0,0));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
lightState = LIGHT_STATE_WITH;
|
||||
delay_light = millis();
|
||||
break;
|
||||
|
||||
case LIGHT_STATE_WITH:
|
||||
|
||||
for (int i = 0; i< 200; i++)
|
||||
{
|
||||
pixels.setPixelColor(i,Color(5,5,5));
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i<30; i++)
|
||||
{
|
||||
pixels.setPixelColor(me[i],Color(255,0,0));
|
||||
for (int i = 0; i<46; i++)
|
||||
{
|
||||
pixels.setPixelColor(with[i],Color(255,0,0));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
lightState = LIGHT_STATE_ME;
|
||||
delay_light = millis();
|
||||
break;
|
||||
|
||||
case LIGHT_STATE_ME:
|
||||
|
||||
for (int i = 0; i< 200; i++)
|
||||
{
|
||||
pixels.setPixelColor(i,Color(5,5,5));
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i<30; i++)
|
||||
{
|
||||
pixels.setPixelColor(me[i],Color(255,0,0));
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
|
||||
lightState = LIGHT_STATE_END;
|
||||
delay_light = millis();
|
||||
|
||||
break;
|
||||
|
||||
case LIGHT_STATE_END:
|
||||
|
||||
lastDrawUpdate = millis();
|
||||
resetLEDs();
|
||||
lightState = LIGHT_STATE_BAGGROUND;
|
||||
|
||||
default:
|
||||
|
||||
lastDrawUpdate = millis();
|
||||
lightState = LIGHT_STATE_BAGGROUND;
|
||||
break;
|
||||
}
|
||||
|
||||
pixels.show();
|
||||
delay(1500);
|
||||
|
||||
lastDrawUpdate = millis();
|
||||
resetLEDs();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void attentionLight1()
|
||||
{
|
||||
byte r = random(1,255);
|
||||
byte g = random(1,255);
|
||||
byte b = random(1,255);
|
||||
byte n = random(199);
|
||||
|
||||
pixels.setPixelColor(n,r,g,b);
|
||||
byte r1 = random(1,255);
|
||||
byte g1 = random(1,255);
|
||||
byte b1 = random(1,255);
|
||||
byte n1 = random(199);
|
||||
|
||||
pixels.setPixelColor(n1,r1,g1,b1);
|
||||
pixels.show();
|
||||
delay_light = millis();
|
||||
delay_light_high = false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool is_waiting_for_ms(unsigned long wait_time_ms)
|
||||
{
|
||||
static bool is_waiting = false;
|
||||
static unsigned long start_ms = 0;
|
||||
static unsigned long static_wait_time_ms = 0;
|
||||
if (false == is_waiting)
|
||||
{
|
||||
start_ms = millis();
|
||||
is_waiting = true;
|
||||
static_wait_time_ms = wait_time_ms;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (millis() - static_wait_time_ms >= start_ms )
|
||||
{
|
||||
is_waiting = false;
|
||||
}
|
||||
}
|
||||
return is_waiting;
|
||||
}
|
Loading…
Reference in a new issue