¿Qué código maneja Arduino?

Código Arduino para Principiantes y Construcción DIY

24/07/2021

Valoración: 4.19 (2563 votos)

Si te adentras en el universo de Arduino, prepárate para un viaje emocionante. No solo aprenderás a programar, sino que también comprenderás cómo dar vida a tus ideas electrónicas. Este artículo es tu punto de partida ideal, tanto si eres un completo novato en programación como si deseas construir tu propio Arduino desde cero. Desmitificaremos el código Arduino y te guiaremos paso a paso en el montaje de una placa funcional en protoboard. ¡Empecemos!

Índice de Contenido

Introducción al Lenguaje de Programación Arduino

Si nunca has programado, ¡bienvenido al club! Formas parte de la inmensa mayoría de personas que no han escrito una línea de código. Pero no te preocupes, este tutorial está diseñado para iniciarte en los fundamentos de la programación Arduino de forma sencilla y accesible. Como dijo Steve Jobs, “todo el mundo debería saber programar porque programar te enseña a pensar”. Y es que la programación no es solo para expertos en informática; es una habilidad valiosa que fomenta el pensamiento lógico y la resolución de problemas.

Un Breve Recorrido Histórico

El lenguaje de Arduino tiene sus raíces en el legendario lenguaje C. Si ya tienes experiencia con C, este tutorial te resultará familiar. Si no, basta con saber que C es el lenguaje en el que se han desarrollado sistemas operativos tan importantes como UNIX y Linux, además de innumerables sistemas, programas y aplicaciones. El lenguaje de Arduino es una versión simplificada y mucho más intuitiva de C. Su objetivo principal es que puedas programar de forma intuitiva, concentrándote en lo que quieres lograr en lugar de la complejidad técnica.

¿Qué se necesita para armar un Arduino?
Para armar un Arduino en protoboard necesitamos los siguientes materiales: Microcontrolador ATMEGA328P. Cristal de cuarzo de 16 MHz. 2 x Capacitores cerámicos de 33 pF.

Arduino nació en el Interactive Design Institute en Ivrea, Italia. Los estudiantes allí utilizaban Processing, un lenguaje orientado a artistas y diseñadores con un entorno de desarrollo visual e intuitivo. Processing sirvió de inspiración para el entorno de desarrollo de Arduino y su lenguaje de programación, buscando siempre la facilidad de uso y la accesibilidad.

Trabajar con Arduino implica principalmente interactuar con sus puertos de entrada y salida. Para simplificar la programación de estos puertos (analógicos, digitales, etc.), el lenguaje Arduino utiliza librerías. Estas librerías, que forman parte integral del lenguaje, te permiten programar pines digitales como entradas o salidas, leer señales analógicas, controlar servos y motores, entre otras funciones. La base de estas librerías, conocidas como “core libraries”, proviene de Wiring, una macro librería desarrollada por Hernando Barragán.

Cada vez que se añade un nuevo puerto a Arduino, se proporciona un conjunto de librerías especializadas para ese puerto, mantenidas por los desarrolladores.

Variables: Los Contenedores de Datos

La programación, en esencia, consiste en dar instrucciones a tu Arduino y a los dispositivos que controla para que realicen acciones. Un programa Arduino (o “sketch”) logra esto procesando datos y enviándolos a actuadores. Las variables son la forma en que representamos y manipulamos estos datos dentro del sketch.

Piensa en las variables como cajones de un escritorio. Cada cajón tiene una etiqueta que describe su contenido, y dentro se encuentra el valor de la variable. Existen diferentes tipos de variables para representar diversos tipos de datos: números (enteros, decimales, binarios, hexadecimales), texto (caracteres individuales o cadenas), matrices (arrays), constantes, etc.

Tipos de Variables en Arduino

El lenguaje Arduino soporta una variedad de tipos de variables para adaptarse a diferentes necesidades:

