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..
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.
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.