lunes, 29 de mayo de 2017

Arduino. Medida de valores analógicos

Para medir valores analógicos con Arduino se utilizan las entradas analógicas. Esto supone que podemos medir el voltaje en un punto de un circuito para monitorear si este voltaje cambia. Y dependiendo de este cambio podremos decidir que acción ejecutar con Arduino.

En nuestro caso vamos a empezar midiendo los valores entregados por un potenciómetro mostrándo el valor leído por el puerto serie del ordenador. Además en nuestro programa vamos a añadir una condición para que compare si el valor leído es superior a un voltaje determinado, para que realice una determinada acción. Por ejemplo emitir un sonido con el altavoz.


//Medida de valores analógicos

int pin_altavoz = 11;
int dato;
float voltajef;

 void setup()   {                

        pinMode(pin_altavoz, OUTPUT);
        Serial.begin(9600);
        Serial.println("Medida de voltajes");
        pita();

    }

    void loop()                     
    { 
       
        dato = analogRead(0);
        voltajef = dato  * 0.0048828;   
        Serial.print("Voltaje: ");
        Serial.println(voltajef);
        if (voltajef > 3) pita();
           
        delay(1000);
               
    }
       
    void pita()
        {
        tone(pin_altavoz, 1500, 1000);
               
        }

miércoles, 24 de mayo de 2017

Arduino. Conexión de altavoz y envío de datos por puerto serie

Ahora vamos a utilizar un pequeño altavoz para emitir sonidos con el Arduino que tenemos. Lo hemos conectado al pin D11, manteniendo en el pin D10 conectado el pulsador. Lo que pretendemos es que cada vez que se accione el pulsador, el altavoz emita un tono.

Además, al mismo tiempo que se emite el tono, envía una información por el puerto serie hacia el PC.
Por otro lado, también se ha incluido la posibilidad de controlar la emisión del tono dependiendo de un dato que se envíe al Arduino por el puerto serie. Así, si se envía un '8' nuestro Arduino emitirá el tono.


Para manejar el puerto serie en nuestro programa se necesita que en primer lugar se configure el puerto. En este caso lo configuramos a una velocidad de 9600bps mediante la línea "Serial.begin(9600)".

Para enviar datos hacia el ordenador por el puerto serie se empleará "Serial.print()" y también "Serial.println()". Este último añade un salto de línea.

Para saber si desde el ordenador se ha enviado algo hacia el Arduino, se comprueba si hay algo en el puerto con "if (Serial.available() > 0)" para después leer el dato recibido con "dato = Serial.read()"

 // Demostración de manejo del altavoz y del puerto serie  
    int n=0; 
    int pulsador;
    int pin_pulsador =10;
    int pin_altavoz = 11;
    int dato;

   
    void setup()   {                

        pinMode(10, INPUT);
        pinMode(11, OUTPUT);
        Serial.begin(9600);
        pita();

    }

    public void loop()                     
    { 
        if (Serial.available() > 0)
        {
            dato = Serial.read();
            if (dato == '8') pita();
           
        }
       
        pulsador = digitalRead(pin_pulsador);
        if (pulsador == 0)
        {
            n = n+1;
            Serial.print("He pitado ");
            Serial.print(n);
            Serial.println(" veces");
            pita(); 
            pulsador = 1;
            delay(200);
                                 
        } 
    }
        void pita()
        {
        tone(pin_altavoz, 1500, 1000);
              
        }