82 lines
1.6 KiB
C
82 lines
1.6 KiB
C
/*
|
|
* 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;
|
|
}
|
|
}
|