Está en la página 1de 28

UNIVERSIDAD AUTONOMA TOMAS FRIAS

FACULTAD TECNOLOGICA
CARRERA INGENIERIA ELECTRÓNICA

Laboratorio n° 2
(Manejo de puertos como salida del Arduino)
MATERIA:
Diseño electrónico asistido por computadora
ESTUDIANTE:
Univ. Jhovana Condori Mamani
DOCENTE:
Ing. Eduardo Gunar Rodríguez Mendoza
FECHA DE ENTREGA:
POTOSÍ-BOLIVIA
Objetivo. - se tiene los siguientes objetivos:

-El conocer el funcionamiento del Arduino uno y sus aplicaciones tanto en


nivel software como de hardware

-el conocer y manipular los pines del Arduino como salidas

-La realización de la simulación de los diferentes programas en proteus


para poder comprobar su correcto funcionamiento

-el armado del circuito ya simulado para ver su correcto funcionamiento

HERRAMIENTAS Y NOMENCLATURA. -

HARDWARE

Arduino uno

Arduino
UNO
Los Arduino
y en general
los

microcontroladores tienen puertos de entrada y salida y puertos


de comunicación. En Arduino podemos acceder a esos puertos a
través de los pines.
Pines digitales: pueden configurarse como entrada (para leer,
sensores) o como salida (para escribir, actuadores)
Pines analógicos de entrada: usan un conversor analógico/digital y
sirven para leer sensores analógicos como sondas de temperatura.
Pines analógicos de salida (PWM): la mayoría de Arduino no tienen
conversor digital/analógico y para tener salidas analógicas se usa la
técnica PWM. No todos los pines digitales soportan PWM.
Puertos de comunicación: USB, serie, I2C y SPI

Otro aspecto importante es la memoria, Arduino tiene tres tipos de


memoria:
 SRAM: donde Arduino crea y manipula las variables cuando se
ejecuta. Es un recurso limitado y debemos supervisar su uso para
evitar agotarlo.

 EEPROM: memoria no volátil para mantener datos después de un


reset o apagado. Las EEPROMs tienen un número limitado de
lecturas/escrituras, tener en cuenta a la hora de usarla.

 Flash: Memoria de programa. Usualmente desde 1 Kb a 4 Mb


(controladores de familias grandes). Donde se guarda el sketch.

Especificaciones detalladas de Arduino UNO:

Microcontroller & USB-to- ATmega328P & Atmega16U2


serial converter
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328) of which 0.5 KB
used by bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 1 Hz
Display LCD 16X2

Es una pantalla de cristal liquido nombrada asi por sus siglas en ingles
Liquid Crystal Display

El display LCD 16×2 es un dispositivo de salida muy común en proyectos


con microcontroladores como Arduino. Este dispositivo permite mostrar
texto y números en una disposición de dos lineas de texto de 16
caracteres cada una. Esta conformado por dos partes principalmente: un
PCB que aloja el controlador de pantalla LCD y la pantalla de cristal
liquido (LCD) propiamente.

– Pin 1 – Vss: GND o tierra.


– Pin 2 – Vdd: Alimentación Vcc o +5V.
(Algunos pueden alimentarse a 3 Vcc)
– Pin 3 – V0: Control del contraste del display, conectamos este pin al
terminal variable de un potenciómetro conectado a Vcc y Masa en sus
terminales extremos.
– Pin 4 – RS: Selección de Registro.
0 lógico: Registro de comandos (escritura),
1 lógico: Registro de datos (escritura, lectura)
– Pin 5 – R/W:
0 lógico: Escritura del LCD.
1 Lógico: Lectura del LCD.
– Pin 6 – Enable: El famoso Enable de casi todos los componentes de la
electrónica digital. Un 1 lógico señala el inicio de escritura o lectura del
LCD, un 0 lógico, desactiva todas las funciones.
– Pin 7-10 – D0/D3: Pines
correspondientes al bus de datos.
D0 corresponde al bit menos
significativo.
Estos pines no se utilizan si
realizamos operaciones sobre el
LCD de 4 bits.
– Pin 11-14 – D4/D7: Pines
correspondientes al bus de datos.
D7 corresponde al bit más
significativo y puede utilizarse
como “Busy Flag”,
si leemos sobre este pin, un 1
lógico nos indicará que el LCD se
encuentra ocupado,
no permitiendonos realizar ninguna operación hasta que se deshabilite.
En la tabla no aparecen, ya que no todos los displays disponen de los
pines 15 y 16, yo he modificado la imagen para añadirlos, y son
simplemente:
– Pin 15 – Ánodo de la retroiluminación : R + 5V.
– Pin 16 – Cátodo de la retroiluminación: GND.
 

