Está en la página 1de 8

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN

FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA

Microcontroladores
Docente: Dr. Héctor Gilberto Barrón González

Actividad Fundamental 1: 3 en 1.

Nombre: Leonardo Ramón Solis Gracia Matricula: 1818845

Hora: N1-N3 Salón: CIS1 Plan: 401


Actividad Fundamental 1.- 3 en 1
1.- Descripción del Problema
Utilizando un puerto GPIO configurado como entradas digitales, deberá seleccionar entre
las siguientes funciones:

01 Contador en Binario

02 Auto Increíble

03 Contador RGB

Para ello deberá tomar en cuenta las siguientes consideraciones

1. Visualizar en un grupo de 8 leds el efecto producido por una cuenta natural ascendente en
código binario.
2. Lograr la visualización de una cuenta ascendente dentro de los rangos del 1 al 7 en un led
RGB de Cátodo Común.
3. Se requiere establecer un Loop infinito de lectura entre un puerto paralelo de 2 bits
configurado como entradas y la función a desarrollar.
4. Solo se deberá efectuar una operación a la vez, es decir si el contador ascendente es
seleccionado se incrementará en una posición ejemplo de 0000 0001 a 00000010, y
posteriormente regresara a leer las entradas, si es seleccionado el contador RGB el valor
del contador binario deberá guardarse y continuar cuando sea seleccionado de nuevo. De
la misma forma esto debe suceder para las otras opciones (un desplazamiento en el auto
increíble o un incremento en la cuenta RGB).

2.- Objetivo
1. Desarrollar un código que permita manipular el puerto para leer las entradas
3.- Diagrama de Flujo Propuesto

While

Read_Binary()

Switch

Case 1 Case 2 Case 3 default

contador_ Kit() contador_


clean
binario () RGB()

FIN
4.- Diagrama de la Implementación del Circuito

5.- Evidencia Grafica (Si existe un circuito)

AUTO INCREIBLE

RGB
CONTADOR BINARIO

6.- Prototipos de funciones principales


Agregue las Instrucciones s utilizadas para:

FUNCIÓN PRINCIPAL
//LEONARDO R. SOLIS GRACIA 1818845 IMTC N1-N3 JUEVES//
#include "main.h"
#include "usb_host.h"
I2C_HandleTypeDef hi2c1;
I2S_HandleTypeDef hi2s3;
SPI_HandleTypeDef hspi1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
static void MX_I2S3_Init(void);
static void MX_SPI1_Init(void);
void MX_USB_HOST_Process(void);
#define LED1 GPIO_PIN_8
#define LED2 GPIO_PIN_9
#define LED3 GPIO_PIN_10
#define LED4 GPIO_PIN_11
#define LED5 GPIO_PIN_12
#define LED6 GPIO_PIN_13
#define LED7 GPIO_PIN_14
#define LED8 GPIO_PIN_15
void READ_BINARY(void);
void contador_binario(void);
void kit(void); //Funciones para completar
void contador_RGB(void); //Funciones para completar
void clean (void); //Funciones para completar
char BIN1,BIN2,BIN3;
int Inputs,kitcont,bincont,rgbcont;
int kitArray[]={LED1,LED2,LED3,LED4,LED5,LED6,LED7,LED8,LED7,LED6,LED5,LED4,LED3,LED2,LED1};
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_I2S3_Init();
MX_SPI1_Init();
MX_USB_HOST_Init();
clean();
while (1){
/* USER CODE END WHILE */
MX_USB_HOST_Process();
/* USER CODE BEGIN 3 */
BIN1 = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);
BIN2 = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);
BIN3 = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_5);
READ_BINARY();
switch(Inputs){
case 0:
clean();
break;
case 1:
kit();
clean();
break;
case 2:
contador_binario();
clean();
break;
case 3:
contador_RGB();
clean();
break;
default:
clean();
break;
}
}
/* USER CODE END 3 */
}
void READ_BINARY(void){
Inputs=0;
if(BIN1){Inputs=1;}
if(BIN2){Inputs=2;}
if(BIN3){Inputs=3;}
}
void contador_binario(void){
GPIOE->ODR=bincont*256;
HAL_Delay(200);
bincont++;
if(bincont==256){bincont=0;}
}
void kit(void){
HAL_GPIO_WritePin(GPIOE,kitArray[kitcont],GPIO_PIN_SET);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOE,kitArray[kitcont],GPIO_PIN_RESET);
kitcont++;
if(kitcont==14){kitcont=0;}
}
void contador_RGB(void){
GPIOB->ODR=rgbcont*8192;
HAL_Delay(400);
rgbcont++;
if(rgbcont==8){rgbcont=0;}
}
void clean(void){
GPIOE->ODR=0;
GPIOB->ODR=0;
}
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_I2S3_Init();
MX_SPI1_Init();
MX_USB_HOST_Init();
clean();
while (1){
/* USER CODE END WHILE */
MX_USB_HOST_Process();
/* USER CODE BEGIN 3 */
BIN1 = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);
BIN2 = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);
BIN3 = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_5);
READ_BINARY();
switch(Inputs){
case 0:
clean();
break;
case 1:
kit();
clean();
break;
case 2:
contador_binario();
clean();
break;
case 3:
contador_RGB();
clean();
break;
default:
clean();
break;
}
}
/* USER CODE END 3 */
}
void READ_BINARY(void)
void contador_binario(void)
void kit(void)
void contador_RGB(void)
void clean(void)

void contador_binario(void){
GPIOE->ODR=bincont*256;
HAL_Delay(200);
bincont++;
if(bincont==256){bincont=0;}
}

 FUNCIÓN POR SEPARADO

void contador_binario(void){

GPIOE->ODR=bincont*256;

HAL_Delay(200);

bincont++;

if(bincont==256){bincont=0;}

--------------------------------------------------------------------------------------------------------------------------------------------------------

void kit(void){

HAL_GPIO_WritePin(GPIOE,kitArray[kitcont],GPIO_PIN_SET);

HAL_Delay(200);

HAL_GPIO_WritePin(GPIOE,kitArray[kitcont],GPIO_PIN_RESET);

kitcont++;

if(kitcont==14){kitcont=0;}

--------------------------------------------------------------------------------------------------------------------------------------------------------

void contador_RGB(void){

GPIOB->ODR=rgbcont*8192;

HAL_Delay(400);

rgbcont++;

if(rgbcont==8){rgbcont=0;}

--------------------------------------------------------------------------------------------------------------------------------------------------------

También podría gustarte