lunes, 28 de octubre de 2024

CODIGOS PARA EL CARRO ROBOT Y ROBOT OTTO

 Descarga el siguiente codigo para programar tu carro:

- Evasor de obstaculos

- Control remoto

- seguidor de Linea


Si las ruedas te giran en direcciones contrarias recuerda modificar en lo codigo los pines correspondientes a avanzar, retroceder y girar.

Codigos Carro

Codigos Robot Otto






jueves, 1 de agosto de 2024

CODIGO DE PROGRAMACION SIMON DICE

COPIA Y PEGA EL SIGUIENTE CODIGO:


//Canal de YouTube -> CONEXION TECNOLOGICA - CENTRO DE FORMACION

//Juego Simon dice

#define   BUZZER   7

#define   ENTRADA_A  13

#define   ENTRADA_B  12

#define   ENTRADA_C  11

#define   ENTRADA_D  10

#define   SALIDA_A   2

#define   SALIDA_B   3

#define   SALIDA_C   4

#define   SALIDA_D   5

int melodia[ ] = {262, 196, 196, 220, 196, 0, 247, 262};

int duracionNotas[] = {4, 8, 8, 4, 4, 4, 4, 4};

int nivelActual = 1;

int velocidad = 500;

const int NIVEL_MAX = 100;

int secuencia[NIVEL_MAX];

int secuenciaUsuario[NIVEL_MAX];


void setup(){

   pinMode(ENTRADA_D, INPUT);

   pinMode(ENTRADA_C, INPUT);

   pinMode(ENTRADA_B, INPUT);

   pinMode(ENTRADA_A, INPUT);

   pinMode(SALIDA_A, OUTPUT);

   pinMode(SALIDA_B, OUTPUT);

   pinMode(SALIDA_C, OUTPUT);

   pinMode(SALIDA_D, OUTPUT);

   digitalWrite(SALIDA_A, LOW);

   digitalWrite(SALIDA_B, LOW);

   digitalWrite(SALIDA_C, LOW);

   digitalWrite(SALIDA_D, LOW);

}


void loop(){

   if(nivelActual == 1){

      generaSecuencia();

      muestraSecuencia();

      leeSecuencia();

   }

   if(nivelActual != 1){

      muestraSecuencia();

      leeSecuencia();

   }

}


void muestraSecuencia(){

   digitalWrite(SALIDA_A, LOW);

   digitalWrite(SALIDA_B, LOW);

   digitalWrite(SALIDA_C, LOW);

   digitalWrite(SALIDA_D, LOW);

   for(int i = 0; i < nivelActual; i++){

      if( secuencia[i] == SALIDA_A ){

         tone(BUZZER, 200);

         delay(200);

         noTone(BUZZER);

      }

      if( secuencia[i] == SALIDA_B ){

         tone(BUZZER, 300);

         delay(200);

         noTone(BUZZER);

      }

      if( secuencia[i] == SALIDA_C ){

         tone(BUZZER, 400);

         delay(200);

         noTone(BUZZER);

      }

      if( secuencia[i] == SALIDA_D ){

         tone(BUZZER, 500);

         delay(200);

         noTone(BUZZER);

      }

      digitalWrite(secuencia[i], HIGH);

      delay(velocidad);

      digitalWrite(secuencia[i], LOW);

      delay(200);

   }

}


void leeSecuencia(){

   int flag = 0;

   for(int i = 0; i < nivelActual; i++){

      flag = 0;

      while(flag == 0){

         if(digitalRead(ENTRADA_D) == LOW){

            digitalWrite(SALIDA_D, HIGH);

            tone(BUZZER, 500);

            delay(300);

            noTone(BUZZER);

            secuenciaUsuario[i] = SALIDA_D;

            flag = 1;

            delay(200);

            if(secuenciaUsuario[i] != secuencia[i]){

               secuenciaError();

               return;

            }

            digitalWrite(SALIDA_D, LOW);

         }

         if(digitalRead(ENTRADA_C) == LOW){

            digitalWrite(SALIDA_C, HIGH);

            tone(BUZZER, 400);

            delay(300);

            noTone(BUZZER);

            secuenciaUsuario[i] = SALIDA_C;

            flag = 1;

            delay(200);

            if(secuenciaUsuario[i] != secuencia[i]){

               secuenciaError();

               return;

            }

            digitalWrite(SALIDA_C, LOW);

         }

         if(digitalRead(ENTRADA_B) == LOW){

            digitalWrite(SALIDA_B, HIGH);

            tone(BUZZER, 300);

            delay(300);

            noTone(BUZZER);

            secuenciaUsuario[i] = SALIDA_B;

            flag = 1;

            delay(200);

            if(secuenciaUsuario[i] != secuencia[i]){

               secuenciaError();

               return;

            }

            digitalWrite(SALIDA_B, LOW);

         }

         if(digitalRead(ENTRADA_A) == LOW){

            digitalWrite(SALIDA_A, HIGH);

            tone(BUZZER, 200);

            delay(300);

            noTone(BUZZER);

            secuenciaUsuario[i] = SALIDA_A;

            flag = 1;

            delay(200);

            if(secuenciaUsuario[i] != secuencia[i]){

               secuenciaError();

               return;

            }

            digitalWrite(SALIDA_A, LOW);

         }

      }

   }

   secuenciaCorrecta();

}


void generaSecuencia(){

   randomSeed(millis());

   for(int i = 0; i < NIVEL_MAX; i++){

      secuencia[i] = random(2,6);

   }

}


void melodiaError(){

   for(int i = 0; i < 8; i++){

      int duracionNota = 1000/duracionNotas[i];

      tone(BUZZER, melodia[i], duracionNota); // Corrección aquí

      int pausaEntreNotas = duracionNota * 1.30;

      delay(pausaEntreNotas);

      noTone(BUZZER);

   }

}


void secuenciaError(){

   digitalWrite(SALIDA_A, HIGH);

   digitalWrite(SALIDA_B, HIGH);

   digitalWrite(SALIDA_C, HIGH);

   digitalWrite(SALIDA_D, HIGH);

   delay(250);

   digitalWrite(SALIDA_A, LOW);

   digitalWrite(SALIDA_B, LOW);

   digitalWrite(SALIDA_C, LOW);

   digitalWrite(SALIDA_D, LOW);

   delay(250);

   melodiaError();

   nivelActual = 1;

   velocidad = 500;

}


void secuenciaCorrecta(){

   if(nivelActual < NIVEL_MAX)

      nivelActual++;

   velocidad -= 50;

   delay(200);

}

miércoles, 31 de julio de 2024