Cables de conexión macho-macho

La función del cable macho-macho es con frecuencia usado en el tablero


protoboard haciendo posible la conexión de dos elementos ingresados en
dicho tablero.

Se conoce como macho-macho debido al fragmento que sobresale de los


extremos del cable.

Resistencias

Se denomina resistencia o resistor al componente electrónico diseñado


para introducir una resistencia eléctrica determinada entre dos puntos
de un circuito eléctrico.

Led

El acrónimo inglés LED (Light Emitting Diode) que en castellano significa


literalmente “Diodo Emisor de Luz’’ es un elemento capaz de recibir una
corriente eléctrica moderada y emitir una radiación electromagnética
transformada en luz. Coloquialmente es conocido como Diodo Luminoso

El funcionamiento de las luces LED viene dado por el Principio


fotoeléctrico ideado por Albert Einstein. Este principio se basa en la
existencia de materiales que al someterlos a una corriente eléctrica
pueden producir luz. En el caso de los LED, la corriente eléctrica genera
luz al pasar por los diodos. Este proceso también recibe el nombre de
electroluminiscencia.  

Para que este proceso funcione es necesario que el LED esté polarizado
directamente. Es decir, tiene que existir una corriente circular de un
término positivo (ánodo) a uno negativo (cátodo). Es aquí cuando se
produce el llamado “fotón” al desprenderse los electrones y se produce
luz.

El proceso de
electroluminiscencia
es mucho más
eficiente que el
proceso de
incandescencia de una
bombilla con
filamento ya que la
energía se destina
directamente a generar luz y no a generar calor.

Software

El IDE De Arduino

El software de código abierto Arduino (IDE) facilita escribir código y


cargarlo en la pizarra. Se ejecuta en Windows, Mac OS X y Linux. El
entorno está escrito en Java y se basa en Procesamiento y otro software
de código abierto.

Este software se puede utilizar con cualquier placa Arduino.

Proteus

Es un software de simulación de circuitos electrónicos, es muy útil para


poder analizar los circuitos que armaremos para probar su
funcionamiento teóricamente.

La página tinkercad

Es una aplicación en línea de diseño e impresión en 3D para todos creado


por la empresa AUTODESK que es usada por diseñadores profesores y
alumnado en general en el caso de la materia nos ayudara con el diseño de
los circuitos que se harán en clase

Nomenclatura

Referencia idiomática

El lenguaje de programación Arduino se puede dividir en tres partes


principales: estructura, valores (variables y constantes) y funciones.

FUNCIONES

Para controlar la placa Arduino y realizar cálculo

E / S digital

digitalRead () 
digitalWrite () 
pinMode () 

E / S analógica

Familia de fuentes analogRead () 


analogReference () 
analogWrite () 

Zero, Due y MKR

analogReadResolution () 
analogWriteResolution () 

I / O avanzado

noTone () 
pulseIn () 
pulseInLong () 
shiftIn () 
shiftOut () 
tone () 
Hora

delay () 
delayMicroseconds () 
micros () 
milis () 

Mates

abs () 
restringir () 
mapa () 
max () 
min () 

pow () 
sq () 
sqrt () 

Trigonometría

cos () 
sin () 
tan () 

Caracteres

isAlpha () 
isAlphaNumeric () 
isAscii () 
isControl () 
isDigit () 
isGraph () 
isHexadecimalDigit () 
isLowerCase () 
isPrintable () 
isPunct () 
isSpace () 
isUpperCase () 
isWhitespace () 

Números al azar

random () 
randomSeed () 

Bits y Bytes

bit () 
bitClear () 
bitRead () 
bitSet () 
bitWrite () 
highByte () 
lowByte () 

Interrupciones externas

attachInterrupt () 
detachInterrupt () 

Interrupciones

interrumpe () 
noInterrupts () 

Comunicación

Serial 
Stream 

USB
Ratón del teclado 

VARIABLES

