Placa Arduino Uno.
Arduino es una placa electrónica de hardware libre que utiliza un
microcontrolador reprogramable con una serie de pines que permiten
establecer conexiones entre el controlador y los diferentes sensores, es
decir el "cerebro" de algún circuito o maquinaria.
Los diseños de las placas Arduino usan diversos microcontroladores y microprocesadores. Generalmente el hardware consiste de un microcontrolador Atmel AVR, conectado bajo la configuración de "sistema mínimo" sobre una placa de circuito impreso a la que se le pueden conectar placas de expansión (shields) a través de la disposición de los puertos de entrada y salida presentes en la placa seleccionada. Las shields complementan la funcionalidad del modelo de placa empleada, agregando circuiteria, sensores y módulos de comunicación externos a la placa original.
Un microcontrolador es un integrado capaz de ser programado desde un ordenador y seguir la secuencia programada.
Puesto que Arduino es una plataforma open source disponemos de toda la documentación de los microcontroladores usados.
La placa ARDUINO UNO tiene 14 pines digitales, 6 pines analógicos programables con el Arduino IDE (Entorno de desarrollo integrado) a través de un cable USB. Puede ser alimentado por el cable USB o por una batería externa de 9 voltios a través de una fuente externa a través del conector de tipo jack, aunque a través de fuente externa acepta voltajes entre 7 y 20 voltios. Hay un regulador de tensión que ajusta el voltaje de entrada a un voltaje estable de salida de 5 Voltios y un máximo de intensidad de 500 mA. La tensión de entrada ideal sería de 7.5V a 9V, si se suministra más tensión el regulador de tensión la regula disipando ese exceso de energía emitiendo calor.
Detalles de voltaje e intensidad de corriente
Limites de voltaje de entrada • 7~12 V recomendado Limites de corriente de salida: • Si es alimentado por USB: un total de 500 mA |
Añadiendo una resistencia en serie con el pin de Entrada/Salida de Arduino, se incrementa la protección del voltaje de entrada para ese Pin. Por ejemplo, una resistencia de 10K proporciona una protección suficiente para permitir voltajes de entrada comprendidos entre los -10.5 V y los +15.5V. Una resistencia de 100 k te permite voltajes de entrada de corriente contínua comprendidos entre los -100.5V y los +105.5V.
Este último punto (Suma de todas las Entradas/Salidas combinadas) es uno de los que más suele confundir y puede ser el
menos entendido. Independientemente del hecho que el regulador del Uno
pueda suministrar un Amperio (o para el mismo caso los 500 mA del Nano) a
los pines 5V y GND; el total de amperaje combinado de los pines de
Entrada/Salida (incluidos los pines analógicos) del micro controlador
Atmega328 no debe exceder nunca los 200 mA, aunque en la descripción aparezca 800 mA, realmente es la suma de intensidades de varios subgrupos de pines limitados a 200 y a 100 mA, como máximo.
Una posible solución a esto es usar transistores; Las Entradas/Salidas necesitarían muy poca corriente para activar a los transistores, lo cuales en turno tomarían la corriente necesaria directamente del pin 5V (el cual está conectado directamente al regulador de la placa). De esta forma, se mantiene la suma de corrientes de los pines de Entrada/Salida por debajo del limite de 200 mA, mientras que en el pin de 5V no se pase de 500 mA o 1 A según sea el caso.
![]() |
Esquemático de la placa |
![]() |
Detalle de las entradas y salidas de la placa así como el voltaje |
En cuanto a la limitación del voltaje, los voltajes de alimentación recomendados son 7~12 V. Estos voltajes de entrada pueden ser sostenidos indefinidamente. Por debajo de 7 Voltios (por ejemplo 5V del puerto USB) puede causar que los niveles de 5 V de la placa varíen, fluctúen o caigan causando inestabilidad y lecturas análogas inexactas cuando se utilice analogRead() en su programación.
Software de Arduino
Como indicábamos la mayoría de las placas Arduino pueden ser alimentadas por un puerto USB (5 voltios) o un puerto barrel Jack de 2.5mm (el alimentador debe proporcionar de 7 a 12 V). Casi todas las placas Arduino pueden ser programadas a través del puerto serie que incorporan haciendo uso del Bootloader que traen programado por defecto. El software de Arduino consiste en dos elementos: un entorno de desarrollo (IDE) (basado en el entorno de processing y en la estructura del lenguaje de programación Wiring), y en el cargador de arranque (bootloader, por su traducción al inglés) que es ejecutado de forma automática dentro del microcontrolador en cuanto este se enciende. Las placas Arduino se programan mediante un computador, usando comunicación serie.
Cuando el microcontrolador ejecuta una instrucción que definimos en el sketch, internamente hace muchas operaciones y cada una de esas operaciones se ejecuta en un ciclo de reloj. El ciclo de reloj de Arduino Uno es 16 MHz, lo cual quiere decir que se ejecuta 16 millones de tics de reloj por segundo , Cada instrucción o control en un programa utiliza los impulsos de reloj. Mientras más tareas lleva a cabo tu programa, más rápido se consume ese superávit aparentemente interminable de ciclos de reloj.
La importancia de conocer el ciclo de ejecución de instrucciones en un micro controlador estriba en que en ocasiones es necesario calcular de forma precisa el tiempo de ejecución de los bucles para actuar en tiempo real, en proyectos más complejos. El límite máximo de velocidad de reloj realmente se hace aparente cuando se empieza a tratar de controlar los motores de pasos o manipular la respuesta del codificador de servomotores.
Arduino permite una entrada de tensión hasta 20 V, aunque se limita mediante un regulador de tensión a 5V, es decir Arduino emitirá a través de los pines y zócalos de alimentación un máximo de 5V de diferencia de potencial eléctrico.
La protoboard
La protoboard o placa de prototipos es una placa que se alimenta a través de arduino en los extremos + con VCC y en los negativos - con GND y cuya disposición permite añadir componentes en cualquier ubicación siempre que respetemos la polaridad del componente que añadamos así como la necesidad de aplicar una disminución del voltaje mediante resistencias. En las dos primeras filas por los extremos la señal se transmite en horizontal, mientras que en el resto de las filas se transmite en horizontal, es decir por columnas. 
En la protoboard la señal se transmite
en horizontal en las dos primeras filas
y en vertical en el resto con la separación
a la mitad que no transmite ninguna señal

