7 jun 2010

TECNO 4º E.S.O. ARDUINO. II

Práctica 2

Vamos a ir aumentando los componentes y a variar el programa para que arduino vaya haciendo varias cosas.
En este caso necesitamos los siguientes materiales:

  • led
  • resistencia 120 Ohms
  • potenciomentro
  • zumbador
Mira el conexionado del circuito:
Si te fijas tenemos el led conectado al pin digital 9 y el zumbador al pin digital 11. (luego tendremos que declarar esos 2 pines al principio y luego indicar que son de salidas (OUTPUT, en la sección setup).





PARTE 1
Haz un programa (modificando cualquiera de los que has hecho anteriormente) para que se produzca el encendido del led y el sonido del zumbador de manera simultanea y de manera alterna.




PARTE 2
La novedad es el potenciómetro. Recuerda que es una resistencia variable que regulamos mediante una varilla giratoria. Está formado por 3 patillas. (Mira la imagen), las de los extremos las conectamos a (+) y a (-) y la central es la que nos dará el valor de la resistencia cuando giremos la varilla.
Lo importante es que el potenciómetro nos va a dar valores ANALÓGICOS , no digitales, puesto que conforme vayamos girando la varilla el valor de salida de la patilla 2 irá variando. Ahí está la diferencia en la conexión analógica y digital. Un pin digital sólo trabaja con valores 0 y 1, (HIGH y LOW). Así que tendremos que utilizar los pines analógicos que están en la parte inferior de arduino)




  • Vamos a ver qué datos entran del potenciómetro a arduino, para ello vamos a utilizar la consola.  Es una pequeña ventana del programa de control de arduino por la que podemos ver qué datos pasan por la tarjeta.
  • Para poder utilizar la consola tenemos que introducir una nueva instrucción en la parte setup:







    • Serial.begin(9600)







  • Después necesitamos una instrucción para escribir por la consola:
    
    
    
    
    
    
    
    Serial.print("hola"); //Esto escribiría la palabra: hola
    
    
    
    
    Una vez compilado el programa y enviado a arduino, deberemos abrir la consola para ver lo que nos está enviando la tarjeta.
    
    
    
    
    /*
        Ejemplo de lectura del potenciómetro
    */
    
     int potenPin = 5;   // Pin de lectura del potenciómetro
     int dato = 0;     // Aquí guardarémos el valor del pot.
     
     void setup()  
    { 
       pinMode(potenPin, INPUT);
       Serial.begin(9600);
     } 
     
     void loop()
      { 
         dato = analogRead(potenPin); //Guardamos en "dato" lo que entra por el pin
         Serial.print(dato);  //Escribe por consola el dato guardado 
         Serial.println();   //Escribe por consola un "salto de linea"
     }
    
    
    
    Vamos a utilizar la instrucción IF. Esta nos permite comparar valores para hacer algo en función del resultado. Su formato es:
    
    
    if (comparacion)
    {
    acciones;
    }
    else
    {
    acciones;
    }
    
    
    En nuestro caso queremos modificar el programa anterior para que nos diga si el valor leído del potenciómetro es mayor o menor de 500, el código necesario sería:
    
    
    
    
    
    
    if (dato<500
    
    
    
    
    
    
    
    )
    {
    Serial.print("El valor es menor que 500");
    }
    else
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    {
    
    
    
    
    
    
    
    
    Serial.print("El valor es MAYOR que 500");
    }
    
    
    
    
    PARTE 3
    
    
    
    
Modifica tu programa para que si el valor del potenciómetro es menor que 500 el LED esté apagado y cuando el valor del potenciómetro pase de 500 el LED esté encendido.


  • PARTE 4
Modifica tu programa para que el programa nos muestre por la consola el porcentaje de resistencia del potenciómetro. Es decir, si está al máximo (1023) debería aparecer por la pantalla "100%", si esta al mínimo (0) debería aparecer : "0%", si está a la mitad (511,5) debería salir: "50%", ..... y así para todos los valores.
Lo puedes hacer con una regla de tres.
Las operaciones en arduino se hacen muy fácilmente, se escriben como operaciones normales, lo único es que aquí toda operación debe guardar su resultado en una variable, ejemplo:
               result = (dato* 30)/100; 
                  //resul y dato deben ser variables y estar declaradas al inicio
.