Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica
Y Eléctrica (Unidad Culhuacán)
Ingeniería en Computación
Arquitectura de Computadoras
“Reporte Practica 5”
Alumnos:
Camacho Suarez Agustín
Del Ángel Ruiz Jesús Roberto
Grupo:
6CM15
Profesor:
M. en C. Jesús García Ruiz
Fecha de Entrega: 02 de mayo de 2018
• Programa 2 (LED 2):
- Enunciado:
Dos LEDs conectados a 9 y 3 (terminales digitales, con PWM), parpadearán de
manera alternada
- Diseño Software:
INICIAR PROGRAMA LED ROJO LED VERDE
ACTIVAR SALIDA ACTIVAR SALIDA
DEFINIR VARIABLES PARA (PIN9=HIGH) (PIN3=HIGH)
LEDs ROJO Y VERDE
DELAY (1000 ms) DELAY (500 ms)
CONFIGURAR PIN3 Y PIN9
COMO SALIDA
DESACTIVAR SALIDA DESACTIVAR SALIDA
(PIN9=LOW) (PIN3=LOW)
LED ROJO
DELAY (500 ms) DELAY (1000 ms)
LED VERDE
- Construcción del programa:
int ledrojo=9;//Pin digital 9
int ledverde=3;//Pin digital 3
void setup()
{
pinMode(ledrojo,OUTPUT);
pinMode(ledverde,OUTPUT);
}
void loop()
{
digitalWrite(ledrojo,HIGH);
delay(1000);
digitalWrite(ledrojo,LOW);
delay(500);
digitalWrite(ledverde,HIGH);
delay(500);
digitalWrite(ledverde,LOW);
delay(1000);
}
- Resultados:
• Programa 3 (LED 3):
- Enunciado:
Se conecta un potenciómetro (el centro a la terminal A0 y los otros dos a Vcc y GND
respectivamente), se conecta un LED en pin 6 PWM
- Diseño Software:
INICIAR PROGRAMA 1
MAPEA RANGO 0 – 700 ,
DEFINIR VARIABLES PARA
HACIA 0 – 255
FOTOVAL, LUZ Y X
CONFIGURAR A0 COMO
ENTRADA ANALÓGICA X= 255 – LUZ;
CONFIGURAR PIN6 COMO
SALIDA DIGITAL
ABRIR PUERTO SERIE
RESTA ANTERIOR POR
LEE POTENCIOMETRO POR DIGITAL 6 (PWM)
CANAL A0
RECALCULA FOTOVAL DELAY (100 ms)
DELIMITANDOLO ENTRE0 -
700
IMPRIME EN PUERTO
1 SERIAL
- Construcción del programa:
int fotoval=0;
int luz;
int x;
void setup()
{
pinMode(A0,INPUT);//entrada analogica
pinMode(6,OUTPUT);//Salida digital pero PWM
Serial.begin(9600);
}
void loop()
{
fotoval=analogRead(0);//se lee el potenciometro por el canal A0
luz=constrain(fotoval,0,700);//recalcula el valor de fotoval delimitandolos solo
entre 0 y 700
luz=map(luz,0,700,0,255);//mapea el rango de 0 a 700, hacia 0 a 255(puesel
rango de 8 bits de analogico)
x=255-luz;
analogWrite(6,x);//Saca la resta anterior por la digital 6(PWM)
delay(100);
Serial.println(x);//Imprime en puerto serial
}
- Resultados:
Lecturas mostradas en el monitor serial cuando se le aumenta y disminuye al
potenciómetro.
• Programa 5 (LED 5):
- Enunciado:
Se conecta el LED RGB a las terminales digitales 3, 5 y 6 en PWM, y con vectores
se obtienen distintos colores.
- Diseño Software:
INICIAR PROGRAMA
DEFINIR VECTORES PARA
LEDs ROJO, VERDE Y AZUL
ACTIVAR SALIDA
(PIN3= rojo[i])
ACTIVAR SALIDA
(PIN5= verde[i])
ACTIVAR SALIDA
(PIN6= azul[i])
DELAY (1000 ms)
- Construcción del programa:
int i;
int rojo[]={2,4,8,16,32,64,128,255};
int verde[]={2,4,8,16,32,64,128,255};
int azul[]={2,4,8,16,32,64,128,255};
void setup()
{}
void loop()
{
for(i=0;i=6;i++)
{
analogWrite(3,rojo[i]);
analogWrite(5,verde[i]);
analogWrite(6,azul[i]);
delay(1000);
}
}
- Resultados:
• Programa 7 (Serial 2):
- Enunciado:
Se lee el valor de un potenciómetro por la terminal analógica 3 (A3) y se manda a
la terminal serie
- Diseño Software:
INICIAR PROGRAMA
DEFINIR VARIABLE PARA PIN3
DEFINIR VARIABLE EN LA QUE
SE ALMACENA LO DEL
CONVERSOR
ABRIR PUERTO SERIE
LECTURA DE TENSIÓN DE PIN
ANALÓGICO
IMPRIME VALOR LEÍDO EN
PUERTO SERIAL
- Construcción del programa:
int analogPin =3;/*El pin analogico 3 conectado al dial de un
potenciometro(termina central de potenciometro, los terminales exteriores del
potenciometro
conectados a +5v y tierra respectivamente)*/
int val=0; /*Declaracion de la variable en la que se almacenara el valor leido
por el conversor*/
void setup()
{
Serial.begin(9600);//inicializacion del modulo serial
}
void loop()
{
val=analogRead(analogPin);//lee el valor de tension del pin analogico
Serial.println(val);//envia el valor leido via serial
}
- Resultados:
Lecturas mostradas en el monitor serial cuando se le aumenta y disminuye al
potenciómetro.
• Programa 10 (Mensaje en Display avanzado):
- Enunciado:
Imprimir en LCD mensaje “ola k ases programando Arduino??????”
- Diseño Software:
INICIAR PROGRAMA
LiquidCrystal
lcd(12,11,5,4,3,2);
Lcd.begin(16,2);
Lcd.print(“ola k ases
Programando arduino
??????”);
Lcd.setCursor(0,1);
Int posContador=0
Lcd.scrollDsiplayRight();
SI posContador<36 ? NO Int posContador=0
Delay(300 ms);
posContador++ posContador<40 ? NO Int posContador=0
SI
Lcd.scrollDsiplayRight();
posContador<16 ? NO Lcd.print(millis()/1000);
Delay(250 ms);
SI
Lcd.scrollDsiplayRight();
posContador++
Delay(300 ms);
posContador++
- Construcción del programa:
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup()
{
lcd.begin(16,2);
lcd.print("ola k ases Programando arduino??????");
}
void loop()
{
lcd.setCursor(0,1);
for(int posContador=0;posContador<36;posContador++)
{
lcd.scrollDisplayRight();//desplazar la pantalla a derecha
delay(300);
}
for(int posContador=0;posContador<40;posContador++)
{
lcd.scrollDisplayRight();//desplazar la pantalla a derecha
delay(250);
}
for(int posContador=0;posContador<16;posContador++)
{
lcd.scrollDisplayRight();//desplazar la pantalla a derecha
delay(300);
}
lcd.print(millis()/1000);
}
- Resultados:
• Programa 11 (Motor):
- Enunciado:
Mueve un motor en un sentido y en el otro, al hacer cambio de polaridad, por la
terminal digital 9.
- Diseño Software:
INICIAR PROGRAMA GIRO
digitalWrite(motorPin,HIGH
);
Delay(onTime);
Int motorPin=9;
digitalWrite(motorPin,LOW)
;
Delay(offTime);
pinMode
(motorPin,OUTPUT);
Int onTime=400;
Int offTime=400;
GIRO
- Construcción del programa:
int motorPin=9;
void setup()
{
pinMode(motorPin,OUTPUT);
}
void loop()
{
int onTime=400 ;
int offTime=400;
digitalWrite(motorPin,HIGH);
delay(onTime);
digitalWrite(motorPin,LOW);
delay(offTime);
}
- Resultados:
• Programa 12 (Velocidad de un motor):
- Enunciado:
Varia la velocidad de un motor (conectado a 9), mediante un potenciómetro
conectado a A0.
- Diseño Software:
INICIAR PROGRAMA
Int motorPin=9;
Int potPin=0;
Int potValue;
pinMode
(motorPin,OUTPUT);
potValue=analogRead(potPi
n)/4;
analogWrite(motorPin,potV
alue);
- Construcción del programa:
int motorPin=9;
int potPin=0;
int potValue;
void setup() {
pinMode(motorPin,OUTPUT);
void loop() {
potValue=analogRead(potPin)/4; //se manda el valor de A0 a la variable potValue
analogWrite(motorPin,potValue); //se manda el valor anterior (potencimetro en A0)
al motor (PWM9)
}
- Resultados:
• Programa 14 (Teclado 4x3):
- Enunciado:
Si se pulsa una tecla se imprime en el serial
- Diseño Software:
INICIAR PROGRAMA 1
Const byte ROW=4;
Serial.begin(9600);
Const byte COLS=3;
Char keys[ROWS][COLS]={
{‘1’,’2',’3'},
{‘4’,’5',’6'}, Char key=keypad.getKey();
{‘7’,’8',’9'},
{‘*’,’0',’#’}
};
NO
Byte
Key!=NO_KEY ?
rowPins[ROWS]={5,4,3,2};
SI
Byte colPins[COLS]={8,7,6};
Serial.println(key);
Keypad
keypad=Keypad(makeKeym
ap(keys),rowPins,colPins,RO
WS,COLS);
1
- Construcción del programa:
#include<Keypad.h>
//creamos una constante para definir que nuestro teclado tiene 4 filas
const byte ROWS=4;
//creamos una constante para definir que nuestro teclado tiene 3 columnas
const byte COLS=3;
//creamos una matriz con los caracteres del teclado
char keys[ROWS][COLS]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
//Indicamos a que pines de Arduino están conectadas las filas del teclado
byte rowPins[ROWS]={5,4,3,2};
//Indicamos a que pines de Arduino están conectadas las columnas
byte colPins[COLS]={8,7,6};
//Creamos un objeto de la librería Keypad para usar sus funciones
Keypad keypad=Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);
void setup() {
Serial.begin(9600);
}
void loop() {
// Cuando se pulse una tecla se guardará en una variable llamada key
char key=keypad.getKey();
//Si se ha pulsado una tecla, se envía por el serial
if(key!=NO_KEY)
{
Serial.println(key);
}
}
- Resultados:
- Conclusiones:
Arduino es una plataforma de código abierto que permite el poder simplificar
el proceso de trabajar con micro controladores.
Con lo demostrado en los anteriores circuitos se dice que la configuración e
instalación son pasos muy fáciles para poder desarrollar sobre el Arduino.
La programación es similar a los lenguajes de alto nivel conocidos en la
actualidad, por lo que el aprendizaje de la sintaxis no es complejo.