You are on page 1of 4

Universidad Nacional de Ingeniería

Facultad de Ingeniería Eléctrica y Electrónica

1er. Laboratorio: Pregunta N°2


Curso: Arquitectura de Microcontroladores Avanzados – EE689M
Tema: Controlar el nivel de líquido de un depósito.
Docente: Javier Augusto Barriga Hoyle
Grupo Nº 2
Integrantes:
• Segura Castro, Cristhus Francisco 20184120I
• Beingolea Rodriguez Carlos Andres 20162150B
• Franck Jerry Figueroa Gonzales 20180288B
• Cosme Ortiz Hyerson Jeanmyr 20171544J
• Luna Reyna Leonardo Sebastián 20170337K

Lima - Perú
Fecha de presentación: 28 de abril de 2023
a) Disposición de los pines y como están configurados

b) Programa en C
/* USER CODE END 2 */
int contador = 0;//definimos el delay para los pulsadores
int num = 0; //Definimos e inicializamos num como 0
int a=0,b=0,c=0,d=0; //inicializamos en 0 los valores en binario para
los displays
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,
GPIO_PIN_RESET);
//Ponemos en 0 todas los pines de salida de los display y el del led
que indica que ya no hay espacio
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,GPIO_PIN_SET);//se inicializa el
display 1
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,GPIO_PIN_SET);//se inicializa el
display 2
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);//Ponemos en 0
el pin de salida
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_SET);//Ponemos en 1 el
pin de entrada del led que indica que aun hay espacio
/* Infinite loop */
/* USER CODE BEGIN WHILE */

while (1)
{
int entrada,salida;
int decena,unidad;

if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7)==0 ||
HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6)==1){
entrada=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7);
salida=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6);
for(int i = 0; i<20;i++){
HAL_Delay(15);
}
if(entrada==0 && salida==0 && num<15){
num++;
} //Se garantiza que el numero aumente
unicamente si el valor actual es menor a 15 y solo el pulsador de
entrada haya sido activado
else{
if(entrada==1 && salida==1 && num>0){
num--;
}//Se garantiza que el numere disminuya
unicamente si el valor actual es mayor que 0 y solo el pulsador de
salida haya sido activado
}

if(num==15){

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,0);//Apaga el led que indica que aun


hay espacio

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,1);//Prende el led que indica que ya


no hay espacio
}
else{

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,1);//Prende el led que indica que


aun hay espacio

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,0);//Apaga el led que indica que ya


no hay espacio
}

decena=num/10;//Se obtiene la cifra de las


decenas de num
unidad=num%10;//Se obtiene la cifra de las
unidades de num
a=unidad%2;
unidad=unidad/2;
b=unidad%2;
unidad=unidad/2;
c=unidad%2;
d=unidad/2;

}//Se activa unicamente mientras al menos uno de


los pulsadores este presionado

while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7)==1 &&
HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6)==0){
if(decena == 1){
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,1);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,1);
HAL_Delay(5);
}else{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,1);
HAL_Delay(5);

}
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,a);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,b);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,c);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,d);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,1);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,0);
HAL_Delay(5);
} //Bucle infinito cuando ningun pulsador esta presionado

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */


}
/* USER CODE END 3 */

c) Video del circuito funcionando:


https://drive.google.com/drive/folders/1venwIu8YsvPucI07oLQcwZiDyqgUcPId

You might also like