en horizontal en las dos primeras filas
y en vertical en el resto con la separación
a la mitad que no transmite ninguna señal
Ejemplo de un sketch o programa
En cuanto a nuestro código, para poder establecer un pin en concreto como entrada o salida, podremos hacer referencia al número de pin directamente, 2, 3 o 13 por ejemplo para los pines digitales o A1, A2.. para los pines analógicos, pero lo más interesante es que podremos utilizar una variable que haga referencia siempre a ese pin durante todo el código de nuestro sketch en el proyecto que estemos desarrollando.
Dentro de los pines digitales, pine 0, pin 1.. pin 13 hay algunos que podremos observar tienen una tilde o virgulilla ~. Este símbolo quiere decir que ese pin digital en concreto podrá utilizarse para generar salida analógica. Estas Salidas PWM (Pulse Width Modulation o Modulación por ancho de pulso) permiten generar salidas analógicas desde esos pines digitales, de tal manera que podremos controlar la cantidad de energía que sale para llevar a cabo alguna acción (como acelerar poco a poco nuestro motor conectado a la rueda en un proyecto de robot). Escribamos ahora un ejemplo de código que nos permite manejar los conceptos explicados anteriormente y que está relacionado con un proyecto que desarrollaremos en el futuro con un componente electrónico pulsador y un Led (se explican estos componentes justo ahora después)
Las variables se definen indicando el tipo (byte, int,long, float,etc) el nombre de la variable y si se quiere un valor por defecto que tendrá la variable al comenzar el programa, pero que podrá caambiar.
byte buttonPin = 2; // el Pin digital que se conecta al botón
byte ledPin = 13; // el pin digital que se conecta al led
byte buttonState = 0; // variable para leer el estado del pulsador
/*
Esta función de setup sólo se ejecuta una sola vez y tiene este nombre y declaración.
Dentro se inicializan los pines y se llevan a cabo todas las opciones de configuración que
solo se ejecutan una vez
*/
void setup() {
// inicializar el pin LED como salida
pinMode(ledPin, OUTPUT);
// initialize el pin del pulsador como entrada:
pinMode(buttonPin, INPUT);
}
/*
Esta función se ejecuta de forma cíclica, dentro de los 16Mhz de ciclo de reloj, cuantas más instrucciones incluyamos más se enlentecerá el proceso
*/
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if( buttonState == HIGH ) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
Podemos simplificar void loop con solo dos líneas
void loop(){
buttonState = digitalRead(buttonPin);
digitalWrite(ledPin, buttonState) ;
}
Información sobre las funciones utilizadas:
- pinMode() – configura en el pin especificado si se va a comportar como una entrada o una salida. http://arduino.cc/en/Reference/PinMode
- digitalWrite() – Escribe un valor HIGH o LOW en el pin digital especificado. Si el pin está configurado como OUTPUT pone el voltaje correspondiente en el pin seleccionado. Si el pin está configurado como INPUT habilita o deshabilita la resistencia interna de pull up del correspondiente pin. http://arduino.cc/en/Reference/DigitalWrite
- digitalRead() – lee el valor del pin correspondiente como HIGH o LOW. http://arduino.cc/en/Reference/DigitalRead
Información sobre la estructura de control if (Si).
If (Si en español) es una estructura de control condicional y su sintaxis es
if(condicion){ //si se cumple la condición
//haz una acción
}
else //si no {
//haz otra acción
}
De tal manera que en el código if buttonState == HIGH , que expresa una condición que indica que si la variable buttonState tiene el valor HIGH (alto) ejecuta el bloque de código que hay a continuación que es digitalWrite(ledPIn, HIGH), y por tanto manda la señal al pin 13 asociado al LED para que se ponga en un valor alto y se encienda el LED que comenzará a brillar. En la condición de la estructura de control condicional if, se pueden establecer otras comparaciones
buttonState != HIGH
Esta condición querría decir que la variable no contiene el valor HIGH, si no otro cualquiera.
Si fuera una comparación numérica
if (a <= 5) si la variable a es menor o igual que 5
if(a>6) si la variable a es mayor que 6
todos los bloques de código dentro de una estructura de control o una función deben ir entre llaves
{
}
Igualmente las funciones deben tener una llave para empezar y una llave para terminar la función
Pero dónde escribimos este código y cómo se lo comunicamos y cargamos a la placa Arduino Uno?
Pues a través del IDE (Integrated Development Environment) de Arduino (descargar, instalar en tu equipo, y conectar la placa con el cable USB que trae el kit a través del puerto USB del ordenador), escribir el código y pulsar el botón para cargar el sketc
![]() |
IDE Arduino |
LED. Diodos emisores de luz.
es una fuente de luz constituida por un material semiconductor dotado de dos terminales. Tiene dos conexiones polarizadas, el ánodo y el cátodo, a las que habrá que hacerle llegar la alimentación (polo positivo) y la masa (GND). Nos permitirá disponer de una indicación luminosa o salida.
Un LED es un componente en el que el voltaje que cae depende de la intensidad, de la corriente que circula por él, siempre que esta corriente circule en el sentido correcto.
Los leds se usan como indicadores en muchos dispositivos y en iluminación. Los primeros leds emitían luz roja de baja intensidad, pero los dispositivos actuales emiten luz de alto brillo en el espectro infrarrojo, visible y ultravioleta.
Un LED al ser un diodo tiene una caída de
tensión que depende del tipo o color del LED. Para usar un LED es
imprescindible poner una resistencia adecuada a cada led. Ya que la tensión que suministra arduino es de 5V y el led puede admitir .
Para este motivo se utiliza una resistencia en serie, cuya función es
limitar a la corriente y se conecta al la patilla corta o voltaje negativo. Si no se coloca puede dañar irreparablemente al
LED. Además para la corriente que pasa por este, sea la adecuada y así
que su diferencia de potencial sea la que recomienda el fabricante y
evitar la sobre tensión. A la patilla larga se conectará el voltaje positivo transmitido por el PIN de arduino y la patilla corta el voltaje negativo junto con la resistencia en serie.
lo cual se puede consultar en el Datasheet (u hoja de especificacones) del led, buscando https://www.google.com/search?client=firefox-b-d&q=led+rojo+datasheet. Según la ley de ohm: V = I * R, si el voltaje es de 5 V y queremos que al LED sólo le lleguen entre 20 mA (0.02 A), entonces usar una resistencia,
R= (5V-1.8V)/20mA = 160 ohms
que normalizada (valor comercial más aproximado) es de 150 ohms o 220 ohms.
El diodo semiconductor.
Este tipo de diodos son, en su mayoría, una unión de dos materiales semiconductores con características especiales (unión p-n). Uno de los materiales (tipo n) constituye una región con carga negativa (electrones). El otro (tipo p) presenta carga positiva (huecos).
Resistencias
Se le denomina resistencia eléctrica a la igualdad de oposición que tienen los electrones al desplazarse a través de un conducto. Una calculadora de Resistencias:
http://www.digikey.com/es/resources/conversion-calculators/conversion-calculator-resistor-color-code-5-band
Ya la vimos el concepto en profundidad en esta entrada
Pulsadores
Los pulsadores o botones son por lo general activados, al ser pulsados con un dedo. Permiten el flujo de corriente mientras son accionados. Cuando ya no se presiona sobre él vuelve a su posición de reposo. En la siguiente imagen aparece la representación de un pulsador junto a una resistencia conectados a un fragmento de una protoboard.
![]() |
Pulsador y resistencia |
Al incluir un botón en el circuito es preciso disponer de una resistencia a la entrada de corriente (VCC) o a la salida de la misma (GND) que permita mantener un estado lógico conocido de referencia cuando el botón no está siendo accionado.
Esto es necesario ya que las entradas del microcontrolador, si se dejan al aire, no poseen un estado determinado y pueden ir a cualquiera de dos estados posibles de forma aleatoria.
Si la resistencia se pone a la entrada de alimentación (VCC) , se denomina Pull-up y esto quiere decir que mantiene un estado alto (HIGH) en el pin mientras el pulsador no es accionado, y por tanto el estado activo del botón es BAJO (LOW) cuando se presiona).
Para el caso de Arduino y valores de tensión entre 0 a 5V, valores
típicos de resistencias de Pull Down y Pull Up son 4k7 (4.7K), y 10k, que
suponen un consumo de 1mA y 0,5mA respectivamente cuando el pulsador
está accionado. En la página oficial de Arduino dice que la corriente que puede circular en los pines de entrada y salida son 20mA, luego R = 5V/20mA = 5 V / 0,020 A = 250 Ohm, con 1 K podría valer, pero para asegurar puedes poner 10K.
La resistencia pull-down mantiene un estado bajo (LOW) mientras el pulsador no es accionado, y por tanto el estado activo del botón es ALTO o HIGH (cuando se presiona).
Las resistencias de Pull-Down y Pull-Up se conectan entre el PIN digital y una de las tensiones de referencia (0V o 5V) y "fuerzan" (de ahí su nombre) el valor de la tensión a LOW (pull-up) o HIGH (pull-down), respectivamente.
![]() |
Esquema circuito con led, pulsador, resistencias y pines de conexión |
En el prototipo que se muestra en la imagen y que está relacionado con el código que hemos descrito en el primer apartado hemos puesto un esquema de resistencia pull-down al pulsador, esto quiere decir que estará a un nivel bajo (LOW) mientras no se pulse, y estará a un nivel alto (HIGH) mientras se mantenga pulsado, en cuyo caso según el código que hemos descrito anteriormente se encenderá el led..
Tal y como indicábamos en la sección de LED, es un led rojo, por lo que le hemos puesto una resistencia pinchada directamente en el PIN que va hasta su ánodo (polo positivo) a través de la protoboard. Y en la parte del negativo conectamos GND (masa) que va a la entrada de la resistencia pull-down del pulsador.
A continuación se muestra el prototipo real, con el botón pulsado y por tanto el led encendido.
![]() | |
Prototipo real con led, pulsador, resistencias y código ejecutado |
Esto está muy bien, pero me aburro de mantener el dedo pegado al botón. Por lo que lo vamos a programar para que al pulsar se
quede encendido. En este escenario al trabajar con botones nos vamos a
encontrar el problema de los rebotes o bouncing. La solución pasa por
leer el estado del botón cuando se produce el borde ascendente de la
tensión a extremos de los contactos del pulsador e introducir
inmediatamente la salida con ese estado, el resto de entradas (se llama
ruido) se inhiben o anulan mediante un lapsus de tiempo. En nuestro código anterior modificamos para incluir una variable booleana (solo tiene valores true o false, verdadero o falso, por lo que podremos comprobar si es verdadera con solo incluirla en la condición, para verdadero con if(encendido) y para falso con if (!encendido), para concatenar más de una condición se utilizan los operadores && (significa 'Y', si se cumple esta condición 'Y' esta otra) o los operadores || (significa si se cumple esta condición 'O' la otra)
bool encendido = false;
void setup(){
..
}
void loop(){
...
if( buttonState == HIGH && !encendido ) {
encendido = true;
delay(200)
else if(buttonState == LOW && encendido){
digitalWrite(13, LOW);
encendido = false;
delay(200)
..
}
Potenciómetros
Como ya vimos un
potenciómetro es un tipo de resistencia cuyo valor de resistencia es variable, es una resistencia variable, varía al mover una pequeña ruedecita.
De esta manera, indirectamente, se puede controlar la intensidad de
corriente que fluye por un circuito si se conecta en paralelo, o la
diferencia de potencial (el voltaje) al conectarlo en serie, para modificar el comportamiento de un componente asociado (dotar de mayor o menor intensidad la luz de un LED o una pantalla LCD por ejemplo).
Normalmente, los potenciómetros (que son resistencias y que por tanto transforman la oposición de la diferencia de potencial en energía disipada) se utilizan en circuitos de poca corriente. Para circuitos de corrientes mayores, se utilizan los reostatos, que pueden disipar más potencia.
Transistor
El transistor es un dispositivo electrónico semiconductor utilizado para entregar una señal de salida en respuesta a una señal de entrada. Cumple funciones de amplificador, oscilador, conmutador o rectificador. El término «transistor» es la contracción en inglés de transfer resistor («resistor de transferencia»). Actualmente se encuentra prácticamente en todos los aparatos electrónicos de uso diario tales como radios, televisores, reproductores de audio y video, relojes de cuarzo, computadoras, lámparas fluorescentes, tomógrafos, teléfonos celulares, aunque casi siempre dentro de los llamados circuitos integrados.
Un transistor puede trabajar de dos maneras:
- Permitir o cortar el flujo de corriente. Es decir como un interruptor o una puerta lógica (si se unen dos transistores en Serie tenemos una puerta lógica AND y si se unen en paralelo una puerta lógica OR) en electrónica digital.
- Amplificar una señal de entrada, en electrónica analógica. Esta función la usaremos en alguno de nuestros proyectos, como la amplificación de la señal de un altavoz.
- Aunque estas dos funciones son las más habituales, el Transistor también puede asumir funciones de amplificador, oscilador, conmutador o rectificador de una corriente eléctrica.
El transistor es la piedra angular de los dispositivos electrónicos modernos y parte esencial de los sistemas electrónicos
Tiene tres componentes: La región central recibe el nombre de base y las extremas de denominan colector y emisor
El funcionamiento del transistor es muy sencillo: Si no hay corriente de base Ib (Intensidad en base), no hay corriente entre el colector y el emisor (Ic-e). Cuando le llega una corriente muy pequeña por la base Ib, tenemos una corriente entre el colector y el emisor (Ic-e) que será mayor que la Ib.
Podemos considerar la Ib como una corriente de entrada y la Ic-e como una de salida, entonces, cuando le llega una corriente muy pequeña de entrada por la base, obtenemos una corriente mucho mayor de salida (entre colector y emisor).
Los transistores pueden encontrarse en tres zonas.
- En Corte cuando no hay nada de corriente en la base (Ib = 0mA), por lo que no se transmite corriente entre el colector y el emisor.
- En Activo cuando hay una pequeña corriente de base y se permite el paso de corriente entre el colector y el emisor incrementada mediante el parámetro de ganancia del transistor, de tal manera que si la ganancia es de 10 sobre Ib, tendremos Ic = 10Ib.
- En saturación, cuando a partir de una cantidad máxima de corriente en la base (Ib) no se puede generar una mayor ganancia entre el colector y el emisor, con Ib en sus máximos, tenemos una Ice en sus máximos.
En la hoja de datos del transistor tendremos definidos estos parámetros con sus valores máximos, no se deberán sobrepasar para evitar que el transistor se dañe.
Normalmente solo se utiliza una fuente de tensión para alimentar tanto al receptor a través del colector-emisor, como para alimentar a la base para activar el transistor.
Es decir hay que fijarse muy bien en las corrientes máximas que aguanta el transistor que estemos usando para no quemarlo. La potencia máxima que puede disipar el transistor estará en consonancia con la potencia de los receptores en el circuito de salida. Según la fórmula de la potencia: P = V x I, en el transistor sería: P = Vc-e x Ic tensión colector-emisor por intensidad del colector. Tenemos que saber la potencia total que tiene el receptor o los receptores que pongamos en el circuito de salida para elegir un transistor que sea capaz de disipar esa misma potencia o superior, de lo contrario se quemaría.
Su estructura interna recuerda la del diodo, pero es algo más compleja, pues en vez de tener una unión P-N tiene dos, que separan una región central, de un tipo, de las dos extremas, de tipo contrario a la central. Esto puede hacerse de dos maneras: con una región central de tipo N y dos extremas de tipo P (estructura PNP); o bien con una región central de tipo P y dos extremas de tipo N (estructura NPN). Las dos estructura funcionan de forma similar, pero con tensiones de alimentación de polaridad contraria. Se denomina unión PN a la estructura fundamental de los componentes electrónicos comúnmente denominados semiconductores, principalmente diodos y transistores.
Emplearemos uno u otro dependiendo del sentido en que deba circular la corriente eléctrica. Se utiliza un transistor PNP si la corriente debe circular de Emisor a Colector, y NPN si circula de Colector a Emisor. Como vemos, este sentido de circulación está indicado en el símbolo electrónico del transistor BJT por la dirección de la flecha en el terminal de Emisor.
Condensadores
En casi todas las aplicaciones prácticas cada conductor se encuentra inicialmente descargado y al conectarlos a una batería, mediante transferencia de carga de la batería a los conductores, van adquiriendo una cierta carga (dicho proceso se denomina carga del condensador). En todo momento, ambos conductores tienen igual carga pero de signo opuesto de tal forma que entre ambos conductores existe un campo eléctrico y por tanto una diferencia de potencial que se opone a la externa responsable de su carga. El proceso de carga del condensador se detiene cuando la diferencia de potencial entre los conductores del mismo se iguala a la de la batería.
Fuentes
- https://es.wikipedia.org/wiki/Arduino
- https://es.wikipedia.org/wiki/Led
- https://es.wikipedia.org/wiki/Transistor
- https://aprendiendoarduino.wordpress.com
- https://tallerelectronica.com/transistor-bjt/
- http://myelectronic.mipropia.com/transistor.html?i=1
- http://blog.efectoled.com/es/todo-sobre-los-diodos/
- https://www.prometec.net/transistores/
- https://www.areatecnologia.com/TUTORIALES/EL%20TRANSISTOR.htm
- https://www.electricrcaircraftguy.com/2014/02/arduino-power-current-and-voltage.html
- https://www.aladuino.com.mx/blog/limites-de-voltaje-corriente-y-alimentacion-del-arduino/
- https://playground.arduino.cc/Main/ArduinoPinCurrentLimitations/
- http://www.practicasconarduino.com/manualrapido/condensadores.html
- http://cactus.io/platform/arduino/arduino-uno