Reto 3

Para poder realizar este reto, al principio miré todas las referencias que habían en el apartado de las ideas clave, para ver si alguna me llamaba la atención. Al no encontrar ninguno busqué en la web y encontré dos páginas que me parecieron interesantes y que quiero compartir con vosotros:

https://www.educaciontrespuntocero.com/recursos/webs-y-tutoriales-arduino-secundaria-bachillerato/44374.html

http://elcajondeardu.blogspot.com.es/p/tutoriales.html

Después de unos días estuve pensando en que proyecto me gustaría llevar a mi colegio y al final pensé en un semáforo con sensor de sonido para poderlo utilizar tanto en el comedor escolar como en el aula.

Y por fin después de buscar algo más específico lo encontré. Es un proyecto que se llevó a cabo con los alumnos de primero en el módulo de equipos eléctricos y electrónicos del I.E.S. Al-Baytar. Presentan dos prototipos; el primer prototipo tiene el aspecto visual de un semáforo de tráfico con tres luces LED´S de colores y en disposición de distintas caritas . El segundo prototipo, o disposición Nano, presenta los distintos iconos en la pantalla del ordenador, al que va conectado al prototipo mediante USB.

Voy a analizar el primer prototipo puesto que considero que es más visual para los niños pequeños.

MATERIALES NECESARIOS:

-Una placa Arduino Nano V3.0

-Una placa sensor de sonido con micrófono

-Doble AM- OP LM 393

-25 LED´S para cada uno de los colores (Rojo, amarillo y verde)

-3 transistores de tipo NPN (BC547)

-Un regulador de tensión positiva LM7805 y algunas resistencias.

-La alimentación se realiza con 6 pilas AA de 1,5V calculando una autonomía de más de 20 horas. Aunque también puede conectarse a una fuente de alimentación de 9Vcc conectada a la red.


FOTOS DEL PROCESO DE CONSTRUCCIÓN:

ESQUEMA GENERAL:

ESQUEMA DE CONEXIÓN Y ALIMENTACIÓN LED´S:

CÓDIGO DEL PROGRAMA:

// DEFINICIONES //
#define PIN_LED_ROJO      4
#define PIN_LED_AMARILLO  5
#define PIN_LED_VERDE     6
#define PIN_SONIDO        3
#define PIN_V_POTENC      9

// VARIABLES GLOBALES //
long veces_leido = 0;
long veces_on = 0;
int Potenciometro_A0 = A0;
long Valor_Potenciometro = 0;
long para_rango_led_verde, para_rango_led_rojo;

// INICIALIZACIÓN DE LA PLACA ARDUINO NANO V3.0//
void setup() {
   pinMode(PIN_LED_ROJO, OUTPUT); 
   pinMode(PIN_LED_AMARILLO, OUTPUT); 
   pinMode(PIN_LED_VERDE, OUTPUT);
   pinMode(PIN_V_POTENC, OUTPUT); 
   pinMode(PIN_SONIDO, INPUT_PULLUP);
   digitalWrite(PIN_LED_VERDE, HIGH);
   
   Serial.begin(9600);
}

// PROGRAMA PRINCIPAL //
void loop() {

  // Primeramente se lee el valor del PIN DIGITAL del MÓDULO DE SONIDO //
  // 200.000 veces y se contabilizan las que superan el umbral         //
  for ( veces_leido = 0, veces_on=0; veces_leido <= 200000; veces_leido++){
    if (!digitalRead(PIN_SONIDO)) veces_on++;
  }
  
  // Se lee el valor del potenciómetro escribiendo primeramente un bit en PIN_V_POTENC //
  digitalWrite(PIN_V_POTENC, HIGH);
  Valor_Potenciometro = analogRead(Potenciometro_A0);
  digitalWrite(PIN_V_POTENC, LOW);

  // Se calculan los umbrales para iluminar los led's correspondientes          //
  // en función de la sensiblidad ajustada en el potenciómetro       //

  para_rango_led_rojo  = long (1000 + Valor_Potenciometro * 165);
  para_rango_led_verde = long (  2 + Valor_Potenciometro *  50);
 
  
  if (veces_on <= para_rango_led_verde){                                   
      digitalWrite(PIN_LED_ROJO, LOW);
      digitalWrite(PIN_LED_AMARILLO, LOW);
      digitalWrite(PIN_LED_VERDE, HIGH);
      Serial.write(20);                     // SE ENVÍA ESTE CÓDIGO PARA EL USO CON PROCESSING. 
                                            // NO SE USA SI SOLO TENEMOS SALIDAS A LED'S
  }
  else if (veces_on >= para_rango_led_rojo){                      
      digitalWrite(PIN_LED_ROJO, HIGH);
      digitalWrite(PIN_LED_AMARILLO, LOW);
      digitalWrite(PIN_LED_VERDE, LOW);
      Serial.write(22);                     // SE ENVÍA ESTE CÓDIGO PARA EL USO CON PROCESSING. 
                                            // NO SE USA SI SOLO TENEMOS SALIDAS A LED'S
  }
  else {
      digitalWrite(PIN_LED_ROJO, LOW);
      digitalWrite(PIN_LED_AMARILLO, HIGH);
      digitalWrite(PIN_LED_VERDE, LOW);
      Serial.write(21);                     // SE ENVÍA ESTE CÓDIGO PARA EL USO CON PROCESSING. 
                                            // NO SE USA SI SOLO TENEMOS SALIDAS A LED'S
  }

  // ESTAS LLAMADAS A FUNCIONES SE HAN UTILIZADO PARA LA PUESTA A PUNTO PARA LEER LOS DATOS DESDE EL MONITOR SERIE//
  Serial.print(" VECES_ON= "); Serial.print(veces_on);
  Serial.print(" VALOR POTENCIOMETRO= "); Serial.print(Valor_Potenciometro);
  Serial.print(" PARA_RANGO_ROJO= "); Serial.print(para_rango_led_rojo);
  Serial.print(" PARA_RANGO_VERDE= "); Serial.print(para_rango_led_verde);
  Serial.println("--");
}

La programación de la placa Arduino se ha realizado en el entorno IDE de Arduino.