/* * led.c * * Created on: Dec 10, 2021 * Author: Trevor Barnes */ #include "led.h" #include "delay.h" #include #include int ledSpeed = 5; void led_init(){ // Initialize corresponding RCC and GPIO registers *RCC_AHB1ENR |= (1<= 6) { // Add pin offset to index *GPIOB_BSRR = (1<<(22+ledIndex)); } else { printf("LED index out of range\n\r"); } } void led_scan(){ led_allOff(); // Right to left each LED for (int i = 0; i <= 9 ; i++) { // Scaled Delay delay_1ms(50+(ledSpeed*50)); if(i != 0){ led_off(i-1); } led_on(i); } // Left to right each LED for (int i = 9; i >= 0; i--) { if(i != 9){ led_off(i+1); } led_on(i); // Scaled Delay delay_1ms(50+(ledSpeed*50)); } led_off(0); } void led_flash(){ // Flash LED on and off 10 times at a speed between 0-1 seconds for (int i = 0; i < 10; i++) { led_allOn(); delay_1ms(100+(ledSpeed*100)); led_allOff(); delay_1ms(100+(ledSpeed*100)); } } void led_setSpeed(uint8_t speed){ ledSpeed = speed; } void led_incSpeed(){ if (ledSpeed == 0){ printf("Speed too fast\n\r"); } else { ledSpeed--; } } void led_decSpeed(){ if (ledSpeed == 9){ printf("Speed too slow\n\r"); } else { ledSpeed++; } } uint8_t getCurrentSpeed() { return ledSpeed; }