Arduino es una plataforma electrónica de código abierto (open source), basada en hardware y software sencillos de usar.
Las distintas partes que conforman Arduino son entradas, salidas, alimentación, comunicación y shields
Entradas: son los pines de nuestra placa que podemos utilizar para hacer lecturas, estos pueden ser tanto analógicos como digitales.
Salidas: los pines de salidas se utilizan para el envío de señales, mediante PWM o digitales.
Comunicación: mediante USB para cargar los programas o enviar/recibir datos. Sin embargo, no es la única forma que tiene Arduino de comunicarse. Cuando insertamos un shield éste se comunica con nuestra placa utilizando los pines ICSP, I2C, los pines TX/RX o cualquiera de los digitales ya que son capaces de configurarse como pines de entrada o salida y recibir o enviar pulsos digitales.
Otros pines: como 5V, 3.3V, GND (tierra), TX (transmisión) y RX (lectura) también usados para comunicación serial, RESET, Vin para alimentar la placa y pines ICSP para comunicación SPI.
Las placas Arduino pueden leer entradas (sensores de luz, teclas, teclados táctiles) y procesarlas para luego, mediante sus salidas, activar algunos actuadores tales como motores u otro tipo de salidas como por ejemplo LEDs, balizas, pantallas LCD.
Además, brindan la posibilidad de incorporarles shields, módulos que permiten expandir las funcionalidades básicas. Entre los más utilizados están: Ethernet, Wi-Fi, Ultrasonido, Pantallas LCD, relés, matrices LED ‘s, GPS, Bluetooth, módulos SD, puente H para control de motores.
Arduino hace uso de un lenguaje de programación basado en C++, a través del cual se lo puede programar, haciendo uso del entorno de desarrollo (IDE) brindado por Arduino, para que realice la función deseada, incorporando un lenguaje de alto nivel, el cual permite al usuario controlar de manera sencilla todas las funcionalidades de la placa, sin la necesidad de conocer en detalle las características de la misma, logrando una capa de abstracción que facilita ser utilizada sin la necesidad de poseer conocimientos específicos del hardware de la placa, ni de los shields utilizados.
Estas funciones de alto nivel como digitalWrite() y digitalRead(), para leer entradas analógicas y digitales, conllevan una gran cantidad de código detrás, lo cual por más que nos brindan facilidad, vuelven más lenta la ejecución, lo que para algunas aplicaciones puede ser un problema.
Plataformas de desarrollo de 8 bits






