Arduino.



Después de tanto escuchar la palabra Arduino y de ver el ATMEGA 1280 en esta placa, no me lo penses dos veces y encargue uno con la intención de evaluar el "mundo arduino" y de obtener una placa con un buen micro para comenzar con los 8 bits de Atmel de una vez por todas... Para todo el que quiera comenzar con los AVR como es mi caso (no con Arduino) comprar esta placa es una buena elección, ya que evitamos tener que realizar el primer diseño de hard con un micro y un fabricante desconocido, de esta forma obtenemos una placa que sabemos que el hard es correcto al 100%, y lo mejor, el precio..

La placa cuesta unos 49 euros, si nos vamos a Farnell el precio del microcontrolador tal cual es de 23 euros, por lo que no tiene sentido ponerse a hacer una placa con un micro de estos en casa pudiendo comprarlo a este precio. La placa viene con 54 I/O, 16 ADC, 14 PWM, 4 Usart, el conector de ICSP, los pines de I2C con las resistencias de pull-up, y los pines de SPI, además del FTDI para conectar al USB y reguladores de voltaje para conectar con distintas tensiones, cristal de 16 MHz, por lo que para comenzar es perfecto.. Esquema de la placa.

El micro 128k de flash, 8k de SRAM y 4k de EEPROM, 32 registros de trabajo, aquí su datasheet, una pasada comparado con los 8 bits de Microchip que vengo usando..

Página de Arduino Mega.

La placa la he comprado en www.bricogeek.com, junto a un led RGB para realizar un primer proyecto y evaluar la dificultad de usar el entorno de Arduino.

Placa bricogeek.com
Led bricogeek.com

Recomiendo la tienda, en un día el pedido en casa y una buena atención.

Podemos comprar distintas placas con diversas funcionalidades que conectar a las placas del microcontrolador, con sus librerias, por lo que realizar proyectos con micriocontroladores nunca ha sido tan fácil, o almenos a este precio.

Lo primero que debemos hacer es bajarnos el software necesario en la página de descargas. Está disponible para windows, Mac y Linux, en mi caso lo he instalado en una Fedora 10, y en menos de 10 min después de bajar los paquetes necesarios que indican en la misma página estaba funcionando. Por lo que en este aspecto otro 10 para Arduino.

Al entorno de programación aún le queda bastante que mejorar, aunque si se busca sencillez la tiene...



Programamos en C, los "sketches" como llama arduino a nuestros programas están formados por dos funciones void setup() donde configuramos el hard, y void loop() el búcle principal. Nos vienen bastantes programas de ejemplo, que podemos cargar y grabar, además de tener bastante documentación con la que empezar desde cero, por lo que es ideal para todo el que quiera comenzar.

La comunidad de arduino es grande y abierta, y ésto es algo muy importante en el mundo de la electrónica de aficionado, porque la única forma de resolver las dudas y de aprender, avanzar, para la mayoría es viendo lo que han hecho otros y preguntando en foros, foro en español de Arduino.

Para evaluar la dificultad de realizar un primer "proyecto" con Arduino, compre un led RGB junto a la placa, mi intención era controlar el pwm de cada diodo en función del valor analógico de un potenciometro conectado a la placa (uno por diodo). Nunca había usado una placa de éstas antes ni visto nada sobre proyectos o código con estas placas, por lo que voy totalmente desde cero, y el resultado para mi ha sido impresionante.. En hora y media aproximadamente desde cero, sacar el Arduino de la caja, mirar por encima la documentación que baje ayer, los ejemplos, montar y soldar los componentes externos, es lo que ha llevado controlar el led mediante los potenciometros. Por lo que más sencillo imposible.



Los componentes externos que se han tenido que añadir son unos transistores para encender y apagar cada led, ya que la intensidad requerida por uno de estos diodos es de aproximadamente unos 300 mA, y un pin del micro sólo puede suministrar/absorber 40 mA @ 5V, por lo que si intentamos encender directamente el diodo led desde el pin quemaremos el puerto o el micro.. Por lo que cada salida de PWM del micro va con una R a la base de cada transistor bipolar. Los 3 potenciometros son un divisor resistivo que proporciona un valor de tensión llevados a las entradas del ADC del Arduino. En función del valor de cada potenciometro el PWM de su led tendrá un duty mayor o menor.

Y el código necesario se ha quedado en ésto..

// LED RGB


int valorr = 0; //valor de potenciometro, pwm del led
int valorg = 0;
int valorb = 0;

int ledrpin = 12; //leds
int ledbpin = 11;
int ledgpin = 10;

int potrpin = 0; //potenciometros, por defecto vienen como inputs
int potbpin = 1;
int potgpin = 2;

void setup()
{
pinMode(ledrpin, OUTPUT);
pinMode(ledbpin, OUTPUT);
pinMode(ledgpin, OUTPUT);

pinMode(potrpin, INPUT);
pinMode(potbpin, INPUT);
pinMode(potgpin, INPUT);
}

void loop()
{
valorr= analogRead(potrpin)/4; //leemos los potenciometros, /4
valorb= analogRead(potbpin)/4; //devuelve 1024, argumento pwm 255
valorg= analogRead(potgpin)/4;

analogWrite(ledrpin, valorr); //asignamos el pwm
analogWrite(ledbpin, valorb);
analogWrite(ledgpin, valorg);

}

No me esperaba que fuese tan sencillo, primero declaramos las variables que vamos a usar en las funciones, ninguna es necesaria, ya que podemos hacerlo todo directamente. Pero como ponía en la guía y para seguir los ejemplos se hace así, ya que si se quiere cambiar de pin es más fácil cambiar sólo un número. En setup() decimos si los pines son entrada o salida, por defecto creo que son entradas por lo que las 3 líneas de los potenciometros sobran. En loop() leemos el valor de cada ADC, nos devuelve un valor númerico entre 0 y 1024 (10 bits de ADC), lo dividimos entre 4 ya que el argumento del pwm es de 8 bits. Y con estas pocas líneas los pwm de los leds controlados en función de los potenciometros.


Me ha parecido una forma tan sencilla de empezar con los micros que me he animado a escribir estas líneas, para recomendar las placas de arduino a todo el mundo que quiere empezar a "trastear" con la electrónica. Simplicidad, comunidad en la que buscar ayuda (ya me gustaría que la comunidad robótica que hay por aquí se pareciese una pizca a ésta), compilador de Atmel gratuito y un precio muy asequible.

Si hace unos años en la electrónica de aficionados sólo se hablaba de los pics de Microchip, en sitios en español era muy poco probable encontrar proyectos con otros micros, y teniendo en cuenta que han quitado su programa de samples que los puso donde estaban, pues me parece que hay Arduino y AVR para rato, todo son ventajas respecto a los 8 bits de Microchip.

Video del funcionamiento.


Comentarios.
blog comments powered by Disqus