Archivo de la etiqueta: shield

Arduino Pinout y conexiones básicas


En mis visitas diarias a otros blogs he encontrado una buena información en www.pighixxx.com y www.akafugu.jp que creo que puede ser de ayuda a toda aquella gente que comienza en esto de la electrónica y en concreto en el tema de Arduino. Se trata de unos documentos que he recopilado en un único pdf para que sea más cómodo su uso, en los que aparecen los distintos pinouts de las placas Arduino más comunes.

Arduino uno pinout

También podéis encontrar una hoja donde aparecen los pinouts más comunes de algunos de los componentes electrónicos que normalmente usamos en nuestros proyectos.

Componentes electrónicos pinout

Así como unas magnifícas páginas en las que se pueden ver las conexiones básicas de distintos componentes a nuestro Arduino y que puede ser de una muy buena ayuda tanto para aquellos que están empezando con Arduino o otro microcontrolador, como para aquellas personas que ya están curtidas en estos temas.

conexiones basicas arduino

Sin más, os dejo el enlace al documento pdf en el que vais a encontrar todo este estupendo material de ayuda:
http://www.mediafire.com/download/zrssl27tiasi17r/Arduino_Pinout_y_Conexiones_Basicas.pdf

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Me ha llegado la prototype shield para Arduino


Pues que me ha llegado la Prototype shield para Arduino que me compré por ebay, y estoy encantado con ella, es una maravilla poder enchufarla en la Arduino y poder montarte pequeños proyectos sin necesidad de andar con una breadboard de aquí para allá. La shield en cuestión es esta:

Aunque la foto no es muy buena, se puede apreciar que es una pequeña maravilla, con conectores para los cables, mini breadboard para pegar, trae pulsador de reset, un pulsador extra para usar en cualquier proyecto y dos diodos led (es necesario soldar un cable en estos 3 casos), trae tiras de pines de gnd y 5V a la derecha de todo, trae para soldar un componente tipo SOIC, ICSP y si no nos interesa pegar la mini breadboard trae agujeros para soldar componentes (hace la función de una placa de topos). Lo mejor de todo es el precio, la he comprado por 5,39€ con gastos de envío gratis.

Os enseño una foto de la shield encima del Arduino para que veais lo poco que ocupa todo:

Aquí teneis para descargar un esquemático de la misma que me he encontrado navegando por la red:

http://www.mediafire.com/?6ow625yzj65zm03

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

SHIELD TECLADO V1.1 PARA ARDUINO CON 1 PIN


He estado mejorando la shield del teclado para el Arduino, añadiendo un condensador de 100nF para mejorar las lecturas del pin de salida que va conectado al pin A0. Os pongo unas imagenes realizadas con el Eagle3D y un ejemplo de código para que veais como funciona, además os subo el esquemático, la pcb y el fotolito.

Esquemático de la Teclado Shield v1.1:

La imagen 3D realizada con Eagle3D:


Un ejemplo para utilizar el teclado con la placa Arduino:

/*Programa realizado para tallerarduino.wordpress.com por Javier Couto Rego (Regata) para
apertura de puerta mediante password de 4 digitos*/

/*
 El circuito:
 * LCD RS pin a pin digital 12
 * LCD Enable pin a pin digital 11
 * LCD D4 pin a pin digital 5
 * LCD D5 pin a pin digital 4
 * LCD D6 pin a pin digital 3
 * LCD D7 pin a pin digital 2
 * LCD R/W pin a masa
 * Potenciometro de 10K:
 * patilla a +5V y la otra a masa
 * Patilla central al pin LCD VO (pin 3 del LCD)
*/
//
#include <LiquidCrystal.h>

// Indicamos los pines a los que tenemos conectado el lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Indicamos los pines donde tenemos conectados los actuadores
int buzzer = 6;  //En el pin 6 tenemos un buzzer
int puerta = 1;  //En el pin 1 conectamos la salida para un relé 
int errores=0;   //Variables para comprobar si hay errores
int error=0;
int i;
//Arrays donde guardamos el pass y un pass por si bloqueamos el
//circuito por pasarnos de intentos
int pass[4] = {1,2,3,4};
int desbloqueo[4] = {4,3,2,1};
int password[4];
//Variable donde guardaremos el valor que nos devuelva la función de lectura de tecla
int tecla=0;

void setup() {
  // Indicamos numero de columnas y filas del LCD e iniciamos
  lcd.begin(20, 4);
  lcd.setCursor(0,0);
  //Mostramos en pantalla el mensaje Password:
  lcd.print("Password:");
  //Indicamos como salidas el relé y el buzzer (pines 1 y 6)
  pinMode(1,OUTPUT);
  pinMode(6,OUTPUT); 
}

