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
|
adafruit/Adafruit WS2801 Library@^1.1.1
|
||||||
lbernstone/Tone32@^1.0.0
|
lbernstone/Tone32@^1.0.0
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
|
|
||||||
|
|
||||||
|
; set frequency to 160MHz
|
||||||
|
board_build.f_cpu = 160000000L
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <Adafruit_WS2801.h>
|
#include <Adafruit_WS2801.h>
|
||||||
#include <Tone32.h>
|
#include <Tone32.h>
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Player 1: x = 0
|
* Player 1: x = 0
|
||||||
|
@ -11,6 +12,7 @@
|
||||||
#define PIN_JOYSTICK_1_BUTTON 12
|
#define PIN_JOYSTICK_1_BUTTON 12
|
||||||
#define PIN_JOYSTICK_2_BUTTON 26
|
#define PIN_JOYSTICK_2_BUTTON 26
|
||||||
#define PIN_PIEZO 17
|
#define PIN_PIEZO 17
|
||||||
|
#define CHANNEL_PIEZO 1
|
||||||
#define PIN_JOYSTICK_1_Y 13
|
#define PIN_JOYSTICK_1_Y 13
|
||||||
#define PIN_JOYSTICK_2_Y 27
|
#define PIN_JOYSTICK_2_Y 27
|
||||||
#define PIN_JOYSTICK_1_X 14
|
#define PIN_JOYSTICK_1_X 14
|
||||||
|
@ -39,11 +41,11 @@
|
||||||
#define PADDLE_MOVE_UP 1
|
#define PADDLE_MOVE_UP 1
|
||||||
#define PADDLE_MOVE_DOWN 2
|
#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_BLUE 2
|
||||||
#define LED_TYPE_PADDLE_RED 3
|
#define LED_TYPE_PADDLE_RED 3
|
||||||
#define LED_TYPE_BALL 4
|
#define LED_TYPE_BALL 4
|
||||||
#define LED_TYPE_BALL_YELLOW 5
|
#define LED_TYPE_BALL_YELLOW 5
|
||||||
#define LED_TYPE_POINTS_BLUE 6
|
#define LED_TYPE_POINTS_BLUE 6
|
||||||
#define LED_TYPE_POINTS_RED 7
|
#define LED_TYPE_POINTS_RED 7
|
||||||
|
|
||||||
|
@ -51,10 +53,18 @@
|
||||||
#define TONE_WALL 2
|
#define TONE_WALL 2
|
||||||
#define TONE_BUZZ 3
|
#define TONE_BUZZ 3
|
||||||
|
|
||||||
#define GAME_STATE_RUNNING 1
|
#define GAME_STATE_RUNNING 1
|
||||||
#define GAME_STATE_END 2
|
#define GAME_STATE_END 2
|
||||||
#define GAME_STATE_INIT 3
|
#define GAME_STATE_INIT 3
|
||||||
#include <Adafruit_NeoPixel.h>
|
#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 dataPin = 2;
|
||||||
uint8_t clockPin = 4;
|
uint8_t clockPin = 4;
|
||||||
|
@ -89,10 +99,12 @@ void toggleLed(byte x, byte y, byte type);
|
||||||
byte getPlayerMovement(byte playerId);
|
byte getPlayerMovement(byte playerId);
|
||||||
void endGame();
|
void endGame();
|
||||||
void attentionLight();
|
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) {
|
static uint32_t Color(uint8_t r, uint8_t g, uint8_t b) {
|
||||||
return ((uint32_t)r << 16) | ((uint32_t)g << 8) | 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()
|
void setup()
|
||||||
{
|
{
|
||||||
|
ledcAttachPin(PIN_PIEZO , CHANNEL_PIEZO);
|
||||||
|
ledcSetup(CHANNEL_PIEZO, 10000, 16);
|
||||||
pinMode(PIN_JOYSTICK_1_Y, INPUT);
|
pinMode(PIN_JOYSTICK_1_Y, INPUT);
|
||||||
pinMode(PIN_JOYSTICK_1_BUTTON, INPUT_PULLUP);
|
pinMode(PIN_JOYSTICK_1_BUTTON, INPUT_PULLUP);
|
||||||
pinMode(PIN_JOYSTICK_2_Y, INPUT);
|
pinMode(PIN_JOYSTICK_2_Y, INPUT);
|
||||||
|
@ -147,6 +161,8 @@ void loop()
|
||||||
switch(gameState) {
|
switch(gameState) {
|
||||||
case GAME_STATE_INIT:
|
case GAME_STATE_INIT:
|
||||||
|
|
||||||
|
lightState = LIGHT_STATE_BAGGROUND;
|
||||||
|
delay_light_high = true;
|
||||||
initGame();
|
initGame();
|
||||||
break;
|
break;
|
||||||
case GAME_STATE_RUNNING:
|
case GAME_STATE_RUNNING:
|
||||||
|
@ -157,14 +173,34 @@ void loop()
|
||||||
if (isButtonPressed()) {
|
if (isButtonPressed()) {
|
||||||
gameState = GAME_STATE_INIT;
|
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();
|
gameState = GAME_STATE_INACTIVE;
|
||||||
pointsPlayerBlue = 0;
|
|
||||||
pointsPlayerRed = 0;
|
|
||||||
attentionLight();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (millis() - lastDrawUpdate > 30000 && millis() - delay_light >= 1500)
|
||||||
|
{
|
||||||
|
gameState = GAME_STATE_PLAY_WITH_ME;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
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 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};
|
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};
|
||||||
|
|
||||||
|
switch (lightState)
|
||||||
|
|
||||||
for (int i = 0; i< 200; i++)
|
|
||||||
{
|
{
|
||||||
pixels.setPixelColor(i,Color(0,5,5));
|
case LIGHT_STATE_BAGGROUND:
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i< 200; i++)
|
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<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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i<30; i++)
|
|
||||||
{
|
|
||||||
pixels.setPixelColor(me[i],Color(255,0,0));
|
|
||||||
}
|
|
||||||
|
|
||||||
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