Está en la página 1de 15

INSTITUTO POLITÉCNICO NACIONAL

ESIME ZACATENCO
INGENIERÍA EN CONTROL Y
AUTOMATIZACIÓN

INTERFASES Y MICROCONTROLADORES

EXAMEN

Profesor: Mejía García Adrián Esteban

Elaborado por:
Desales González José Carlos
Uzy Lizbeth Barrios Bernabe
Grupo: 7AM3

23 de marzo de 2021
DESARROLLO
Utiliza una función random que cuente de 0 a 99 cuya secuencia de operación sea la
siguiente:
1. El operador oprime un botón de inicio o arranque e inmediatamente en dos displays se
muestra un numero aleatorio que se encuentre entre 0 y 99
2. Si el número aleatorio queda entre entre 0 y 59 arranca un motor a pasos en sentido de
las manecillas del reloj.
3. Si el numero aleatorio queda entre entre 60 y 99 arranca el motor a pasos en sentido
contrario a las manecillas del reloj.
4. Con el motor girando, el conteo comienza a descender desde el numero que mostró la
función random. Cuando el conteo llegue a 00, el motor se detiene.
5. Un botón de reset interrumpe todo, regresando la cuenta a 00 y detiene el motor.

Para este examen, podrás formar equipo con otro integrante del grupo o si lo deseas,
puedes entregarlo de forma individual. Es importante que revises la rúbrica de evaluación
del examen para que puedas observar los puntos y aspectos que se evaluaran.
Link de YouTube:

https://youtu.be/dfEDvFZPNYY
Resultados obtenidos:
En ARDUINO IDE se propuso el siguiente código:
//Variables propias del codigo
int num;
int centena;
int decena;
int unidad;
float ext;
int p1=12;
int p2=13;
int valor1;
int valor2;
int pausa=150;
int t=150;
//Display A unidades
int D0=2;
int D1=3;
int D2=4;
int D3=5;
//Display B decenas
int D4=6;
int D5=7;
int D6=8;
int D7=9;
//Para el motor
int m7= 13;
int m6= 12;
int m5= 11;
int m4= 10;
//Prototipos de funciones
void contador(int);
void paro();
void motor1();
void motor2();
void setup() {

Serial.begin(9600);
randomSeed(100);
//Condicionales
pinMode(p1, INPUT);
pinMode(p2, INPUT);
//Display A unidades
pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
//Display B decenas
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
//Para el motor
pinMode(m7, OUTPUT);
pinMode(m6, OUTPUT);
pinMode(m5, OUTPUT);
pinMode(m4, OUTPUT);

void loop() {
int z;
valor1=digitalRead(A0);
valor2=digitalRead(A1);
num=random(0,100);

if(valor1==HIGH){
contador(num);
}
if(valor2==HIGH){
paro();
}

}
void contador(int num)
{
int num2=num;
int decena2;
int centena2;
int unidad2;

do{
valor2=digitalRead(A1);
num2=num2-1;
centena2 = num2/100;
decena2 = (num2 - centena2*100)/10;
unidad2 = (num2 - centena2*100 - decena2*10);
if(valor2==HIGH){
paro();
}
if(num2<=59){
motor2();
}
if(num2<=99){
motor1();
}
//Cero decena2
if(decena2==0){
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
delay(pausa);
}

//Uno decena2
if(decena2==1){
digitalWrite(D4, HIGH);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
delay(pausa);
}

//Dos decena2
if(decena2==2){
digitalWrite(D4, LOW);
digitalWrite(D5, HIGH);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
delay(pausa);
}

//Tres decena2
if(decena2==3){
digitalWrite(D4, HIGH);
digitalWrite(D5, HIGH);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
delay(pausa);
}
//Cuatro decena2
if(decena2==4){
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, HIGH);
digitalWrite(D7, LOW);
delay(pausa);
}

//Cinco decena2
if(decena2==5){
digitalWrite(D4, HIGH);
digitalWrite(D5, LOW);
digitalWrite(D6, HIGH);
digitalWrite(D7, LOW);
delay(pausa);
}

//Seis decena2
if(decena2==6){
digitalWrite(D4, LOW);
digitalWrite(D5, HIGH);
digitalWrite(D6, HIGH);
digitalWrite(D7, LOW);
delay(pausa);
}

//Siete decena2
if(decena2==7){
digitalWrite(D4, HIGH);
digitalWrite(D5, HIGH);
digitalWrite(D6, HIGH);
digitalWrite(D7, LOW);
delay(pausa);
}

//Ocho decena2
if(decena2==8){
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, HIGH);
delay(pausa);
}

//Nueve decena2
if(decena2==9){
digitalWrite(D4, HIGH);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, HIGH);
delay(pausa);
}
//Cero
if(unidad2==0){
digitalWrite(D0, LOW);
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
delay(pausa);
}

//Uno
if(unidad2==1){
digitalWrite(D0, HIGH);
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
delay(pausa);
}
//Dos
if(unidad2==2){
digitalWrite(D0, LOW);
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
delay(pausa);
}

//Tres
if(unidad2==3){
digitalWrite(D0, HIGH);
digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
delay(pausa);
}

//Cuatro
if(unidad2==4){
digitalWrite(D0, LOW);
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
delay(pausa);
}
//Cinco
if(unidad2==5){
digitalWrite(D0, HIGH);
digitalWrite(D1, LOW);
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
delay(pausa);
}

//Seis
if(unidad2==6){
digitalWrite(D0, LOW);
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
delay(pausa);
}
//Siete
if(unidad2==7){
digitalWrite(D0, HIGH);
digitalWrite(D1, HIGH);
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
delay(pausa);
}

//Ocho
if(unidad2==8){
digitalWrite(D0, LOW);
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);
delay(pausa);
}

//Nueve
if(unidad2==9){
digitalWrite(D0, HIGH);
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);
delay(pausa);
}
}while(num2!=0);
}
void paro(){
//Cero unidad
digitalWrite(D0, LOW);
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);

//Cero decena
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);

//Paro del motor


digitalWrite(m7, LOW);
digitalWrite(m6, LOW);
digitalWrite(m5, LOW);
digitalWrite(m4, LOW);

delay(10000);
}
void motor1(){

digitalWrite(m7, HIGH);
digitalWrite(m6, LOW);
digitalWrite(m5, LOW);
digitalWrite(m4, LOW);
delay(t);

digitalWrite(m7, LOW);
digitalWrite(m6, HIGH);
digitalWrite(m5, LOW);
digitalWrite(m4, LOW);
delay(t);

digitalWrite(m7, LOW);
digitalWrite(m6, LOW);
digitalWrite(m5, HIGH);
digitalWrite(m4, LOW);
delay(t);

digitalWrite(m7, LOW);
digitalWrite(m6, LOW);
digitalWrite(m5, LOW);
digitalWrite(m4, HIGH);
delay(t);
}
void motor2(){

digitalWrite(m7, LOW);
digitalWrite(m6, LOW);
digitalWrite(m5, LOW);
digitalWrite(m4, HIGH);
delay(t);

digitalWrite(m7, LOW);
digitalWrite(m6, LOW);
digitalWrite(m5, HIGH);
digitalWrite(m4, LOW);
delay(t);
digitalWrite(m7, LOW);
digitalWrite(m6, HIGH);
digitalWrite(m5, LOW);
digitalWrite(m4, LOW);
delay(t);

digitalWrite(m7, HIGH);
digitalWrite(m6, LOW);
digitalWrite(m5, LOW);
digitalWrite(m4, LOW);
delay(t);
}
Resultados:

También podría gustarte