Archivo de la etiqueta: atmega

Programador USBtinyISP


Me ha llegado a casa un programador para micros Atmel que me he pillado por ebay a un precio de 8.50€ gastos de envío incluidos. Aunque se trata de un programador de libre distribución he preferido comprarmelo, 1º por que tenía que hacerme una placa yo y comprarme todos los componentes a parte, así que me iba a costar más dinero que si lo comprará directamente, y 2º porque tendría que hacerme los cables para la conexión con la placa arduino o con cualquier placa que vaya a realizar para futuros proyectos que tengo en mente, ya que lo conecto por icsp y listo para programar desde el IDE de Arduino (la programación la explicaré en el próximo post). Os enseño una foto para que veais lo pequeño que es:

Perdonad por la calidad de la foto, en cuanto tenga la cámara conmigo actualizo el post y cambio la imagen para que se vea mejor.

Os voy a comentar un poco sobre el programador:

Es un grabado que permite la grabación de micros Atmel mediante el puerto USB del ordenador, tanto con progamas como AVRdude, AVRStudio o desde el IDE de Arduino.

Presenta las siguientes partes:

  • Un led rojo que es led de Power. El cual se enciende cuando lo conectamos al puerto USB del ordenador.
  • Un led verde que indica que el programador está ocupado.
  • Un jumper que si lo tenemos puesto alimentamos el micro a programar desde el programador usb (la corriente máxima es de 100mA), y si lo tenemos quitado el micro a programar se tiene que alimentar de una fuente externa.
  • Conector USB para comunicar el programador con el ordenador.
  • Conector ICSP: Conector de 6 pines para la grabación del micro. Es el que normalmente se usará.
  • Conector JTAG: Conector de 10 pines para la grabación mediante JTAG.

Y como siempre os dejo el esquema, el software y los drivers para windows del programador usbtinyisp:

http://www.mediafire.com/?hjub4me0165dd7c

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

Acordeón Arduino Cheat Sheet


Navegando por estos mundos de internet me he topado con una traducción y modificación de la Arduino Cheat Sheet, se trata de Acordeón Arduino. A mí me parece que está mejor explicada que la original y que también es mucho mejor para aquellos que no dominen bien el inglés. Espero que os sirva para empezar en vuestros proyectos con Arduino.

Os dejo el enlace para que la podáis descargar tanto en formato pdf como en svg y png:

http://www.mediafire.com/?20h35xy933oxzku

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

Puerto Serie con Arduino y VB 6.0


He estado cacharreando algo estos días con el arduino y me he puesto a aprender a controlar y comunicar el arduino con el portátil, os subo un ejemplo de como encender y apagar el led 13 mediante una aplicación realizada en visual basic 6.

Esta es una imagen de la aplicación:

Esta aplicación consiste en controlar el arduino mediante el puerto serie (en mi caso es el COM6, ya lo puse directo en el control del VB 6.0, también se podría hacer para seleccionar el puerto), lo primero que debemos hacer es darle al botón CONECTAR para que se abra el puerto serie y se habiliten los botones de LED ON y LED OFF. Al presionar el botón LED ON el led 13 se encenderá y al presionar el botón LED OFF el led se apagará, para cerrar el puerto serie basta con presionar el botón DESCONECTAR (deshabilitando los botones de encendido y apagado de los leds). Está pequeña aplicación sirve de aprendizaje para futuros proyectos en los que queramos controlar determinados actuadores o sensores. Espero que os sirva de ayuda, a continuación os dejo los códigos y un video del funcionamiento.

Aquí os dejo el código del Arduino:

void setup() {
 //Definimos la velocidad de transferencia a 9600 baudios
 //y el pin 13 como salida
 pinMode(13,OUTPUT);
 Serial.begin(9600);
}

void loop() {
 //Mientras el puerto serie este accesible
 while (Serial.available())
 {
 //Guardamos en dato el valor leido del puerto serie
 byte dato = Serial.read();
 switch (dato){
 //Si es '1' encendemos el led
 case '1':
 digitalWrite(13,HIGH);
 break;
 //Si es '2' apagamos el led
 case '2':
 digitalWrite(13,LOW);
 break;
 }
 }
}

Aquí el código de la aplicación en VB 6.0:

Option Explicit

'Boton de conectar
Private Sub cmdConectar_Click()
 Serie.PortOpen = True   'Abrimos el puerto serie
 cmdON.Enabled = True    'Habilitamos los botones para trabajar con el led
 cmdOFF.Enabled = True
End Sub

Private Sub cmdDesconectar_Click()
 Serie.PortOpen = False  'Cerramos el puerto serie
 cmdON.Enabled = False   'Deshabilitamos los botones
 cmdOFF.Enabled = False
End Sub

Private Sub cmdOFF_Click()
 Serie.Output = "2"      'Mandamos un "2" para apagar el led
End Sub

Private Sub cmdON_Click()
 Serie.Output = "1"      'Mandamos un "1" para encender el led
End Sub

Y aquí os dejo el video del funcionamiento:

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

Arduino cheat sheet


Pues navegando por estos mundos de internet en busca de información sobre Arduino me he encontrado con esta hoja que nos puede servir de mucha ayuda, es como una hoja resumen del código que usamos para hacer nuestros proyectos con Arduino. Espero que os sirva de mucha ayuda.

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