jueves, 14 de abril de 2016

Comunicación Serial 2

En esta entrada enviaremos datos desde el ordenador al arduino, en concreto enviaremos un "0" con el cual al recibirlo el arduino encenderá un led y cuando se le envié cualquier otra cosa el led se apagara. Ahora os dejo un ejemplo muy sencillo de como haríamos lo descrito anteriormente:



Comencemos con el código:

Primero comenzaremos con la declaración de las variables:

     int Led = 13;
     char Estado; //En esta variable guardaremos el carácter recibido por el puerto serie

Una vez declaradas las variables iniciamos el puerto serie y configuramos el pin 13 como una salida dentro del void setup():

   void setup()
   {
     Serial.begin(9600);
     pinMode(Led,OUTPUT);
     Serial.println("Inicio...");
     delay(500);
   }

Bien ahora escribiremos el código que nos permitirá leer el puerto serie desde el arduino dentro del void loop(), el valor enviado desde el ordenador lo guardaremos dentro de la variable Estado para luego compararla dentro de un if(), esto también se podría hacer con la función switch case de la cual hablaré en otra entrada:

  void loop()
  {
    if(Serial.available() > 0)//Cuando reciba datos por el puerto serial
    {
      Estado = Serial.read();//Cargara el dato recibido dentro de la variable  Estado
 
      if(Estado == '0')
      {
        digitalWrite(Led,HIGH);
        Serial.println("Led on");
        delay(1000);
      }
      else
      {
        digitalWrite(Led,LOW);
        Serial.println("Led off");
        delay(500);
      }
    }
  }

Aquí os dejo el código completo.

int Led = 13;
char Estado;
void setup()
{
  Serial.begin(9600);
  pinMode(Led,OUTPUT);
  Serial.println("Inicio...");
  delay(500);
}

void loop()
{
  if(Serial.available() > 0)
  {
    Estado = Serial.read();
 
    if(Estado == '0')
    {
      digitalWrite(Led,HIGH);
      Serial.println("Led on");
      delay(1000);
    }
    else
    {
      digitalWrite(Led,LOW);
      Serial.println("Led off");
      delay(500);
    }
  }
}

lunes, 11 de abril de 2016

Salidas PWM en arduino

Los pines pwm permiten simular una salida analógica con el arduino con valores de 0V a 5V, estos valores los produce activando el pin durante un tiempo determinado con una frecuencia de 500Hz, este tiempo vendrá determinado por el valor que escribamos en la salida con la función analogWrite(), en ella podremos escribir valores entre 0 y 255 siendo 0 siempre apagado y 255 siempre encendido, esto se entiende mejor en esta gráfica, las líneas verdes representan periodos de 2 milisegundos:

Bien ahora llega el momento del ejemplo. En esta entrada veremos como variar la intensidad de un led utilizando el valor de entrada de un potenciómetro y un pin pwm, los pines pwm son todos aquellos marcados con ~, o lo que es lo mismos los pines 3, 5, 6, 9, 10, y 11 en el arduino uno.

Al final de la entrada dejare el código completo del ejemplo:

Comencemos con el código:
Primero declaramos las variables que contendrán el valor de salida, el valor de entrada del potenciómetro y los pines que utilizaremos:

   int valor = 0; //Esta variable contendrá el valor del potenciómetro
   int VSalida  = 0; // Mientras que esta contendrá el valor de la salida
   int Led = 9;
   int poten = 0;

Ahora dentro del void setup() iniciamos el puerto serie para poder observar los valores del potenciómetro y de la salida desde el pc y declaramos el pin 9 como salida:

   void setup() 
   {
     pinMode(Led,OUTPUT);
     Serial.begin(9600); 
     Serial.println("Iniciando..."); 
     delay(50);
   }

Dentro del void loop leeremos la entrada analógica del potenciómetro y la convertiremos con la ayuda de la función map(), ya que los valores de salida van de 0 a 255 mientras que los valores de entrada van de 0 a 1023, para luego escribirlos en la salida utilizando la función analogWrite():

  void loop() 
  {
    valor = analogRead(poten);
    VSalida = map(valor,0,1023,0,255); /*En la función map() primero escribimos la variable que             queremos convertir seguido del valor mínimo y del valor máximo de dicha variable, después de           estos valores escribimos los valores a los que deseamos convertir nuestra variable comenzando           tambien por el valor mínimo y luego el máximo aunque estos valores se podrian invertir para              conseguir el efecto contrario por ejemplo: cuando el valor de la variable sea 0 la salida puede ser        255*/
    Serial.print("Valor del potenciómetro: ");
    Serial.println(valor);
    Serial.print("Valor de la Salida: ");
    Serial.println(VSalida);
    analogWrite(Led,VSalida); //Esta función trabaja de una manera parecida a la función                         //digitalWrite() solo que en ella se pueden escribir valores concretos
    delay(50);
  }