Arduino tipos de datos y constantes.

Constantes

Constantes de punto flotante Constantes 


enteras 
ALTA | ENTRADA BAJA | SALIDA | INPUT_PULLUP LED_BUILTINve
rdadero | falso

Conversión

byte () 
char () 
float () 
int () 
long () 
word () 

Tipos de datos

String () 
array 
bool 
booleano 
byte 
char 
doble 
float 
int 
long 
short 
size_t 
string 
unsigned char 
unsigned int 
unsigned long 
palabra vacía 
Ámbito variable y calificadores

const 
alcance 
estático 
volátil 

Utilidades

PROGMEM 
sizeof () 

ESTRUCTURA

Los elementos del código Arduino (C ++).

Bosquejo

Configuración de bucle 
() 

Estructura de control

break 
continue 
do ... mientras 
que 
para 
goto 
si 
regresa 
cambiar ... caso 
mientras 
Sintaxis adicional

#define (define) 
#include (include) 
/ * * / (comentario de bloque) 
// (comentario de una sola línea) 
; (punto y coma) 
{} (llaves) 

Operadores aritméticos

% (resto) 
* (multiplicación) 
+ (adición) 
- (resta) 
/ (división) 
= (operador de asignación) 

Operadores de comparación

! = (no igual a) 


< (menos que) 
<= (menor o igual que) 
== (igual a) 
> (mayor que) 
> = (mayor o igual que) 

Operadores booleanos

! (no lógico) 
&& (lógico y) 
|| (lógico o) 

Operadores de acceso de puntero

& (operador de referencia) 
* (operador de referencia) 

Operadores de Bitwise
& (bitwise y) 
<< (bitshift izquierda) 
>> (Bitshift derecha) 
^ (Xwise bitwise) 
| (a nivel de bit o) 
~ (en modo de bit no) 

Operadores de compuestos

% = (resto compuesto) 
& = (compuesto bitwise y) 
* = (multiplicación compuesta) 
++ (incremento) 
+ = (adición de compuesto) 
- (decremento) 
- = (resta compuesta) 
/ = (división compuesta) 
^ = (compuesto bitwise xor) 
| = (compuesto en modo de bits o) 

 Herramientas
1 Arduino UNO
2 Resistencias
3 Diodos leds
4 Protoboard
5 Cables de conexión
6 Fuente de alimentación

FUNDAMENTO TEORICO

ARDUINO. DEFINICIÓN

Arduino es una plataforma de computación física (son sistemas digitales


conectados a sensores y actuadores, que permiten construir sistemas
que perciben la realidad y responden con acciones físicas), basada en una
simple placa microcontrolador de entrada/salida y desarrollada sobre
una biblioteca que simplifica la escritura de la programación en C/C++.
Arduino puede ser usado para desarrollar artefactos interactivos stand-
alone o conectados al ordenador a través de Adobe Flash, Procesing,
Max/MSP, Pure Data o SuperCollider.

Arduino Uno es una placa de microcontrolador basada en el ATmega328P


( hoja de datos ). Tiene 14 pines de entrada / salida digital (de los cuales
6 se pueden usar como salidas PWM), 6 entradas analógicas, un cristal de
cuarzo de 16 MHz, una conexión USB, un conector de alimentación, un
encabezado ICSP y un botón de reinicio. Contiene todo lo necesario para
soportar el microcontrolador; simplemente conéctelo a una computadora
con un cable USB o enciéndalo con un adaptador de CA a CC o una batería
para comenzar. Puede jugar con su UNO sin preocuparse demasiado por
hacer algo mal, en el peor de los casos puede reemplazar el Chip por unos
pocos dólares y empezar de nuevo.

"Uno" significa uno en italiano y se eligió para marcar el lanzamiento de


Arduino Software (IDE) 1.0. La placa Uno y la versión 1.0 de Arduino
Software (IDE) fueron las versiones de referencia de Arduino, ahora
evolucionaron a versiones más recientes. La tarjeta Uno es la primera de
una serie de tarjetas Arduino USB y el modelo de referencia para la
plataforma Arduino; Para obtener una lista extensa de tableros actuales,
pasados o desactualizados, consulte el índice de tableros Arduino.

Es la placa estándar y posiblemente la más conocida y documentada. Salió


