This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Piedra, papel y tijera con bluetooth (Proyecto Arduino)
#1
Hola, buenas tardes tengo un problemilla, recientemente he estado trabajando con dos leds rgb y bluetooth. Por favor echenme una mano, gracias de antemano, les dejo el código.

#define CARACTER_INICIO_CMD '*'
#define CARACTER_FINAL_CMD '#'
#define CARACTER_DIV_CMD '|'
#define ESCRITURA_DIGITAL_CMD 10
#define ESCRITURA_ANALOGA_CMD 11
#define TEXTO_CMD 12
#define LECTURA_ARDUDROID_CMD 13
#define MAX_COMMAND 20
#define MIN_COMMAND 10
#define LONGITUD_ENTRADA_STRING 40
#define ESCRITURA_ANALOGICA_MAX 255
#define PIN_ALTO 3
#define PIN_BAJO 2

String inText;
// Definimos constantes para el primer led RGB
#define led1Rojo 3
#define led1Verde 5
#define led1Azul 6

// Definimos constantes para el segundo led RGB
#define led2Rojo 9
#define led2Verde 10
#define led2Azul 11

// Almacena el valor de nuestra elección
char MiOpcion;

// Almacena el valor de la elección de Arduino
int respuestaArduino;

void setup() {
Serial.begin(9600);
Serial.println("elprofegarcia.com");
Serial.flush();
// Estableciendo puertos como salida para el primer led RGB
pinMode(led1Rojo, OUTPUT);
pinMode(led1Verde, OUTPUT);
pinMode(led1Azul, OUTPUT);

// Estableciendo puertos como salida para el segundo led RGB
pinMode(led2Rojo, OUTPUT);
pinMode(led2Verde, OUTPUT);
pinMode(led2Azul, OUTPUT);

// Inicia la conexión serial a una velocidad de 9600 bits por segundo
Serial.begin(9600);
//Imprime en pantalla los siguientes mensajes
Serial.println("Arduino te da la bienvenida listo para jugar, empecemos!!");
Serial.println("Introduce 0 para elegir piedra, 1 para papel o 2 para tijera");

}





void loop() {
Serial.flush();
int ard_command = 0;
int pin_num = 0;
int pin_value = 0;

char get_char = ' '; //lee serial

// esperar a que los datos entren
if (Serial.available() < 1) return; // si no hay datos en el serial retornar al Loop().

// analizar entrada de indicador de inicio de comando
get_char = Serial.read();
if (get_char != CARACTER_INICIO_CMD) return; // si no hay indicación de inicio del sistema, volver loop ().
// parse incoming command type
ard_command = Serial.parseInt(); // read the command

// analizar el tipo de comando entrante
pin_num = Serial.parseInt(); // leer el pin
pin_value = Serial.parseInt(); // leer el valor

// 1) OBTENER COMANDO DE TEXTO PARA ARDUDROID
if (ard_command == TEXTO_CMD){
inText =""; // borra variable para nueva entrada
while (Serial.available()) {
char c = Serial.read(); // recibe un byte de la memoria intermedia serie
delay(5);
if (c == CARACTER_FINAL_CMD) { // si la cadena completa ha sido leida
// add your code here
break;
}
else {
if (c != CARACTER_DIV_CMD) {
inText += c;
delay(5);
}
}
}
}

// 2) OBTENER DATOS DE digitalWrite ARDUDROID
if (ard_command == ESCRITURA_DIGITAL_CMD){
if (pin_value == PIN_BAJO) pin_value = LOW;
else if (pin_value == PIN_ALTO) pin_value = HIGH;
else return; // error en el valor de PIN. regresar.
set_digitalwrite( pin_num, pin_value); // Eliminar el comentario de esta función para utilizarla
return; // regrese al inicio de loop()
}

// 3) GET analogWrite DATA FROM ARDUDROID
if (ard_command == ESCRITURA_ANALOGA_CMD) {
analogWrite( pin_num, pin_value );
// add your code here
return; // Done. return to loop();
}

// 4) Enviar datos a ARDUDROID
if (ard_command == LECTURA_ARDUDROID_CMD) {
// char send_to_android[] = " Coloca el texto aquí." ;
// Serial.println(send_to_android); // Ejemplo: Envío de texto
Serial.print(" Analogo 0 = ");
Serial.println(analogRead(A0)); // Ejemplo: Leer y enviar valor analógico del Pin de Arduino
return; // Listoe. regrese al loop();
}
}

// 2a) seleccionar el pin # solicitado para la acción digitalWrite
void set_digitalwrite(int pin_num, int pin_value)
{
switch (pin_num) {
case 13:
pinMode(13, OUTPUT);
digitalWrite(13, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 12:
pinMode(12, OUTPUT);
digitalWrite(12, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 11:
pinMode(11, OUTPUT);
digitalWrite(11, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 10:
pinMode(10, OUTPUT);
digitalWrite(10, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 9:
pinMode(9, OUTPUT);
digitalWrite(9, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 8:
pinMode(8, OUTPUT);
digitalWrite(8, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 7:
pinMode(7, OUTPUT);
digitalWrite(7, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 6:
pinMode(6, OUTPUT);
digitalWrite(6, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 5:
pinMode(5, OUTPUT);
digitalWrite(5, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 4:
pinMode(4, OUTPUT);
digitalWrite(4, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 3:
pinMode(3, OUTPUT);
digitalWrite(3, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
case 2:
pinMode(2, OUTPUT);
digitalWrite(2, pin_value);
// adicione su código aquí, para este número de pin del Arduino
break;
// por defecto
// si nada más fue seleccionado, hacer el defecto (default)
// default es opcional
}
}
void verMiOpcion(int Rojo, int Verde, int Azul){

analogWrite(led1Rojo, 255-Rojo);
analogWrite(led1Verde, 255-Verde);
analogWrite(led1Azul, 255-Azul);

}

int opcionArduino(){

int aleatorio = random(0,3); //int aleatorio = random(min,max)
//int aleatorio = random(0,300)
//elegirá un número entre 0 y 300,
//es decir 0,1,2....297,298 y 299
//NO ELEGIRÁ EL 300
if(aleatorio == 0){
Serial.println("Arduino ha elegido piedra");
verOpcionArduino(255,0,0);
}

if(aleatorio == 1){
Serial.println("Arduino ha elegido papel");
verOpcionArduino(0,255,0);
}

if(aleatorio == 2){
Serial.println("Arduino ha elegido tijera");
verOpcionArduino(0,0,255);
}

// esta función devuelve la elección de arduino
// esta es asignada la variable respuestaArduino
return aleatorio;

}

void verOpcionArduino(int Rojo, int Verde, int Azul){

analogWrite(led2Rojo, 255-Rojo);
analogWrite(led2Verde, 255-Verde);
analogWrite(led2Azul, 255-Azul);

}
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Alguien me podría ayudar con este proyecto ocmonpa 1 621 16-01-2021, 11:18 PM
Último mensaje: asesorplaza1
  APORTE mp3 catalex y bluetooth hc 06 katxarix 0 873 18-04-2020, 10:20 AM
Último mensaje: katxarix
  CONSULTA AUMENTAR ALCANCE MÓDULO BLUETOOTH AT-09 CON ANTENA Alvaro Braca 3 2,704 14-03-2019, 09:12 AM
Último mensaje: Merenat
  APORTE Control de Persiana por bluetooth kuadri 0 1,467 16-06-2018, 11:33 PM
Último mensaje: kuadri
  Problema con bluetooth y comandos AT sejiozosky 41 17,481 06-05-2018, 11:48 AM
Último mensaje: Iván