Aquí os dejo el cableado:


Código completo:

int poten = 0;
int valor = 0;
int Led = 9;
int VSalida = 0; 
void setup() 
{
 pinMode(Led,OUTPUT);
 Serial.begin(9600); 
 Serial.println("Iniciando..."); 
 delay(50);

}

void loop() 
{
  valor = analogRead(poten);
  VSalida = map(valor,0,1023,0,255);
  Serial.print("Valor del potenciómetro: ");
  Serial.println(valor);
  Serial.print("Valor de la Salida: ");
  Serial.println(VSalida);
  analogWrite(Led,VSalida);
  delay(50);
}

miércoles, 6 de abril de 2016

Lectura de entada Analógica desde el puerto Serial (Comunicación Serial 1)

En esta entrada explicaré como leer un potenciómetro con el arduino y observar el valor del mismo en vuestro ordenador, como en las entradas anteriores al final encontrareis el código completo:


Las entradas analógicas del Arduino leen valores comprendidos entre 0 y 1023 ya que tiene una resolución de 10 bits.

El puerto serie del arduino uno está relacionado con los pines 0 y 1 con lo que si se está utilizando el puerto serie para leer valores desde el ordenador no podremos utilizar estos pines ni como entradas ni salidas normales. Los valores a los que se puede configurar los baudios del puerto en Arduino son: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, o 115200.

Empecemos con el programa:

     1.Lo primero es declarar las variables que contendrán el pin de analógico y el valor del mismo:
             int Led = 13;
             int Poten = 0; //Esta variable corresponde al pin A0 en nuestro Arduino
             int VAnalog = 0; //En esta variable guardaremos el valor del potenciómetro

    2.Declaramos el Led como una salida e iniciamos el puerto serie, todo esto lo hacemos dentro del          void setup:
            void setup() 
            {
               pinMode(Led,OUTPUT);
               Serial.begin(9600); //Con esta función iniciamos el puerto serie del Arduino y le indicamos                  //los Baudios entre paréntesis en mi caso lo configuro a 9600
               Serial.println("Iniciando..."); //Con esta función escribimos en el puerto serie el texto entre                  //paréntesis y situamos el cursor en la siguiente línea
               delay(50);// hacemos una pequeña pausa de 50 milisegundos
             }
     3.Ahora llega el momento de la lectura del pin analógico, esto lo haremos dentro del void loop:
        void loop() 
        {
           VAnalog = analogRead(Poten);//Con esta función leemos el pin analógico A0 y guardamos el              //valor en la variable para luego trabajar con el 
           Serial.print("Valor del potenciómetro: ");
           Serial.println(VAnalog);
           if(VAnalog >= 512)//En estas lineas del código encenderemos el Led cuando el valor del                      //potenciómetro sea mayor o igual de 512 apagando cuando sea menor de ese valor
          {
            digitalWrite(Led,HIGH);
           }
           else
          {
            digitalWrite(Led,LOW);
           }
         }
Como cablear el potenciómetro:
El potenciómetro tiene una resistencia de 100 Kohms.

Como visualizar los datos desde el ordenador y el IDE de Arduino:
El propio compilador de arduino cuenta con una herramienta que nos permite leer y escribir en el puerto serie del Arduino, esto es muy útil para programas como este en el que leemos un valor de una entrada analógica. Para acceder a el hacemos clic en la lupa y nos abrirá una ventana desde la cual podremos visualizar y configurar la comunicación serie con el arduino.

Aquí os dejo el código completo:
   int Led = 13;
   int Poten = 0;
   int VAnalog = 0;
   void setup() 
  {
    pinMode(Led,OUTPUT);
    Serial.begin(9600); 
    Serial.println("Iniciando..."); 
    delay(50);
   }

   void loop() 
  {
    VAnalog = analogRead(Poten);
    Serial.print("Valor del potenciómetro: ");
    Serial.println(VAnalog);
    if(VAnalog >= 512)
    {
      digitalWrite(Led,HIGH);
    }
    else
   {
      digitalWrite(Led,LOW);
   }

  }





lunes, 4 de abril de 2016

Ejemplo de Botón con Arduino

En esta entrada veremos como se debe conectar un pulsador o un botón al arduino, al final de la entrada encontrareis el cableado y el código completo.


Lo primero es el código:

En primer lugar declararemos las variables que contendrán los pines que utilizaremos.
  int Boton = 2; //La entrada del botón estará situada en el pin 2.
  int Led = 13; //La salida del led estará en el pin 13.

Después crearemos una variable que contendrá el valor del pulsador.
   int estado; 

Bien ahora viene la parte de declarar el pin del boton como entrada y el pin del led como una salida esto lo haremos dentro del void setup:
  void setup() 
  {
    pinMode(Boton,INPUT); //Declaramos el Pin del botón como una entrada.
    pinMode(Led,OUTPUT); //Declaramos el Pin del led como salida.
  }

Una vez que declaramos los pines escribiremos el programa dentro del void loop, en mi caso al pulsar el botón se encenderá el led de la placa vinculado a la salida 13 mientras permanezca pulsado una vez que lo sueltes tardara medio segundo en apagarse:
  void loop() 
  {
    estado = digitalRead(Boton); //Leemos el pin del botón
    if(estado == HIGH) //Comparamos el valor del pin
    {
      //Cada vez que pulsemos el Botón la salida se activará
      //mientras el boton este pulsado
      digitalWrite(Led,HIGH);
      delay(500);  
    }
    else
    {   
      digitalWrite(Led,LOW);
     }
 }

Una vez finalizado el código nos toca cablear el botón al arduino los botones se cablean a la entrada siguiendo un esquema pull down ya que de esta manera cuando el interruptor este abierto la corriente se dirigida hacia la resistencia dejando un valor 0 en el Pin y si el interruptor esta cerrado la corriente se moverá hacia el Pin dejando un valor lógico HIGH. La resistencia utilizada es de 10Kohm y recordad que yo utilizo el propio led del arduino y por eso no cableo la salida 13.


Ahora solo queda cargar el código en el Arduino y comprobar que el led se enciende cada vez que pulsamos el botón, aquí os dejo el código completo:

//Ejemplo de Botón con arduino
int Boton = 2; //La entrada del botón estará situada en el pin 2
int Led = 13; //La salida del led estará en el pin 13
int estado; //Creamos una variable para guardar el estado del botón
void setup() 
{
  pinMode(Boton,INPUT); //Declaramos el Pin del botón como una entrada
  pinMode(Led,OUTPUT); //Declaramos el Pin del led como salida
}

void loop() 
{
  estado = digitalRead(Boton); //Leemos el pin del botón
  if(estado == HIGH) //Comparamos el valor del pin
  {
    //Cada vez que pulsemos el Botón la salida se activará
    //mientras el boton este pulsado
    digitalWrite(Led,HIGH);
    delay(500);  
  }
  else
  {   
    digitalWrite(Led,LOW);
   }
}


lunes, 22 de febrero de 2016

El primer programa en arduino

El primer programa de este blog sera uno de los ejemplos más sencillos que trae arduino, hacer parpadear el led de la placa.
La placa de arduino uno tiene un led vinculado al pin digital 13 el cual se enciende cuando se activa el pin, este como ya he mencionado antes es uno de los ejemplos más simples que tiene pero también es uno de los mejores para comenzar a entenderlo.
Comencemos con el programa:

Lo primero es declarar el pin 13 como salida, esto lo haremos dentro del void setup:
void setup(){
pinMode(13, OUTPUT);
}
No os olvidéis del punto y coma la final de la linea.
Ahora que ya hemos declarado el pin como salida procedemos a programar el parpadeo, como queremos que esta parte del código se repita indefinidamente la escribiremos dentro del void loop:
void loop() {
  digitalWrite(13, HIGH);   // Con esta función escribimos un 1 en el pin con lo que lo activamos.
  delay(1000);              // La función delay nos permite hacer un pausa, el tiempo en esta función se mide en milisegundos.
  digitalWrite(13, LOW);    // Con LOW escribimos un 0 con lo que desactivamos el pin.
  delay(1000);              // Aquí volvemos a esperar un segundo
}
Ya tenemos nuestro programa listo ahora solo tenemos que cargarlo en nuestro arduino, para ello conectamos el arduino por USB al pc.
Una vez conectado al pc seleccionamos el puerto dentro del programa de arduino:
Una vez seleccionado el puerto hacemos clic en el botón de cargar:
Ya esta todo listo.

Empecemos por algo sencillo

Lo primero para poder trabajar con una placa arduino, ya sea un arduino uno o mega, es instalar el software el cual encontraremos en la web oficial de arduino.
La instalación es rápida y sencilla.

Primer paso:
La descarga





















Seleccionas la versión que deseas descargar.






















Ahora tienes dos opciones: la primera donar algo, que nunca esta mal, y la segunda que es descargarlo directamente haciendo clic en "just download".

Segundo paso:
La instalación

Al abrir el ejecutable que descargaste en el paso anterior te saldrán una serie de ventanas como estas:



Bien después de todo esto  ya tendrás instalado el software de arduino, ya puedes empezar a programar. 


Un blog para novatos

Bien como el titulo de esta entrada indica este es un blog para novatos (como yo) que estén interesados en aprender a manejar el arduino, para ello iré subiendo una entrada cada semana o cada 3 días, todo depende del tiempo que tenga.
Comencemos con la sesión.