void loop() 
{
  //Comprobamos si se han producir 3 intentos errores de introduccion de pass
  if (errores<3)
  {
      //Posicionamos el cursor en el LCD
      lcd.setCursor(8,1);
      for(i=0;i<4;i++) //Pass para cuatro caracteres
      {
         tecla=teclado();  //asiganmos a tecla el valor que nos devuelve la función teclado()
         if (tecla>=0 && tecla<=9) //Comprobamos que el valor de las teclas esten comprendidas entre 1 y 9
                                   //para evitar introducir letras
         {
           password[i] = tecla;  //En la posición correspondiente del array guardamos el valor introducido
           lcd.print("*");      //En pantalla mostramos un * para evitar que vean el código
           delay(20);          //retardo de 20mseg
         }
         else    //Si introducimos un valor que no este entre 1 y 9 restamos 1 a i, esto es para volver a
                 //introducir el caracter en esa posicion otra vez
         {
           i=i-1;
         }       
      }
      //En este bucle comprobamos que la contraseña que hemos introducido coincida con la que teniamos configurada
      for(i=0;i<4;i++)
      {
         if (pass[i]!=password[i]) //Se comprueba caracter a caracter y si no coinciden
         {
            i = 4;  //Asignamos a i 4 para salir del bucle for
            error = 1;  //Indicamos que hay error
            errores = errores + 1;  //Sumamos 1 intento a errores
         }
       }
       if (error==0)  //Si no hubiera error
       {
         //Mostrariamos en pantalla Pantalla Password: Done
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Password:");
          lcd.setCursor(8,1);
          lcd.print("Done");
          //Activamos las salidas de buzzer y rele durante 500 mseg
          digitalWrite(buzzer,HIGH);
          digitalWrite(puerta,HIGH);
          delay(500);
          //Desactivamos las salidas de buzzer y rele
          digitalWrite(buzzer,LOW);
          digitalWrite(puerta,LOW);
          //Limpiamos el LCD y mostramos Password:
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Password:");
          lcd.setCursor(8,1);
       }
       else //Si hay error
       {
          //Mostramos ERROR en pantalla durante 50 mseg
          lcd.setCursor(8,1);
          lcd.print("ERROR");
          delay(50);
          //Borramos pantalla y mostramos Password:
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Password:");
          lcd.setCursor(8,1);       
       }
  }
  //Si se producen 3 intentos erroneos de introducir clave
  else
  {
      //Mostramos en pantalla BLOQUEADO
      lcd.setCursor(6,1);
      lcd.print("BLOQUEADO");
      lcd.setCursor(8,2);
      //Bucle donde introducimos el pass para DESBLOQUEAR el sistema
      for(i=0;i<4;i++)
      {
         tecla=teclado();  //asiganmos a tecla el valor que nos devuelve la función teclado()
         if (tecla>=0 && tecla<=9)  //Comprobamos que el valor de las teclas esten comprendidas entre 1 y 9
                                   //para evitar introducir letras
         {
           password[i] = tecla;  //En la posición correspondiente del array guardamos el valor introducido
           lcd.print("*");      //En pantalla mostramos un * para evitar que vean el código
           delay(20);          //retardo de 20mseg
         }
         else     //Si introducimos un valor que no este entre 1 y 9 restamos 1 a i, esto es para volver a
                 //introducir el caracter en esa posicion otra vez
         {
           i=i-1;
         }       
      }
      //En este bucle comprobamos que la contraseña que hemos introducido coincida con la que teniamos configurada
      for(i=0;i<4;i++)
      {
         if (desbloqueo[i]!=password[i])  //Se comprueba caracter a caracter y si no coinciden
         {
            i = 4;  //Asignamos a i 4 para salir del bucle for
            error=1;  //Indicamos que hay error
         }
         else
         {
             error=0; //Indicamos que no hay error en ese caracter
         }
       }
       //Si no hubiera error
       if (error==0)
       {
         //Reiniciamos el contador de intentos
          errores=0;
          //Mostramos por pantalla DESBLOQUEADO durante 50mseg
          lcd.clear();
          lcd.setCursor(4,1);
          lcd.print("Desbloqueado");
          delay(50);
          //Limpiamos el LCD y mostramos por pantalla Password:
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Password:");
          lcd.setCursor(8,1);
       }
       //Si hay error
       else
       {  
         //Mostramos en pantalla Password: para seguir introduciendo pass de desbloqueo
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Password:");
          lcd.setCursor(8,2);
       }         
  }
}

