LED is working and implement in feedback

This commit is contained in:
Philipp_EndevourOS
2025-08-13 02:05:49 +02:00
parent 593d98df74
commit 3117c55b1c
3 changed files with 23 additions and 9 deletions

View File

@@ -1,6 +1,11 @@
use embassy_time::{Delay, Duration, Timer};
use esp_hal::{delay, gpio::Output, peripherals};
use esp_hal::{delay, gpio::Output, peripherals, rmt::ConstChannelAccess};
use esp_hal_smartled::SmartLedsAdapterAsync;
use log::{debug, error, info};
use init::hardware;
use smart_leds::colors::{BLACK, GREEN, RED, YELLOW};
use smart_leds::{brightness, colors::BLUE};
use smart_leds::SmartLedsWriteAsync;
use crate::{FEEDBACK_STATE, init};
@@ -10,23 +15,28 @@ pub enum FeedbackState {
Nak,
Error,
Startup,
WIFI,
Idle,
}
const LED_LEVEL: u8 = 255;
#[embassy_executor::task]
pub async fn feedback_task(buzzer: peripherals::GPIO21<'static>) {
pub async fn feedback_task(mut led: SmartLedsAdapterAsync<ConstChannelAccess<esp_hal::rmt::Tx, 0>, { init::hardware::LED_BUFFER_SIZE }>, buzzer: peripherals::GPIO21<'static>) {
debug!("Starting feedback task");
let mut buzzer = init::hardware::setup_buzzer(buzzer);
loop {
let feedback_state = FEEDBACK_STATE.wait().await;
match feedback_state {
FeedbackState::Ack => {
led.write(brightness([GREEN; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
Timer::after(Duration::from_millis(50)).await;
}
FeedbackState::Nak => {
led.write(brightness([YELLOW; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
@@ -34,8 +44,10 @@ pub async fn feedback_task(buzzer: peripherals::GPIO21<'static>) {
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
led.write(brightness([BLACK; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
}
FeedbackState::Error => {
led.write(brightness([RED; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(500)).await;
buzzer.set_low();
@@ -45,6 +57,7 @@ pub async fn feedback_task(buzzer: peripherals::GPIO21<'static>) {
buzzer.set_low();
}
FeedbackState::Startup => {
led.write(brightness([GREEN; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
buzzer.set_high();
Timer::after(Duration::from_millis(10)).await;
buzzer.set_low();
@@ -56,6 +69,10 @@ pub async fn feedback_task(buzzer: peripherals::GPIO21<'static>) {
buzzer.set_high();
Timer::after(Duration::from_millis(100)).await;
buzzer.set_low();
led.write(brightness([BLACK; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
}
FeedbackState::WIFI => {
led.write(brightness([BLUE; init::hardware::NUM_LEDS].into_iter(), LED_LEVEL)).await.unwrap();
}
FeedbackState::Idle => {
// Do nothing
@@ -65,6 +82,7 @@ pub async fn feedback_task(buzzer: peripherals::GPIO21<'static>) {
}
}
// async fn beep_ack() {
// buzzer.set_high();
// buzzer.set_low();