TipoDescripciónEjemplo
voidReservado para funciones que no devuelven valor.void setup()
void loop()
byteEntero de 0 a 255 (8 bits).byte testVariable = 129;
intEntero entre -32,768 y 32,767 (16 bits).int testVariable = 28927;
longEntero entre -2,147,483,648 y 2,147,483,647 (32 bits).long testVariable = 67876;
floatNúmero real (decimal) con rango entre ±3.4028325E+38 (32 bits).float testVariable = 3.56;
unsigned intEntero positivo de 0 a 65,545 (16 bits).unsigned int testVariable = 38948;
unsigned longEntero positivo de 0 a 4,294,967,296 (32 bits).unsigned long testVariable = 657456;
wordSinónimo de unsigned int.word testVariable = 51000;
booleanValor lógico: true (verdadero) o false (falso).boolean testVariable = true;
charCarácter ASCII (8 bits). Puede ser un carácter o su código ASCII.char testVariable = ‘a’;
char testvariable = 97;
unsigned charSimilar a byte, entero de 0 a 255 (8 bits).unsigned char testUnCh = 36;

En Arduino, al usar una variable, primero debes declarar su tipo (ej. int) y luego su nombre (ej. testVariable). Puedes declarar una variable sin asignarle un valor inicial:

int comienzo;

O inicializarla al declararla:

int comienzo = 0;

Es recomendable inicializar las variables al declararlas para facilitar la depuración y optimizar el código. Al declarar una variable, anticipa su uso y el rango de valores que tomará. Por ejemplo, si esperas valores mayores a 32,000, usa long en lugar de int, o float si necesitas decimales. No hacerlo puede llevar a resultados inesperados.

Ejemplo de uso de variables: Parpadeo de un LED

int LEDpin = 6; // Inicializa LEDpin con el pin 6 void setup(){ pinMode(LEDpin,OUTPUT); } void loop(){ digitalWrite(LEDpin,HIGH); delay (1000); digitalWrite(pinLED,LOW); delay (1000); }

Este código hace parpadear un LED conectado al pin 6. La variable LEDpin facilita la reutilización del código para otros pines. Recuerda que cada instrucción debe terminar con punto y coma (;).

Arrays: Colecciones de Variables

Un array es una colección de variables del mismo tipo, indexadas por números en lugar de palabras. Puedes declarar un array así:

int miLista[6];

E inicializarlo al mismo tiempo:

int miLista[6] ={1,2,3,4,5,6} ;

Importante: Los arrays comienzan con el índice 0, no 1. Ten cuidado de no acceder a índices fuera del array, ya que podrías obtener datos incorrectos o errores.

Ejemplos de operaciones con arrays:

int minuevaLista[4] ={1,2,3,4} ; nuevaVariable = minuevaLista[2]; // nuevaVariable = 3 minuevaLista[0] = 986; nuevaVariable = minuevaLista[0]; // nuevaVariable = 986

Strings: Cadenas de Caracteres

Un string es una cadena de caracteres. En Arduino, puedes declararlos como arrays de tipo char o como objetos de la clase String.

Strings como Arrays de Caracteres (char)

Los strings tipo char suelen terminar con el carácter nulo (ASCII 0 o \0) para indicar el final de la cadena. Al dimensionar un array char para un string, considera el espacio para este carácter nulo.

Ejemplos de declaración de arrays char para strings:

char polichori[10]; // Sin inicializar char polichori[8]= {‘C’,’h’,’o’,’r’,’i’,’z’,’o’} ; // Inicializado, \0 automático char polichori[8]= {‘C’,’h’,’o’,’r’,’i’,’z’,’o’,’\0’} ; // Inicializado con \0 explícito char polichori[]= “Chorizo”; // Dimensionado automático char polichori[8]= “Chorizo”; // Dimensionado y fraccionado char polichori[10]= “Chorizo”; // Espacio extra al final
Strings como Objetos (String)