//Funcion que devuelve la tecla pulsada
int teclado()
{
    int tecla;
    int valoradc=analogRead(5);  //Leemos el pin analogico 5 del arduino
                                //donde tenemos conectado el teclado de 1 pin
    switch (valoradc)  //Según el valor que nos da la lectura asignamos una tecla
    {
      case 865: return 7;  //Devuelve tecla 7
        break;
      case 650: return 8;  //Devuelve tecla 8
        break;
      case 508: return 9;  //Devuelve tecla 9
        break;
      case 339: return 10;  //Devuelve tecla 10
        break;
      case 803: return 4;  //Devuelve tecla 4
        break;
      case 614: return 5;  //Devuelve tecla 5
        break;
      case 486: return 6;  //Devuelve tecla 6
        break;
      case 329: return 11;  //Devuelve tecla 11
        break;
      case 735: return 1;  //Devuelve tecla 1
        break;
      case 574: return 2;  //Devuelve tecla 2
        break;
      case 460: return 3;  //Devuelve tecla 3
        break;
      case 317: return 12;  //Devuelve tecla 12
        break;
      case 698: return 14;  //Devuelve tecla 14
        break;
      case 551: return 0;  //Devuelve tecla 0
        break;
      case 445: return 15;  //Devuelve tecla 15
        break;
      case 310: return 13;  //Devuelve tecla 13
        break;
      default: return 16;  //Devuelve tecla 16
    }
}

Y aquí os dejo los archivos de la Teclado Shield v1.1: http://www.mediafire.com/?xk8ake4e1x5gbd4
Espero que os sirva esta Shield.

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Teclado para Arduino que emplea solo un pin


Hola de nuevo, después de unos días inactivo debido a los examenes de la Universidad estoy por aquí para presentaros una placa que he hecho con el software Eagle (una maravilla), se trata de un teclado 4×4 controlado solo por un pin analógico de nuestro Arduino. Ya tengo diseñada la placa y comprados todos los componentes, así que una vez que tenga insolada la placa procederé a soldar todos los pulsadores y resistencias me pondré a hacer pruebas con ella.  Una vez comprobado el buen funcionamiento sobre el Arduino os subiré los archivos del eagle para que la podáis mejorar o para poder haceros este teclado que sin duda nos ayudará en nuestros proyectos.

Aquí os dejo el esquema de conexión del teclado a nuestro Arduino:

En esta imagen podeis comprobar los valores que se producen en el pin que va conectado a la entrada analógica de nuestro Arduino:

Nota: Los valores del teclado analógico no son precisos debido a las tolerancias de las resistencias pero son valores muy próximos, con el monitor serie del IDE de arduino podeis ver los valores exactos y apuntarlos.

 

 

Para comprobar si eran exactas he montado el circuito en Proteus y las pruebas fueron exitosas. Ahora tocar probar si funciona realmente sobre nuestro Arduino. Os dejo para que veais más o menos como será la placa real unas fotos de las placas que he hecho del teclado en Eagle, una para conectar encima de Arduino como una shield y la otra para conectar con 3 pines (Vcc, Out, Gnd).

Espero que os sirvan de ayuda, en cuanto tenga montada la placa (me voy a decantar por la que va encima de Arduino, es decir, la primera) os enseño las fotos.

P.D: En un post posterior he realizado una mejora para esta shield, allí encontrareis los archivos de la shield teclado.

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

¿Qué son las shields de Arduino?


Pues como bien dice el título de la entrada, vamos a hablar de las shields de Arduino, a algunos os sonara a chino, otros ya sabeis que son e incluso habrá gente que ya se haya fabricado sus propias shields. Os cuento:

Las shields son unas placas compatibles con Arduino que se pueden conectar encima de este extendiendo sus capacidades. Las diferentes shields que existen siguen la misma filosofía que la plataforma Arduino: son fáciles de montar y baratas.

Además disponemos de listas que recopilan las diferentes shields disponibles, así como su configuración y disposición de pines. La página en cuestión que alberga dicha lista es: http://shieldlist.org/

Tambié podemos ir diseñando nosotros mismos nuestras shields para proyectos propios, como placas de ayuda para aprendizaje, ect. Yo ahora mismo estoy liado con unas placas shields, ya tengo hecho el esquema y la placa lista para insolar de ambas,  solo me falta pasar las pistas al acetato y a montar y probar las shields,  se tratan en concreto de un keyboard 4×4 que usa solo un pin de arduino y la otra es una placa con cuatro entradas digitales, cuatro salidas digitales y una salida analógica para ir practicando algo.

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal