new traffic light code. walk signal works
This commit is contained in:
@@ -18,6 +18,10 @@
|
||||
* RedLight: PE2
|
||||
* YellowLight: PE3
|
||||
* GreenLight: PE4
|
||||
* WalkLight: PE5
|
||||
*
|
||||
* Done: Traffic Light
|
||||
* TODO: Light Dimmer
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
@@ -26,30 +30,53 @@
|
||||
#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
|
||||
breadboard(int traffSPD)
|
||||
starttick(void)
|
||||
{
|
||||
// Traffic Light
|
||||
|
||||
HAL_GPIO_TogglePin(R_Prt, R_Pin);
|
||||
HAL_Delay(traffSPD);
|
||||
HAL_GPIO_TogglePin(R_Prt, R_Pin);
|
||||
|
||||
HAL_GPIO_TogglePin(Y_Prt, Y_Pin);
|
||||
HAL_Delay(traffSPD);
|
||||
HAL_GPIO_TogglePin(Y_Prt, Y_Pin);
|
||||
|
||||
HAL_GPIO_TogglePin(G_Prt, G_Pin);
|
||||
HAL_Delay(traffSPD);
|
||||
HAL_GPIO_TogglePin(G_Prt, G_Pin);
|
||||
|
||||
|
||||
// Walk signal
|
||||
|
||||
// Light dimmer
|
||||
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(R_Prt, R_Pin, GPIO_PIN_SET);
|
||||
break;
|
||||
case 1:
|
||||
HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET);
|
||||
break;
|
||||
case 2:
|
||||
HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET);
|
||||
break;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user