La variable tipo String (con “S” mayúscula) ofrece más funcionalidades, aunque consume más recursos. Permite operaciones complejas como concatenar, calcular longitud, buscar y reemplazar substrings de forma sencilla.

Ejemplos de declaración de variables String:

String stringUno = "Hola String"; // String constante String stringUno = String('a'); // String a partir de char

Constantes: Valores Inmutables

Las constantes son variables cuyo valor no cambia durante la ejecución del sketch. Se declaran con la palabra reservada const. Son útiles para definir pines, constantes matemáticas, etc.

const int NoPinLed = 12; const float pi = 3.1416;

Si intentas modificar una constante, el compilador te mostrará un error.

Constantes predefinidas en Arduino:

  • INPUT/OUTPUT: Configuración de pines digitales como entrada o salida con pinMode().
  • INPUT_PULLUP: Para usar resistencias pull-up internas con pinMode().
  • LED_BUILTIN: Para el LED integrado en la placa Arduino (generalmente pin 13).
  • TRUE/FALSE: Valores booleanos. TRUE es cualquier valor no cero, FALSE es cero.
  • HIGH/LOW: Niveles lógicos en pines digitales. LOW es 0V, HIGH es 5V.

Constantes enteras: Se expresan en base 10 (decimal) por defecto. Puedes usar prefijos para otras bases:

BaseEjemploPrefijoComentario
10 (decimal)123NingunoBase decimal común.
2 (binario)B1111011BMáximo 8 bits (0-255). Caracteres 0-1.
8 (octal)01730Caracteres 0-7.
16 (hexadecimal)0x7B0xCaracteres 0-9, A-F, a-f.

Formateadores U y L: Modifican el tipo de constante entera:

  • u o U: unsigned (ej. 33u).
  • l o L: long (ej. 100000L).
  • ul o UL: unsigned long (ej. 32767ul).

Constantes de coma flotante (float): Se usan para legibilidad. Pueden usar notación científica (E o e).

Ejemplos:

  • 10.0 es igual a 10
  • 2.34E5 es igual a 234000
  • 67e-12 es igual a 0.000000000067

Ámbito de las Variables: Local y Global

El ámbito de una variable define dónde puede ser accedida en el sketch. Variables definidas fuera de setup() y loop() son globales, accesibles desde cualquier parte del programa. Variables definidas dentro de funciones son locales, accesibles solo dentro de esa función.

Ejemplo de variables globales y locales:

int pinNoLedGlobal = 12; // Variable global void Setup { pinMode(pinNoLedGlobal, OUTPUT); } void loop { int pinNoLedLocal =13; // Variable local pinMode(pinNoLedLocal, OUTPUT); digitalWrite(pinNoLedGlobal, HIGH); digitalWrite(pinNoLedLocal, LOW); }

En programas complejos, usar variables locales ayuda a evitar confusiones con nombres repetidos. En funciones anidadas, el ámbito de variables exteriores se extiende a las interiores, pero no al revés.

Variables Estáticas

La palabra clave static crea variables visibles solo dentro de una función, pero que conservan su valor entre llamadas a la función. Se inicializan solo la primera vez que se llama a la función.

Variables Volátiles

Declarar una variable como volatile indica al compilador que siempre la cargue desde la RAM, no desde registros internos del procesador. Esto es importante en rutinas de interrupción, donde el valor de una variable en registros internos podría alterarse.

Ejemplo de variable volátil:

// Conmuta un LED al cambiar el estado de un pin de interrupción int pin = 13; volatile int state = LOW; void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); } void loop() { digitalWrite(pin, state); } void blink() { state = !state; }

Marcadores Sintácticos Esenciales

Fin de Instrucción: “;”

Cada declaración e instrucción en Arduino termina con punto y coma ;.

Llaves (“curly brackets”) “{}”

Las llaves {} son cruciales en C. Definen bloques de código en funciones, bucles y estructuras condicionales. Asegúrate de que cada llave de apertura { tenga su correspondiente llave de cierre }. El IDE de Arduino puede ayudarte a verificar el equilibrio de llaves.

