first commit

This commit is contained in:
2024-10-25 21:07:12 +02:00
commit b6e91b934d
2 changed files with 119 additions and 0 deletions

0
README.md Normal file
View File

119
hw/bolak/bolak.ino Normal file
View File

@@ -0,0 +1,119 @@
#include <Stepper.h>
#include <ezButton.h>
ezButton fcP1B(8);
ezButton fcP1T(9);
ezButton resetBtn(6);
ezButton P1S1(7);
ezButton P1S2(30);
ezButton P1S3(31);
// 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;
// Variables de estado
bool estadoPulsadorAvance = false;
bool estadoPulsadorReset = false;
bool estadoAnteriorAvance = false;
//Variables de motor
int remainingSteps = 0;
const int MOTOR_INCREMENT = 50;
const int MOTOR_ONE_LAP = 6400;
int estadoFcP1B = 0;
int estadoFcP1T = 0;
// Variables de modo
enum modes {PLAYING, RESET, GAMEOVER};
modes currentMode = PLAYING; // playing, reset
void setup() {
pinMode(pinGameOverLight, OUTPUT);
pinMode(pinGameOverSiren, OUTPUT);
disableGameOver();
motor.setSpeed(2000); // Velocidad del motor en RPM
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");
}
void loop() {
fcP1B.loop();
fcP1T.loop();
resetBtn.loop();
P1S1.loop();
P1S2.loop();
P1S3.loop();
estadoFcP1B = fcP1B.getState();
estadoFcP1T = fcP1T.getState();
switch(currentMode){
case RESET:
modeReset();
break;
case GAMEOVER:
modeGameOver();
break;
default:
modePlaying();
break;
}
handleMotor();
if(resetBtn.isReleased()){
currentMode = RESET;
}
}
void handleMotor(){
if(estadoFcP1T){
currentMode = GAMEOVER;
return;
}
if(remainingSteps > 0) {
motor.step(MOTOR_INCREMENT);
remainingSteps -= MOTOR_INCREMENT;
}
}
void modeReset(){
disableGameOver();
if(!estadoFcP1B){
motor.step(-MOTOR_INCREMENT);
} else {
currentMode = PLAYING;
}
}
void modePlaying(){
if(P1S1.isReleased() || P1S2.isReleased() || P1S3.isReleased()){
remainingSteps += MOTOR_ONE_LAP;
}
}
void modeGameOver(){
remainingSteps = 0;
enableGameOver();
}
void enableGameOver(){
digitalWrite(pinGameOverSiren, LOW);
digitalWrite(pinGameOverLight, LOW);
}
void disableGameOver(){
digitalWrite(pinGameOverSiren, HIGH);
digitalWrite(pinGameOverLight, HIGH);
}