Sunteți pe pagina 1din 14

UNIVERSIDAD POLITCNICA DE SINALOA

SAPERE, DUBITARE ET INNOVARE


INGENIERA EN NANOTECNOLOGA
PROGRAMACIN DE MICROCONTROLADORES

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:

1 Fuente de poder de 15 V (en la misma fuente se manej el potencimetro).


1 Protoboard
3 Resistencias
Cables UTP
1 Arduino
Esta prctica consiste en que tendremos una fuente de poder (voltaje) que ser
de 0 a 15 V, donde esto tendr un acondicionamiento que reduzca y sea
proporcional al voltaje y pasaran a un valor analgico que va de los 0 a 5 V y as
pasara a microcontroladores donde tendr un soporte de 1023 y se tendr que
hacer conversiones para poder manipular el voltaje y que finalmente en el visual
pueda salir de 0 a 15 V.
Cdigo
int potenciometro1;
void setup() {
// put your setup code here, to run once:
pinMode(A4,INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
potenciometro1=analogRead(A4);
Serial.println(potenciometro1*0.0146);
delay(100);
}
Lo que nos dice este cdigo es que se usa un int potencimetro 1; para que
indique la entrada de ese potencimetro. La estructura y programacin del
arduino siempre ser void setup () { } y void Loop () {}. El setup es utilizado para
saber cul ser los modos de trabajo de los pines, en este caso el pin que se est
utilizando es A4 y se est tomando como entrada del pin. Serial. Begin (9600) sirve
para trasmitir los datos en serie. Y 9600 se usa como un valor tpico de velocidad

para comunicarse con el ordenador. Loop es el que ejecuta de forma cclica,


para llevar acabo la accin que se requiere en la tarjeta. Permite hacer lecturas
analgicas en Arduino, es decir, obtener el nivel de voltaje en un punto, siempre y
cuando este no exceda los 5 voltios. Y nos iba a leer nuestro pin mode pin A4. Se
usaron unas ecuaciones que estn hechas por la regla de 3, con el fin de poder
obtener el cambio de voltaje, serial.print consiste en envar el valor de b como un
nmero decimal en caracteres ASCII seguido de "CR" y "LF". Delay consiste en
detener la ejecucin del programa la cantidad de tiempo en ms que se indica en
la propia instruccin. De tal manera que 1000 equivale a 1seg.
Prctica #3 Sistema de calefaccin
Materiales:
1 Placa de arduino
1 Protoboard
1 Sensor LM35
4 Leds: Verde, Amarillo, Rojo y blanco
3 resistencias de 330
1 Motor de 5 V
Cable Utp
1. En esta prctica lo que se pretende es realizar un sistema donde me mida la
temperatura y cuando sta se encuentre en un rango <10C o >40C prenda el
led rojo, el azul encender en el rango de 10C a 20C o 30C a 40C y para el led
verde de 21C a 29C. Para el sistema de calefaccin ste ser en un porcentaje
de 100% - 0% el cual ser indicado con encienda el Led blanco y para el sistema
de enfriamiento ser en un porcentaje de 0% a 100% el cual ser indicado
cuando encienda el motor y cuando se encuentre en un porcentaje del 50%
encender el led blanco y el motor indicando que est a temperatura ambiente.
2. Cargar el siguiente cdigo:
float Vsensor; //float se aplica a los nmeros con decimales.
float Tsensor;
float ResRef= 4.8875;
float Treal;
float ResSensor= 10;
float PorcCal;
float PorEnf;
#define Tminima 10 //#define da un nombre a un valor constante antes de que se
compile el programa.
#define Tmaxima 40
#define T20 20
#define T30 30
#define T21 21
#define T29 29
#define PwmC 2

#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);

digitalWrite (LedVerde, HIGH);


}
}
}
if((Treal>50))
{
PorcCal=0;
PorEnf=100;
}
else
{
if((Treal>50))
{
PorcCal=0;
PorEnf=100;
digitalWrite (PwmC,LOW);
}
else
{
if ((Treal<0))
{
PorcCal=100;
PorEnf=0;
}
else
{
PorcCal=-((((Treal*100)/50)-100));
PorEnf=(((Treal*100)/50));
}
}

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

S-ar putea să vă placă și