Skip to content

Instantly share code, notes, and snippets.

@davidae1704
Created August 3, 2017 03:39
Show Gist options
  • Save davidae1704/56dcdec238f0caba226c8ca3c32101c5 to your computer and use it in GitHub Desktop.
Save davidae1704/56dcdec238f0caba226c8ca3c32101c5 to your computer and use it in GitHub Desktop.
programa para arduino con función de interfaz para proyecto de concurso de preguntas
/*En el siguiente código se establecerá un protocolo de comunicación seríal entre nuestro Arduino
* y una PC para intercambio de información con respecto a las funciones y tareas que Arduino desempeñará
* detectar cual boton, de entre 3 botones, ha sido presionado primero e informarle a la PC sobre dicho
* dato para saber que concursante responderá primero
*/
// se declaran las variables a usar
int jugador1=3;
int jugador2=4;
int jugador3=5;
int jugador4=6;
int estado1=0;
int estado2=0;
int estado3=0;
int estado4=0;
boolean g1;
boolean g2;
boolean g3;
boolean g4;
char confirmacion;
int reset=0;
void setup() {
// sección para configurar pines a usar en nuestro arduino y habilitar la comunicación serial
pinMode(jugador1, INPUT);
pinMode(jugador2, INPUT);
pinMode(jugador3, INPUT);
pinMode(jugador4, INPUT);
pinMode(13, OUTPUT);
pinMode(7, INPUT);
//iniciamos nuestro puerto serial
Serial.begin(9600);
//los 9600 es la velocidad en baudios a la que se comunicará nuestro arduino con la computadora
while(!Serial){
//espera a que se conecte el puerto serial a la PC
}
}
void loop() {
// código principal donde se establecerán las funciones que realizará nuestro arduino
//Se realiza lectura de entradas a usar
estado1=digitalRead(jugador1);
estado2=digitalRead(jugador2);
estado3=digitalRead(jugador3);
estado4=digitalRead(jugador4);
//rutina de comprobación
if(estado1 == HIGH){
digitalWrite(13, HIGH);
delay(500);// retardo de medio segundo para evitar que las pulsaciones de los demás jugadores sean percibidas
digitalWrite(13, LOW);
Serial.println('a');// envío de parámetro de respuesta de jugador 1
//bucle de espera por confirmación para jugador 1
do{
delay(50);//retardo de 50 milisegundos luego de enviado parámetro de respuesta para jugador 1
//verifica boton de reset
reset=digitalRead(7);
if(reset == HIGH){
confirmacion = 'p';
//envía señal de reset a la PC
Serial.println('r');
}
else{
//lee del puerto la confirmación para el jugador 1
confirmacion = Serial.read();
}
}while(confirmacion != 'p');
//al recibir confirmación por parte de la PC la variable "confirmacion" es borrada
confirmacion = ' ';
}
else if(estado2 == HIGH){
digitalWrite(13, HIGH);
delay(500);// retardo de medio segundo para evitar que las pulsaciones de los demás jugadores sean percibidas
digitalWrite(13, LOW);
Serial.println('b');// envío de parámetro de respuesta de jugador 2
do{
delay(50);//retardo de 50 milisegundos luego de enviado parámetro de respuesta para jugador 2
//verifica boton de reset
reset=digitalRead(7);
if(reset == HIGH){
confirmacion = 'p';
//envía señal de reset a la PC
Serial.println('r');
}
else{
//lee del puerto la confirmación para el jugador 2
confirmacion = Serial.read();
}
}while(confirmacion != 'p');
//al recibir confirmación por parte de la PC la variable "confirmacion" es borrada
confirmacion = ' ';
}
else if(estado3 == HIGH){
digitalWrite(13, HIGH);
delay(500);// retardo de medio segundo para evitar que las pulsaciones de los demás jugadores sean percibidas
digitalWrite(13, LOW);
Serial.println('c');// envío de parámetro de respuesta de jugador 3
do{
delay(50);//retardo de 50 milisegundos luego de enviado parámetro de respuesta para jugador 3
//verifica boton de reset
reset=digitalRead(7);
if(reset == HIGH){
confirmacion = 'p';
//envía señal de reset a la PC
Serial.println('r');
}
else{
//lee del puerto la confirmación para el jugador 3
confirmacion = Serial.read();
}
}while(confirmacion != 'p');
//al recibir confirmación por parte de la PC la variable "confirmacion" es borrada
confirmacion = ' ';
}
else if(estado4 == HIGH){
digitalWrite(13, HIGH);
delay(500);// retardo de medio segundo para evitar que las pulsaciones de los demás jugadores sean percibidas
digitalWrite(13, LOW);
Serial.println('d');// envío de parámetro de respuesta de jugador 4
do{
delay(50);//retardo de 50 milisegundos luego de enviado parámetro de respuesta para jugador 4
//verifica boton de reset
reset = digitalRead(7);
if(reset == HIGH){
confirmacion = 'p';
//envía señal de reset a la PC
Serial.println('r');
}
else{
//lee del puerto la confirmación para el jugador 4
confirmacion = Serial.read();
}
}while(confirmacion != 'p');
//al recibir confirmación por parte de la PC la variable "confirmacion" es borrada
confirmacion = ' ';
}
else{
delay(10);// retardo de 10 milisegundos como espera en caso de no estar recibiendo nada por parte de los botones ni de la PC
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment