Documente Academic
Documente Profesional
Documente Cultură
REPORTE DE PRCTICAS
PROGRAMACIN DE MICROCONTROLADORES
ROMERO GUZMAN RUBI ESMERALDA
MATRICULA: 2014030656
MARTHA GUADALUPE RIOS ALCARAZ
MATRICULA: 2014030662
PROFESOR: CESAR CARDENAS
14-7-2016
INTRODUCCIN
Primero
que
todo
comenzaremos
definiendo
que
son
los
microcontroladores: Los microcontroladores (abreviado C, UC o MCU) son
circuitos integrados que son capaces de ejecutar rdenes que fueron grabadas
en su memoria. Su composicin est dada por varios bloques funcionales, los
cuales cumplen una tarea especfica, son dispositivos que operan uno o ms
procesos, por lo general los microcontroladores estn basados en la arquitectura
de Harvard, la cual consiste en dispositivos de almacenamiento separados
(memoria
de
programa
y
memoria
de
datos).
El termino microcontrolador est dado por dos palabras que son MicroControlador las cuales tienen por significado pequeo (en tamao) y
maniobrar o controlar (funcin principal) procesos los cuales son definidos
mediante la programacin. Un micro controlador est constituido en su interior
por las tres principales unidades funcionales de una computadora, las cuales son:
unidad central de procesamiento, memoria y perifricos de entrada y salida .En
fin un microcontrolador es un sistema completo, con unas prestaciones limitadas
que no pueden modificarse y que puede llevar a cabo las tareas para las que ha
sido programado de forma autnoma.
DESARROLLO
Prctica #1 Rutinas de Leds
Materiales:
1 Placa de arduino
1 Protoboard
8 Leds (cualquier color)
8 resistencias de 220
Cable Utp
1. El programa consiste en realizar 4 rutinas diferentes, las cuales consisten en (1)
Leds Encendidos (0) Leds apagado:
1. Las Vegas
1 0 0 0 0 0 0 1
0 1 0 0 0 0 1 0
0 0 1 0 0 1 0 0
0 0 0 1 1 0 0 0
0 0 1 0 0 1 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
2. Navidad: (Pares ON, Impares OFF)
0 1 0 1 0 1 0 1
3. Intermitentes: (8 bits ON, 8 bits OFF)
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
4. Vaivn:
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
2. Como sabemos los leds tiene un nodo (+) y un ctodo (-), de un lado
conectaremos todos los Ctodos a las resistencias de 220 y estas a GND y de los
nodos conectaremos a los pines del 2 al 9, las resistencias se colocan con el fin
que no quemar los leds.
3. Conectamos los pines 10, 11, 12 y 22 que sern nuestras entradas (INPUT) en el
arduino y en el protoboard lo conectaremos en positivo (HIGH) y negativo (LOW).
El voltaje ser de 5.5 V y mandaremos un cable a tierra (GND).
4. Cargar el siguiente cdigo:
void setup() { //Aqu pones los bits de configuracin
// put your setup code here, to run once:
pinMode (2,OUTPUT);
pinMode (3,OUTPUT);
pinMode (4,OUTPUT);
pinMode (5,OUTPUT);
SALIDAS: activa las resistencias
pinMode (6,OUTPUT);
pinMode (7,OUTPUT);
externas.
pinMode (8,OUTPUT);
pinMode (9,OUTPUT);
pinMode (10,INPUT);
ENTRADAS: activa las resistencias
pinMode (11,INPUT);
pinMode (12,INPUT);
internas.
pinMode (22,INPUT);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
RESISTENCIAS PULL-DOWN
digitalWrite(12,LOW);
digitalWrite(22,LOW);
}
void loop() //Aqui vat u cdigo.
// put your main code here, to run repeatedly:
{ if ( digitalRead (10)== LOW && digitalRead (11)== LOW && digitalRead (12)==
LOW && digitalRead (22)== LOW ) // Con el if se va indicar la condicin para que
se lleve acabo la rutina
{
digitalWrite (2,HIGH); // Da valor al pin y lo pone a 1 (pull-up)
digitalWrite (9,HIGH);
delay(500); //Temporizador: Es el tiempo en mili-segundos que queremos que
espere
digitalWrite (2,LOW);
digitalWrite (9,LOW);
delay(500);
digitalWrite (3,HIGH);
digitalWrite (8,HIGH);
delay(500);
digitalWrite (3,LOW);
digitalWrite (8,LOW);
delay(500);
digitalWrite (4,HIGH);
digitalWrite (7,HIGH);
delay(500);
digitalWrite (4,LOW);
digitalWrite (7,LOW);
delay(500);
digitalWrite (5,HIGH);
digitalWrite (6,HIGH);
delay(500);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
delay(500);
}
if ( digitalRead (10)== HIGH && digitalRead (11)== LOW && digitalRead (12)==
HIGH && digitalRead (22)== LOW )
{
digitalWrite (2,HIGH);
digitalWrite (4,HIGH);
digitalWrite (6,HIGH);
digitalWrite (8,HIGH);
delay(500);
digitalWrite (2,LOW);
digitalWrite (4,LOW);
digitalWrite (6,LOW);
digitalWrite (8,LOW);
delay(500);
digitalWrite (3,HIGH);
digitalWrite (5,HIGH);
digitalWrite (7,HIGH);
digitalWrite (9,HIGH);
delay(500);
digitalWrite (3,LOW);
digitalWrite (5,LOW);
digitalWrite (7,LOW);
digitalWrite (9,LOW);
delay(500);
} if ( digitalRead (10)== LOW && digitalRead (11)== HIGH && digitalRead (12)==
LOW && digitalRead (22)== HIGH ){
digitalWrite (2,HIGH);
digitalWrite (3,HIGH);
digitalWrite (4,HIGH);
digitalWrite (5,HIGH);
digitalWrite (6,HIGH);
digitalWrite (7,HIGH);
digitalWrite (8,HIGH);
digitalWrite (9,HIGH);
delay(500);
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
digitalWrite (5,LOW);
digitalWrite (6,LOW);
digitalWrite (7,LOW);
digitalWrite (8,LOW);
digitalWrite (9,LOW);
delay(500);
} if ( digitalRead (10)== HIGH && digitalRead (11)== HIGH && digitalRead (12)==
HIGH && digitalRead (22)== HIGH ){
digitalWrite (2,HIGH);
delay(500);
digitalWrite (2,LOW);
delay(500);
digitalWrite (3,HIGH);
delay(500);
digitalWrite (3,LOW);
delay(500);
digitalWrite (4,HIGH);
delay(500);
digitalWrite (4,LOW);
delay(500);
digitalWrite (5,HIGH);
delay(500);
digitalWrite (5,LOW);
delay(500);
digitalWrite (6,HIGH);
delay(500);
digitalWrite (6,LOW);
delay(500);
digitalWrite (7,HIGH);
delay(500);
digitalWrite (7,LOW);
delay(500);
digitalWrite (8,HIGH);
delay(500);
digitalWrite (8,LOW);
delay(500);
digitalWrite (9,HIGH);
delay(500);
digitalWrite (9,LOW);
delay(500);
digitalWrite (9,HIGH);
delay(500);
digitalWrite (9,LOW);
delay(500);
digitalWrite (8,HIGH);
delay(500);
digitalWrite (8,LOW);
delay(500);
digitalWrite (7,HIGH);
delay(500);
digitalWrite (7,LOW);
delay(500);
digitalWrite (6,HIGH);
delay(500);
digitalWrite (6,LOW);
delay(500);
digitalWrite (5,HIGH);
delay(500);
digitalWrite (5,LOW);
delay(500);
digitalWrite (4,HIGH);
delay(500);
digitalWrite (4,LOW);
delay(500);
digitalWrite (3,HIGH);
delay(500);
digitalWrite (3,LOW);
delay(500);
digitalWrite (2,HIGH);
delay(500);
digitalWrite (2,LOW);
delay(500);
}
}
Practica #2 Voltmetro digital de 0-15 V
Materiales:
1 Potencimetro
1 Fuente de poder de 15 V
1 Protoboard
3 Resistencias
Cables UTP
1 Arduino
Materiales:
#define PwmE 3
#define LedRojo 4
#define LedAmarillo 5
#define LedVerde 6
#define Lecturasensor 7
void setup() {
// put your setup code here, to run once:
pinMode (PwmC,OUTPUT);
pinMode (PwmE, OUTPUT);
pinMode (LedRojo,OUTPUT);
pinMode (LedAmarillo,OUTPUT);
pinMode (LedVerde,OUTPUT);
pinMode (Lecturasensor,INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
analogReference(DEFAULT); // analogReference Configura el voltaje de
referencia usado por la entrada anal0gica.DEFAULT: Es el valor de referencia
analgico que viene por defecto que de 5 voltios en placas
Tsensor=analogRead (Lecturasensor); //Frmula que se utiliz para sacar la
temperatura del sensor
Vsensor=Tsensor*ResRef; //Formula que se utiliz para sacar el voltaje del sensor
Treal=Vsensor/ResSensor; //Formula que se utiliz para sacar la temperatura real
Serial.println(Treal);//Imprime los datos en el monitor serial
delay(1000);
if ( (Treal < Tminima) || (Treal > Tmaxima) )
{
digitalWrite (LedRojo, HIGH);
digitalWrite (LedAmarillo, LOW);
digitalWrite (LedVerde, LOW);
}
else
{
if (((Treal >= Tminima) && (Treal <= T20)) || ((Treal >= T30) && (Treal <= Tmaxima
)))
{
digitalWrite (LedRojo, LOW);
digitalWrite (LedAmarillo, HIGH);
digitalWrite (LedVerde, LOW);
}
else
{
if ( (Treal >= T21) || (Treal <= T29) )
{
digitalWrite (LedRojo, LOW);
digitalWrite (LedAmarillo, LOW);
analogWrite(PwmC,((PorcCal*255))/100);
analogWrite(PwmE,((PorEnf*255))/100);
}
Practica #4 SEMAFORO CON CRUCE PEATONAL
Materiales:
1 Protoboard
4 Resistencias
Cables UTP
1 Arduino
3 leds
1 botton
Esta prctica consiste en hacer un semforo con paso peatonal y que tenga
interrupciones, el cual primero se hara un ciclo y luego se detendr como el
semforo, parte por parte.
int ledverde = 3;
int ledamarillo = 4;
int ledrojo = 5;
int ledpeatonal = 6;
int ledflecha = 7;
volatile int interruptor=2 ;
volatile int state = LOW;
void setup() {
pinMode(ledverde,OUTPUT);
pinMode(ledamarillo,OUTPUT);
pinMode(ledrojo,OUTPUT);
pinMode(ledpeatonal,OUTPUT);
pinMode(ledflecha,OUTPUT);
pinMode (interruptor, LOW);
digitalWrite(ledverde,LOW);
digitalWrite(ledamarillo,LOW);
digitalWrite(ledrojo,LOW);
digitalWrite(ledpeatonal,LOW);
digitalWrite(ledflecha,LOW);
digitalWrite(interruptor,LOW);
attachInterrupt(0, peaton, HIGH);
}
void loop() {
digitalWrite(ledverde,HIGH);
delay(5000);
digitalWrite(ledverde,LOW);
delay(500);
digitalWrite(ledverde,HIGH);
delay(500);
digitalWrite(ledverde,LOW);
delay(500);
digitalWrite(ledverde,HIGH);
delay(500);
digitalWrite(ledverde,LOW);
delay(500);
digitalWrite(ledverde,HIGH);
delay(500);
digitalWrite(ledverde,LOW);
delay(500);
digitalWrite(ledamarillo,HIGH);
delay(2500);
digitalWrite(ledamarillo,LOW);
delay(500);
digitalWrite(ledrojo,HIGH);
delay(5000);
digitalWrite(ledrojo,LOW);
delay(500);
digitalWrite(ledflecha,HIGH);
delay(500);
digitalWrite(ledflecha,LOW);
delay(500);
digitalWrite(ledflecha,HIGH);
delay(500);
digitalWrite(ledflecha,LOW);
delay(500);
digitalWrite(ledflecha,HIGH);
delay(500);
digitalWrite(ledflecha,LOW);
delay(500);
digitalWrite(ledflecha,HIGH);
delay(500);
digitalWrite(ledflecha,LOW);
delay(500);
digitalWrite(ledpeatonal,HIGH);
delay(5000);
digitalWrite(ledpeatonal,HIGH);
delay(500);
digitalWrite(ledpeatonal,LOW);
delay(500);
digitalWrite(ledpeatonal,HIGH);
delay(500);
digitalWrite(ledpeatonal,LOW);
delay(500);
}
void peaton (){
{
digitalWrite(ledpeatonal, HIGH);
delay(100000);
digitalWrite(ledpeatonal, LOW);
delay(20000);
digitalWrite(ledpeatonal, HIGH);
delay(100000);
digitalWrite(ledpeatonal, LOW);
delay(20000);
digitalWrite(ledpeatonal, HIGH);
delay(100000);
digitalWrite(ledpeatonal, LOW);
delay(20000);
digitalWrite(ledpeatonal, HIGH);
delay(100000);
digitalWrite(ledpeatonal, LOW);
delay(20000);
digitalWrite(ledpeatonal, HIGH);
delay(100000);
digitalWrite(ledpeatonal, LOW);
}
}
Voltiles se usa usualmente antes del tipo de datos de una variable, para
modificar la manera en que el compilador y el programa deben tratar a esta
variable, en este caso se usaron dos tipos de voltiles: voltiles int interruptor, este
se usa en el ciclo del semforo para que al momento de que se quiera detener
en alguno ah se quede en este caso sera la de la entrada y voltiles int states el
nico lugar que es probable que esto ocurra es en secciones de cdigo
asociadas a las interrupciones, que llaman a una rutina de servicio de
interrupcin. Los leds sirven para comprobar que est funcionando bien el
programa dependiendo del trabajo que se requiera realizar. Int las entrada,
Output es la salida de los pines Digitalwrite es para escribir en el arduino digital si
queremos que apagen o prendan los programas High es encendido Low es
apagado.
CONCLUSIN:
Arduino es una plataforma para prototipo electrnico basada en un
hardware y software libre y es una herramienta para iniciarse en el mundo del
bricolaje electrnico, al mismo tiempo resulta ser muy til para un prototipo
rpido. En las prcticas aprend ha como relacionarme con las herramientas de
bajo coste como es la tarjeta Arduino y a familiarizarme con la plataforma hasta
lograr encender y apagar un conjunto de LED como rutinas, como hacer un
voltmetro digital, un sistema de calefaccin y un semforo con cruce peatonal.
Fue una experiencia distinta y entretenida y todo un reto personal ya que esta es
una de las asignaturas que ms complicadas se me han hecho, pero que s que
me puede servir durante mi carrera.
Martha Rios
La conclusin a la que llegue fue que es importante saber cmo est
construido el cdigo del arduino y sus funciones para que as podamos hacer
bien las prcticas, y podamos usar bien esos cdigos para que tenga el
funcionamiento adecuado.
Rubi Romero