a la luz en septiembre de 2010 sustituyendo su predecesor Duemilanove
con varias mejoras de hardware que consisten básicamente en el uso de
un USB HID propio en lugar de utilizar un conversor FTDI para la
conexión USB. Es 100% compatible con los modelos Duemilanove y
Diecimila. Viene con un Atmega328 con 32Kbytes de ROM para el
programa.

Aspectos más destacados de Arduino UNO.


 Alimentación: vía USB, batería o adaptador AC/DC a 5V,
seleccionado automáticamente. Arduino puede trabajar entre 6 y
20V, pero es recomendado trabajar entre 7 y 12V por las
características del regulador de tensión.

 Puerto Serie en los pines 0 y 1.

 Interrupciones externas en los pines 2 y 3.

 Built-in LED en el pin 13.

 Bus TWI o I2C en los pines A4 y A5 etiquetados como SDA y SCL

 Arduino Uno dispone de un fusible autoreseteable que protege el


puerto USB de nuestro ordenador de cortocircuitos y sobre
corrientes. Si se detectan más de 500mA salta la protección.

LA FINALIDAD DE ARDUINO

La principal finalidad del Arduino en un sistema es facilitar el


prototipado, implementación o emulación del control de sistemas
interactivos, a nivel doméstico, comercial o móvil, de la misma forma que
el CLP controla sistemas de funcionamiento industriales. Con este es
posible enviar o recibir informaciones de básicamente cualquier sistema
electrónico, como identificar la aproximación de una persona y variar la
intensidad de la luz del ambiente a su llegada. O abrir las ventanas de
una oficina según la intensidad de la luz del sol y la temperatura
ambiente.

Los campos de actuación para el control de sistemas son inmensos,


pudiendo tener aplicaciones en el área de impresión 3D, robótica,
ingeniería de transportes, ingeniería agrónoma y musical.

Tarea#1

Introducir un numero del 1 al 100 y aparecer su valor en binario con los


leds y decimal en lcd
#include<LiquidCrystal.h>

LiquidCrystal lcd(2,3,4,5,6,7);

int dato;

