Aurrerapenak
This commit is contained in:
@@ -3,22 +3,28 @@
|
||||
|
||||
#include <ezButton.h>
|
||||
|
||||
//Finales de carrera motor
|
||||
ezButton fcP1B(9);
|
||||
ezButton fcP1T(8);
|
||||
|
||||
ezButton fcP1B(8);
|
||||
ezButton fcP1T(9);
|
||||
//Btn reset
|
||||
ezButton resetBtn(6);
|
||||
ezButton P1S1(7);
|
||||
ezButton P1S2(30);
|
||||
ezButton P1S3(31);
|
||||
|
||||
//Finales de carrera puntos
|
||||
ezButton P1S1(12);
|
||||
ezButton P1S2(11);
|
||||
ezButton P1S3(10);
|
||||
|
||||
//Quitar para desactivar debug
|
||||
#define DEBUG
|
||||
|
||||
// Configuración del motor paso a paso
|
||||
const int pasosPorRevolucion = 200; // Depende de tu motor
|
||||
Stepper motor(pasosPorRevolucion, 4, 5); // Pines del Arduino al driver del motor
|
||||
|
||||
//Pins Gameover
|
||||
int pinGameOverLight = 11;
|
||||
int pinGameOverSiren = 10;
|
||||
int pinGameOverLight = 3;
|
||||
int pinGameOverSiren = 2;
|
||||
|
||||
// Variables de estado
|
||||
bool estadoPulsadorAvance = false;
|
||||
@@ -27,8 +33,12 @@ bool estadoAnteriorAvance = false;
|
||||
|
||||
//Variables de motor
|
||||
int remainingSteps = 0;
|
||||
|
||||
//Constantes de motor
|
||||
const int MOTOR_INCREMENT = 50;
|
||||
const int MOTOR_INCREMENT_RESET = 50;
|
||||
const int MOTOR_ONE_LAP = 6400;
|
||||
|
||||
int estadoFcP1B = 0;
|
||||
int estadoFcP1T = 0;
|
||||
|
||||
@@ -36,6 +46,15 @@ int estadoFcP1T = 0;
|
||||
enum modes {PLAYING, RESET, GAMEOVER};
|
||||
modes currentMode = PLAYING; // playing, reset
|
||||
|
||||
int gameOverDelay = 500;
|
||||
bool gameOverShowEnded = false;
|
||||
|
||||
void debug(String message){
|
||||
#ifdef DEBUG
|
||||
Serial.println(message);
|
||||
#endif
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(pinGameOverLight, OUTPUT);
|
||||
pinMode(pinGameOverSiren, OUTPUT);
|
||||
@@ -45,8 +64,10 @@ void setup() {
|
||||
fcP1B.setDebounceTime(50); // set debounce time to 50 milliseconds
|
||||
fcP1T.setDebounceTime(50); // set debounce time to 50 milliseconds
|
||||
resetBtn.setDebounceTime(50); // set debounce time to 50 milliseconds
|
||||
Serial.begin(9600);
|
||||
Serial.println("hasiera");
|
||||
#ifdef DEBUG
|
||||
Serial.begin(9600);
|
||||
Serial.println("hasiera");
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop() {
|
||||
@@ -94,26 +115,51 @@ void handleMotor(){
|
||||
void modeReset(){
|
||||
disableGameOver();
|
||||
if(!estadoFcP1B){
|
||||
motor.step(-MOTOR_INCREMENT);
|
||||
motor.step(-MOTOR_INCREMENT_RESET);
|
||||
} else {
|
||||
currentMode = PLAYING;
|
||||
}
|
||||
}
|
||||
void modePlaying(){
|
||||
if(P1S1.isReleased() || P1S2.isReleased() || P1S3.isReleased()){
|
||||
debug("Points");
|
||||
remainingSteps += MOTOR_ONE_LAP;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void modeGameOver(){
|
||||
remainingSteps = 0;
|
||||
digitalWrite(pinGameOverLight, LOW);
|
||||
enableGameOver();
|
||||
}
|
||||
void enableGameOver(){
|
||||
digitalWrite(pinGameOverSiren, LOW);
|
||||
digitalWrite(pinGameOverLight, LOW);
|
||||
showGameOver();
|
||||
debug("GameOver enabled");
|
||||
}
|
||||
void disableGameOver(){
|
||||
gameOverShowEnded = false;
|
||||
digitalWrite(pinGameOverSiren, HIGH);
|
||||
digitalWrite(pinGameOverLight, HIGH);
|
||||
debug("GameOver disabled");
|
||||
}
|
||||
|
||||
|
||||
void showGameOver(){
|
||||
if(gameOverShowEnded)
|
||||
return;
|
||||
|
||||
for(int i = 0; i< 3; i++){
|
||||
digitalWrite(pinGameOverSiren, LOW);
|
||||
digitalWrite(pinGameOverLight, LOW);
|
||||
|
||||
delay(gameOverDelay);
|
||||
|
||||
digitalWrite(pinGameOverSiren, HIGH);
|
||||
digitalWrite(pinGameOverLight, HIGH);
|
||||
|
||||
delay(gameOverDelay);
|
||||
}
|
||||
gameOverShowEnded = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user