Está en la página 1de 7

Contenido

Actividad Fundamental 1.- Contador Binario, Contador RGB y el Int_Out.........................................2


1.- Descripción del Problema.............................................................................................................2
2.- Objetivo........................................................................................................................................3
3.- Diagrama de Flujo Propuesto........................................................................................................3
4.- Diagrama de la Implementación del Circuito................................................................................3
5.- Evidencia Grafica (Si existe un circuito).........................................................................................3
6.- Prototipos de funciones principales..............................................................................................3
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 incrementara 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. Conocer las funciones de un microcontrolador.
2. Identificar y señalar las entradas y salidas del STM32F407G-DISC1
3. Diseñar un código que pueda enviar diferentes señales e instrucciones al
microcontrolador.
4. Reconocer errores en el código diseñado.
5. Mejorar el reconocimiento de cómo se realizan las conexiones en el protoboard.
6. Mejor desarrollo en la habilidad de programación.
3.- Diagrama de Flujo Propuesto
4.- Diagrama de la Implementación del Circuito

Aquí presento el diagrama de conexiones necesarias para el funcionamiento de este circuito, como
observamos, las entradas D0, hasta D15, están ocupadas, es decir, casi todo el puerto D está
siendo usado a excepción del pin D13, el puerto D está configurado como salidas, en donde cada
pin lleva un LED conectado a tierra. Luego están las entradas E0 y E1, que están declaradas como
entradas, con un dipswitch.
5.- Evidencia Grafica (Si existe un circuito)

Aquí se muestran fotos del funcionamiento, se ven 4 casos diferentes, una en donde el
primer estado es “0 0” y se ve como ningún circuito esta funcionando, el segundo caso es
“0 1” y se nota ya el efecto del auto fantástico, el tercero “1 0” trata del contador RGB, y en
el caso de “1 1”, el contador binario.
6.- Prototipos de funciones principales
Aquí se presenta la configuración de periféricos, en donde se hace notoria la visualización
de entradas y salidas que se requieren, como se observa, casi todo el puerto D esta siendo
ocupado, menos el D8-D11 y D13, están configuradas como salidas, mientras que E0 y E1,
están como entradas.

Aquí se muestra el codigo principal funconal, quitando las variables declaradas y el


nombre que se le asigno a los pines(#DEFINE) para ahorrar algo de espacio.
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();

while (1)
{

estado = (GPIOE->IDR);

////////////////////////////////////////////////////////////////////////////////
//////////////////////
switch(estado){
case 1:
autofantastico();
break;
case 2:
rgb();
break;
case 3:
Binario();
break;

}
////////////////////////////////////////////////////////////////////////////////
///////////////////////
}
}

void autofantastico (void){


for(int i=0;i<=7;i++){
HAL_GPIO_WritePin(GPIOD,counter[i],GPIO_PIN_SET);
HAL_Delay(70);
HAL_GPIO_WritePin(GPIOD,counter[i],GPIO_PIN_RESET);
}
for(int i=7;i>=0;i--){
HAL_GPIO_WritePin(GPIOD,counter[i],GPIO_PIN_SET);
HAL_Delay(70);
HAL_GPIO_WritePin(GPIOD,counter[i],GPIO_PIN_RESET);
}
}

void rgb (void){


for(int i=0; i<7; i++) {
HAL_GPIO_WritePin(GPIOD, color[i], GPIO_PIN_SET);
HAL_Delay(400);
HAL_GPIO_WritePin(GPIOD, color[i], GPIO_PIN_RESET);
}
}

void Binario(void){
HAL_GPIO_WritePin(GPIOD, binario,GPIO_PIN_SET);
HAL_Delay(400);
HAL_GPIO_WritePin(GPIOD, binario,GPIO_PIN_RESET);
binario= binario + 1;
}

También podría gustarte