void setup() {

// put your setup code here, to run once:

lcd.begin(16,2);

Serial.begin(9600);

pinMode(A0,OUTPUT);

pinMode(A1,OUTPUT);

pinMode(A2,OUTPUT);

pinMode(A3,OUTPUT);

Serial.print("digite un numero:");

lcd.setCursor(0,0);

lcd.print("digite un numero:");

void loop() {

// put your main code here, to run repeatedly:

while (Serial.available( )==0){

dato=Serial.read();}

dato=Serial.parseInt();

Serial.println(dato);

lcd.setCursor(0, 1);
lcd.print(dato);

digitalWrite(A0,bitRead(dato,0));

digitalWrite(A1,bitRead(dato,1));

digitalWrite(A2,bitRead(dato,2));

digitalWrite(A3,bitRead(dato,3));

}
Tarea #2
hacer el siguiente ejercicio

#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin

// with the arduino pin number it is connected to

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

int m=0;

int x;

int y;

int n=0;

int i=0;

int dato=0;

void setup(){

Serial.begin(9600);

lcd.begin(16, 2);

pinMode(13, OUTPUT);

pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);

pinMode(A2,OUTPUT);

pinMode(A3,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

Serial.print("m= ");

lcd.setCursor(0, 0);

lcd.print("m=");

void loop(){

//si existe datos disponibles en el bus serial

if (Serial.available()){

//leemos el dato enviado

dato=Serial.read();

if(dato>='0' && dato<='9') {

if(i==0){

m=dato;

m=m-48;

Serial.println(m);
lcd.setCursor(9, 0);

lcd.print(m);

Serial.print("n= ");

lcd.setCursor(0, 1);

lcd.print("n=");

if(i==1){

n=dato;

n=n-48;

Serial.println(n);

lcd.setCursor(9, 1);

lcd.print(n);

Serial.print("DIGITE LA OPCION:");

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("DIGITE LA OPCION:");

i++;

}
if(dato=='a') { //vector a

x=n+1;

digitalWrite(A3,bitRead(x,0));

digitalWrite(A2,bitRead(x,1));

digitalWrite(A1,bitRead(x,2));

digitalWrite(A0,bitRead(x,3));

y=0;

digitalWrite(9,bitRead(y,0));

digitalWrite(8,bitRead(y,1));

digitalWrite(7,bitRead(y,2));

digitalWrite(6,bitRead(y,3));

Serial.println((String)"v1="+x+","+y);

lcd.setCursor(0, 1);

lcd.print((String)"v1="+x+","+y);

if(dato=='b') { //vector b

x=m-1;

digitalWrite(A3,bitRead(x,0));

digitalWrite(A2,bitRead(x,1));

digitalWrite(A1,bitRead(x,2));

digitalWrite(A0,bitRead(x,3));

y=1;
digitalWrite(9,bitRead(y,0));

digitalWrite(8,bitRead(y,1));

digitalWrite(7,bitRead(y,2));

digitalWrite(6,bitRead(y,3));

Serial.println((String)"v1="+x+","+y);

lcd.setCursor(0, 1);

lcd.print((String)"v1="+x+","+y);

if(dato=='c') { //vector c

x=m-1;

digitalWrite(A3,bitRead(x,0));

digitalWrite(A2,bitRead(x,1));

digitalWrite(A1,bitRead(x,2));

digitalWrite(A0,bitRead(x,3));

y=n-1;

digitalWrite(9,bitRead(y,0));

digitalWrite(8,bitRead(y,1));

digitalWrite(7,bitRead(y,2));

digitalWrite(6,bitRead(y,3));

Serial.println((String)"v1="+x+","+y);

lcd.setCursor(0, 1);

lcd.print((String)"v1="+x+","+y);

}
}

Tarea#3

Realizar un contador del 1 al 15, en los leds debe contar en binario


y en su lcd en decimal

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Direccion de modulo i2c
111 por defecto
int tiempo=300; //variable tiempo igual a 300
void setup()
{
lcd.init(); // inicializa el lcd
lcd.backlight(); // Enciende la Luz del Fondo del LCD

DDRD= B11110000; // coloca los pines 4, 5, 6 y 7 como salida


}
void loop(){
PORTD= B00000000;
// imprime 0 en binario por el Puerto D
lcd.setCursor(0,0);
//selecciona posición 0,0 en el LCD
lcd.print("0");
//imprime cero en el LCD
delay(tiempo);
//retardo para mostrar
PORTD= B00010000;
lcd.setCursor(0,0);
lcd.print("1");
delay(tiempo);
PORTD= B00100000;
lcd.setCursor(0,0);
lcd.print("2");
delay(tiempo);
PORTD= B00110000;
lcd.setCursor(0,0);
lcd.print("3");
delay(tiempo);
PORTD= B01000000;
lcd.setCursor(0,0);
lcd.print("4");
delay(tiempo);
PORTD= B01010000;
lcd.setCursor(0,0);
lcd.print("5");
delay(tiempo);
PORTD= B01100000;
lcd.setCursor(0,0);
lcd.print("6");
delay(tiempo);
PORTD= B01110000;
lcd.setCursor(0,0);
lcd.print("7");
delay(tiempo);
PORTD= B10000000;
lcd.setCursor(0,0);
lcd.print("8");
delay(tiempo);
PORTD= B10000000;
lcd.setCursor(0,0);
lcd.print("9");
delay(tiempo);
PORTD= B10100000;
lcd.setCursor(0,0);
lcd.print("10");
delay(tiempo);
PORTD= B10110000;
lcd.setCursor(0,0);
lcd.print("11");
delay(tiempo);
PORTD= B11000000;
lcd.setCursor(0,0);
lcd.print("12");
delay(tiempo);
PORTD= B11010000;
lcd.setCursor(0,0);
lcd.print("13");
delay(tiempo);
PORTD= B11100000;
lcd.setCursor(0,0);
lcd.print("14");
delay(tiempo);
PORTD= B11110000;
lcd.setCursor(0,0);
lcd.print("15");
delay(tiempo);
}
Conclusiones

Como conclusiones podemos sacar los siguientes puntos

 Usar las conexiones con cuidado puesto que cada puerto


funciona diferente
 Tener cuidado con el armado de los circuitos puesto que se
puede utilizar mal las entradas o la conexión.
 Tener en cuentas los puertos de entradas y salidas de cada
componente ya que si lo conectamos mal todo el esquema ya no
funciona
 Verificar, realizar con cuidado el programado del código con
tranquilidad y ver bien cada código que se va a utilizar

También podría gustarte