/* * breadboard.c * * Created on: Sep 17, 2025 * Author: ja */ /* * #define RedLight_Pin GPIO_PIN_2 * #define RedLight_GPIO_Port GPIOE * * #define YellowLight_Pin GPIO_PIN_3 * #define YellowLight_GPIO_Port GPIOE * * #define GreenLight_Pin GPIO_PIN_4 * #define GreenLight_GPIO_Port GPIOE * * RedLight: PE2 * YellowLight: PE3 * GreenLight: PE4 * WalkLight: PE5 * * Done: Traffic Light * TODO: Light Dimmer */ #include "main.h" #include "breadboard.h" #define R_Pin RedLight_Pin #define Y_Pin YellowLight_Pin #define G_Pin GreenLight_Pin #define W_Pin WalkLight_Pin #define R_Prt RedLight_GPIO_Port #define Y_Prt YellowLight_GPIO_Port #define G_Prt GreenLight_GPIO_Port #define W_Prt WalkLight_GPIO_Port uint32_t trafftick_last; uint32_t walktick_last; uint8_t trafflight_index = 0; void starttick(void) { trafftick_last = HAL_GetTick(); walktick_last = HAL_GetTick(); } void trafflight(int traffSPD, int walkSPD) { uint32_t trafftick_curr = HAL_GetTick(); if ((trafftick_curr - trafftick_last) >= traffSPD) { HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); switch (trafflight_index) { case 0: HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); break; case 1: HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); break; case 2: HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); } trafflight_index = (trafflight_index + 1) % 3; trafftick_last = trafftick_curr; } if ((trafftick_curr - walktick_last) >= walkSPD) { HAL_GPIO_TogglePin(W_Prt, W_Pin); walktick_last = trafftick_curr; } }