Usos comunes de las llaves:

  • Funciones:void myfunction(datatype argument){ instrucciones }
  • Bucles:while (condición) { instrucciones }, do { instrucciones } while (condición);, for (inicialización; condición; incremento) { instrucciones }
  • Condicionales:if (condición) { instrucciones } else if (condición) { instrucciones } else { instrucciones }

Comentarios: Documentando el Código

Los comentarios son anotaciones en el código para hacerlo más legible y comprensible. El compilador los ignora. Hay dos tipos:

  • Comentarios de una línea: Comienzan con //. Todo después de // en la misma línea es un comentario.
  • Comentarios de bloque: Comienzan con /* y terminan con */. Pueden ocupar varias líneas.

#define: Definiendo Constantes

#define permite dar un nombre a un valor constante antes de la compilación. No usa memoria del programa. El compilador sustituye las referencias a la constante por su valor durante la compilación.

Sintaxis:#define Nombreconstante valor (sin punto y coma al final).

¿Qué código maneja Arduino?
El lenguaje del Arduino está basado en el mítico lenguaje C.

Ejemplo:#define ledPin 3

#include: Incluyendo Librerías Externas

#include incluye librerías externas en un sketch, dando acceso a funciones predefinidas. No lleva punto y coma al final.

Ejemplo:#include &ltavr/pgmspace.h> (para usar la memoria flash).

Operadores Aritméticos

Arduino soporta operadores aritméticos básicos:

  • = (Asignación): Asigna el valor de la derecha a la variable de la izquierda. No confundir con == (comparación de igualdad).
  • + (Adición), - (Substracción), * (Multiplicación), / (División): Operaciones aritméticas básicas. El tipo de dato del resultado depende de los operandos. División entera si ambos son enteros.
  • % (Módulo): Devuelve el resto de una división entera. Útil para mantener valores dentro de un rango. No funciona con float.

Operadores Compuestos

  • ++ (Incremento), -- (Decremento): Incrementan o decrementan una variable en 1. Pre-incremento/decremento (ej. ++x) retorna el valor después de la operación, post-incremento/decremento (ej. x++) retorna el valor antes de la operación.
  • +=, -=, *=, /=: Operaciones aritméticas combinadas con asignación (ej. x += y; es equivalente a x = x + y;).

Utilidades: sizeof y PROGMEM

Operador sizeof

sizeof(variable) devuelve el tamaño en bytes de una variable o array.

Ejemplo:

char myStr[] = "esto es una prueba"; int i; void setup(){ Serial.begin(9600); } void loop() { for (i = 0; i < sizeof(myStr) - 1; i++){ Serial.print(i, DEC); Serial.print(" = "); Serial.write(myStr[i]); Serial.println(); } delay(5000); }

Este código imprime cada carácter de un string.

Operador PROGMEM

PROGMEM almacena datos en la memoria flash en lugar de la RAM. Se usa con tipos de datos definidos en &ltavr/pgmspace.h>. Útil para almacenar grandes bloques de datos estáticos como arrays.

Sintaxis:dataType variableName[] PROGMEM = {data1, data2, ...};

Tipos de datos PROGMEM:prog_char, prog_uchar, prog_int16_t, prog_uint16_t, prog_int32_t, prog_uint32_t.

Ejemplo de PROGMEM:

#include &ltavr/pgmspace.h> prog_uint16_t charSet[] PROGMEM = { 65000, 32796, 16843, 10, 11234}; prog_uchar signMessage[] PROGMEM = {"EL CHORIZO NINJA. EL NUEVO ÉXITO DEL CINE ESPAÑOL"}; unsigned int displayInt; int k; char myChar; displayInt = pgm_read_word_near(charSet + k); myChar = pgm_read_byte_near(signMessage + k);

Estructuras de Control: Tomando Decisiones

