Veo que hay bastantes opiniones contrarias al Arduino.
Creo que es importante, para hacerse una idea, explicar qué es exactamente Arduino.
Me centraré en el hardware del Arduino UNO, que es el más popular.
Arduino es una plataforma hardware y un entorno de desarrollo que
facilita el desarrollo rápido de aplicaciones basadas en microcontroladores de Atmel.
1.- La placa tiene como microcontrolador principal un Atmega328P de Atmel VelocidadEste micro trabaja en Arduino a 16MHz y ejecuta la mayoría de las instrucciónes en un ciclo de reloj (un poco menos de 16 millones de instrucciones por segundo)
Su velocidad máxima es de 20MHz (casi 20 millones de instrucciones por segundo). Esta velocidad de ejecución es bastante alta para un micro de 8 bits.
Ningún micro de 8 bits de Microchip le supera, ni tampoco le superan muchos micros de 16bits.
Por lo tanto creo que este micro tiene una
velocidad bastante alta dentro de su gama.
(Compararlo con un micro de 16 ó 32 bits de altas prestaciones es como comparar un coche y una avioneta, es hacer trampa)
MemoriaLa memoria de programa es de 32Kb
La memoria de ram es de 2Kb
La memoria de eprom es de 1Kb
Las cantidades son comparables a muchos micros de 8 bits,
incluso tiene más que la mayoría.
PeriféricosSi en algo se puede decir que Microchip es claramente superior es en algunos periféricos que integran sus últimos micros (CTMU, CLC, más temporizadores o comparadores)
Por otra parte, con sus 6 salidas PWM, el micro de Atmel supera en número a todos los micros de Microchip.
En resumen, el micro es comparable, y en muchos aspectos superior, a la mayoría de los micros de gama alta de 8 bits (PIC18) de Microchip.
2.- ProgramadorEs verdad que Arduino parece tener un programador dentro de su placa, Pero no es cierto.
El circuito USB que trae el Arduino UNO es un conversor USB a RS232 con niveles TTL. Este circuito no puede programar nada, sólo comunicar datos entre el PC y el Atmega.
El micro del Arduino viene ya preprogramado con un Bootloader. Este Bootloader acepta los datos que llegan del PC y los programa dentro de sí mismo.
Si partimos de un microcontrolador vacío, la placa Arduino no funciona.
Por otro lado, una vez que tenemos un Arduino funcionando, es sumamente sencillo fabricar un programador con él, de manera que podedemos programar otros microcontroladores Atmega328 vacíos con lo que queramos:
3.- Entorno de desarrolloEste entorno muy sencillo sirve en realidad para programar en c. Es cierto que se han hecho esfuerzos para simplificar el entorno y la programación, pero lo que programas sigue siendo c
El lenguaje C es muy potente y quizá la mejor opción para programar un micro de esta envergadura.
Por debajo del entorno de desarrollo, el compilador es un toolchain de GNU C. Esto asegura el soporte y la calidad del software. Tiene pocos bugs, continuidad en el software, acceso al código del compilador, etc. No olvidemos que GNU C es el compilador del Linux.
He leído muchas críticas sobre el entorno de desarrollo y no las entiendo.
El entorno es sólo una opción. Te da algo más (que no tiene Microchip) y que está muy bien.
Por otra parte
nadie esta obligado a utilizar el entorno de desarrollo de ArduinoCreo que este punto es importante. Lo explicaré con un ejemplo. Imagínate que criticas un coche descapotable, con capota extensible:
- "Si llueve te mojas"
- Hombre, pues claro. Sobre todo si no cierras la capota.
Con Arduino pasa lo mismo. El entorno de desarrollo puedes utilizarlo si quieres o cerrarlo y utilizar otro entorno de desarrollo distinto. Nadie te obliga.
"Es que viene con librerías preprogramadas y eso te hace la vida más fácil" Si, pero nadie te obliga a utilizarlas y hacerte la vida sencilla.
CCS viene con muchas librerías para PIC y por eso es el preferido de muchos, pero tú puedes hacerte en CCS las librerías por tu cuenta si quieres. Nadie te está obligando, sólo es una facilidad que se te ofrece. (En el caso de CCS, pagando. En el caso de Arduino, es gratuíto)
4.- Placa de desarrolloArduino es una placa de desarrollo. Esto hace que tenga ciertas características. Por ejemplo tienes que conectar otras placas para completar su funcionalidad.
Microchip también tiene placas de desarrollo. Esto es así porque las placas de desarrollo te facilitan la vida a la hora de desarrollar nuevas aplicaciones.
Es una ventaja contar con placas de desarrollo en ambas plataformas.
Ahora viene lo bueno. Una vez que has desarrollado tu aplicación, puedes sacar el microcontrolador de la placa de desarrollo e insertarlo en una placa diseñada por tí.
Esto ya lo conocéis con PIC, pero tambien se puede hacer con el Atmega328. De hecho el micro ni siquiera está soldado a la placa. Se puede retirar con un simple destornillador en pocos segundos.
Y ¿qué le pasa al Atmega328 fuera del Arduino?... Absolutamente nada. Sigue funcionando igual. De hecho si incorporas una comunicación RS232 entre el PC y el Atmega328, podrás seguir programando tu placa diseñada a medida como si fuera un Arduino

- ¿Esto significa que puedo programar mi placa hecha a medida con un Atmega328, con el entorno Arduíno?
- Si, si así lo deseas. O puedes programarla con cualquier otro entorno compatible para micros Atmel.
Vamos, que lo que ofrece Arduino son muchas facilidades para programar un Atmega328, que es un micro estupendo, y no te obliga ni te limita absolutamente para nada en ningún aspecto.
Saludos.