Las estructuras de control permiten que tu programa tome decisiones basadas en condiciones. Se basan en tests lógicos (booleanos) que resultan en true o false.

Operadores lógicos:

OperadorDescripciónOperadorDescripción
>Mayor que<Menor que
>=Mayor o igual que<=Menor o igual que
==Igual que!=Diferente

If, else, else if: Condicionales Básicos

La estructura if ejecuta un bloque de código si una condición es verdadera (true). else ejecuta un bloque si la condición es falsa (false). else if permite añadir condiciones adicionales dentro de un if.

Ejemplos:

if (varA < varB) { digitalWrite(PinLedRojo, HIGH); } if (varA < varB) { digitalWrite(PinLedRojo, HIGH); } else { digitalWrite(PinLedRojo,LOW); } if (varA < varB) { digitalWrite(PinLedRojo, HIGH); } else if (varA == varB) { digitalWrite(PinLedVerde, HIGH); } else { digitalWrite(PinLedRojo,LOW); }

Switch case: Selección Múltiple

switch case es ideal para elegir entre varias opciones basadas en el valor de una variable.

Sintaxis:

switch (variable){ case valor1: // instrucciones caso valor1 break; case valor2: // instrucciones caso valor2 break; // ... default: // instrucciones caso por defecto break; }

break es opcional, pero recomendable para evitar que se ejecuten los siguientes casos. default es opcional y se ejecuta si ningún caso coincide.

Operadores Lógicos Booleanos: AND, OR, NOT

Arduino usa operadores lógicos booleanos:

  • && (AND): Verdadero si ambas condiciones son verdaderas.
  • || (OR): Verdadero si al menos una condición es verdadera.
  • ! (NOT): Invierte el valor lógico (verdadero a falso y viceversa).

Ejemplos:

if (varA > varB && varC > varD) { ... } if (varA > varB || varC > varD) { ... } if (!botonPulsado) { ... }

Operadores Lógicos Binarios

Operaciones lógicas a nivel de bit:

  • ~ (NOT binario): Invierte los bits de un número.
  • & (AND binario): AND bit a bit.
  • | (OR binario): OR bit a bit.
  • ^ (XOR binario): XOR bit a bit.
  • << (Desplazamiento a la izquierda): Desplaza bits a la izquierda.
  • >> (Desplazamiento a la derecha): Desplaza bits a la derecha.

Bucles (Loops): Repetición de Tareas

Los bucles permiten repetir un bloque de código varias veces.

Bucle “for”

Ejecuta un bloque de código un número específico de veces, generalmente con un contador.

Ejemplo:

void setup() { Serial.begin(9600); } void loop { for (int i = 0; i < 100; i++){ Serial.println(i); } }

Estructura del bucle for:for (inicialización; condición; incremento/decremento) { instrucciones }

Bucle “while”

Ejecuta un bloque de código mientras una condición sea verdadera. Útil cuando no se sabe cuántas veces se repetirá el bucle, por ejemplo, esperando la lectura de un sensor.

Sintaxis:while (condición) { instrucciones }

Bucle “do while”

Similar a while, pero la condición se evalúa al final del bucle, asegurando que el bloque de código se ejecute al menos una vez.

Sintaxis:do { instrucciones } while (condición);

Instrucciones de Control de Bucles: continue y goto

  • continue: Salta el resto del bloque de código actual en un bucle y pasa a la siguiente iteración.
  • goto: Transfiere el control del programa a una etiqueta específica. Generalmente desaconsejado por dificultar la legibilidad y depuración del código.

Funciones: Modularizando el Código

Las funciones permiten agrupar bloques de código reutilizables. Simplifican el código y facilitan la programación de tareas repetitivas.

Estructura de una función:

tipoRetorno nombreFuncion(parametros){ // código de la función return valorRetorno; // si la función no es void }

Si una función no devuelve valor, se declara como tipo void. La instrucción return devuelve el control al sketch y, opcionalmente, un valor.

Ejemplo: Función para convertir Fahrenheit a Celsius:

float calcTemp(float fahrenheit){ float celsius; celsius = (fahrenheit – 32)/ 1.8; return celsius; }

Construyendo tu Propio Arduino Uno en Protoboard

Ahora que tienes una base en el código Arduino, ¡vamos a construir tu propia placa Arduino Uno en una protoboard! Aunque existen Arduinos genéricos muy económicos, construir el tuyo es una excelente experiencia de aprendizaje. En este apartado, te guiaremos para armar un Arduino Uno minimalista y funcional en una protoboard, incluyendo un moderno puerto USB tipo C.

¿Qué Necesitas para Empezar? Materiales

Para construir tu Arduino en protoboard, necesitarás los siguientes componentes:

  • 1 x Microcontrolador ATMEGA328P DIP
  • 1 x Protoboard
  • 1 x Interfaz USB a Serial UART TTL CH340E (conector USB tipo C opcional)
  • 1 x Cristal de cuarzo de 16 MHz
  • 2 x Condensadores cerámicos de 22 pF (picoFaradios)
  • 2 x Condensadores electrolíticos de 10 uF (microFaradios)
  • 2 x Condensadores cerámicos de 0.1 uF (100 nF)
  • 1 x Resistencia de 10 kΩ (kiloohmios)
  • 2 x Resistencias de 220 Ω (ohmios)
  • 1 x Resistencia de 1 kΩ (kiloohmios)
  • 1 x LED de 5mm (color a elección)
  • 1 x Pulsador (botón)
  • Cables de conexión para protoboard (jumper wires)

Opcionales:

  • Zócalo DIP de 28 pines (para el ATMEGA328P, facilita el montaje y reemplazo)

Diagrama Esquemático del Arduino en Protoboard

Este es el esquema del circuito que vamos a construir:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAIYCAYAAAC7Bw+UAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+ESURBVHhe7d0JfFz5/c/P6f/x1t299r7r7r57e1/3d+59+e6994237r3r3v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve+e977r3v+773v7n3v3ve;Imágenes del circuito esquemático no incluidas por limitaciones de formato texto. Consultar el artículo original para ver el diagrama.</p>

Explicación del Circuito

Vamos a desglosar los componentes y su función en el circuito:

  • C1 y C2 (Condensadores de Desacople): Estos capacitores de 0.1 uF se conectan cerca de los pines de alimentación del ATMEGA328P (VCC y GND) para estabilizar el suministro de energía y reducir el ruido. Son esenciales para un funcionamiento estable del microcontrolador.
  • Q1 (Cristal de Cuarzo de 16 MHz), C3 y C4 (Condensadores de 22 pF): Juntos, forman el circuito oscilador. El cristal de 16 MHz es el reloj principal que marca el ritmo de funcionamiento del ATMEGA328P. Los condensadores C3 y C4 ayudan a estabilizar la oscilación. Es crucial que estos componentes estén cerca del microcontrolador y con conexiones cortas.
  • R1 (Resistencia de 10 kΩ), C5 (Condensador de 10 uF) y Pulsador (Reset): Este conjunto es el circuito de reset. R1 es una resistencia pull-up que mantiene el pin de reset del ATMEGA328P en estado alto (sin resetear) en condiciones normales. El pulsador permite realizar un reset manual al conectar el pin de reset a GND. C5, junto con la señal DTR de la interfaz USB a serial, permite que la computadora pueda resetear el microcontrolador automáticamente al cargar un nuevo programa, activando el bootloader.
  • R2 y R3 (Resistencias de 220 Ω): Estas resistencias protegen los pines de datos RX y TX de la interfaz serial USB a TTL (CH340E). Limitan la corriente en caso de que haya conflictos de estado lógico entre el microcontrolador y la interfaz serial.
  • R4 (Resistencia de 1 kΩ) y LED1 (LED de 5mm): Este es el circuito del LED de prueba, similar al LED integrado en las placas Arduino Uno. Está conectado al pin digital 13 del ATMEGA328P y permite ejecutar el clásico ejemplo “Blink” para verificar el funcionamiento.

Montaje en la Protoboard

La imagen anterior muestra un ejemplo de cómo podría quedar el circuito armado en una protoboard. Recuerda seguir el esquema y colocar los componentes correctamente. Utiliza cables de conexión cortos y limpios para evitar problemas de funcionamiento. Si es tu primera vez, monta el circuito por etapas, comenzando por la sección de alimentación y oscilador, luego el reset, y finalmente la interfaz serial y el LED.

Cargando el Bootloader y el Primer Sketch

1. Cargar el Bootloader: Para poder programar el ATMEGA328P a través de la interfaz USB serial, primero debes cargar el bootloader. El bootloader es un pequeño programa pre-cargado en el microcontrolador que permite la carga de nuevos sketches sin necesidad de un programador externo cada vez. Para cargar el bootloader, necesitarás un programador AVR USBASP, un shield programador de ATMEGA328P, o incluso otro Arduino Uno que puedes usar como programador ISP (In-System Programmer).

2. Instalar el Driver CH340E: La interfaz USB a serial UART TTL CH340E requiere un driver para que tu computadora la reconozca. Descarga e instala el driver adecuado para tu sistema operativo desde la página del fabricante o de un proveedor confiable de componentes electrónicos.

3. Prueba con el Ejemplo “Blink”: Una vez que el bootloader esté cargado y el driver instalado, conecta tu Arduino en protoboard a la computadora a través del USB. Abre el Arduino IDE. En el menú “Herramientas > Placa”, selecciona “Arduino Uno”. Luego, en “Herramientas > Puerto”, elige el puerto COM que corresponde a tu interfaz CH340E (puedes ver el puerto en el administrador de dispositivos de tu sistema operativo).

Abre el ejemplo “Blink” desde “Archivo > Ejemplos > 01.Basics > Blink”. Haz clic en el botón “Subir” (la flecha hacia la derecha). Si todo está correcto, el Arduino IDE mostrará un mensaje de “Subida completada” y el LED conectado al pin 13 en tu protoboard comenzará a parpadear.

Preguntas Frecuentes (FAQ)

  1. ¿Necesito soldar para construir este Arduino en protoboard? No, la protoboard permite realizar conexiones sin soldadura, lo que es ideal para prototipos y aprendizaje.
  2. ¿Puedo usar un cristal de cuarzo de otra frecuencia? Sí, pero debes asegurarte de configurar el Arduino IDE correctamente para la frecuencia del cristal que uses. 16 MHz es la frecuencia estándar para Arduino Uno.
  3. ¿Qué es el bootloader y por qué es necesario? El bootloader es un programa que se carga inicialmente en el microcontrolador y permite cargar nuevos programas (sketches) a través del puerto serial USB sin necesidad de un programador externo cada vez.
  4. ¿Dónde puedo conseguir los materiales? Puedes encontrar todos los componentes en tiendas de electrónica online o físicas. Busca proveedores confiables de componentes Arduino y electrónicos.
  5. ¿Qué ventajas tiene construir mi propio Arduino en protoboard? Principalmente, el aprendizaje. Construir tu Arduino te ayuda a entender cómo funciona internamente una placa Arduino, la función de cada componente y cómo interactúan entre sí. También te da la base para diseñar tus propias PCBs (placas de circuito impreso) en el futuro.

Conclusión

¡Felicidades! Has dado tus primeros pasos en el mundo del código Arduino y has aprendido a construir tu propia placa en protoboard. Ahora tienes una base sólida para explorar proyectos más complejos, experimentar con sensores, actuadores y shields, y dar rienda suelta a tu creatividad electrónica. El conocimiento adquirido aquí te permitirá no solo programar Arduinos, sino también comprender mejor la electrónica digital y cómo integrarla en tus propios diseños. ¡Sigue experimentando y creando!

Subir