/* sirena.c
 * Jednoduché PWM kvičítko
 *
 */

#include "pico/stdlib.h"
#include "hardware/pwm.h"

#define PIN_BZUCAK 15 


// Funkce pro zvuk sirény
void hraj_ton(uint frekvence) 
{
    if (frekvence == 0) {
        pwm_set_gpio_level(PIN_BZUCAK, 0);
        return;
    }
    uint slice_num = pwm_gpio_to_slice_num(PIN_BZUCAK);
    uint32_t clock = 125000000;
    uint32_t divider = clock / (frekvence * 4096) + 1;
    uint32_t top = clock / (divider * frekvence) - 1;
    pwm_set_clkdiv(slice_num, divider);
    pwm_set_wrap(slice_num, top);
    pwm_set_gpio_level(PIN_BZUCAK, top / 2);
}

int main() 
{

    gpio_set_function(PIN_BZUCAK, GPIO_FUNC_PWM);
    uint slice_num = pwm_gpio_to_slice_num(PIN_BZUCAK);
    pwm_set_enabled(slice_num, true);
    
    while(1) {
 //       hraj_ton(550); // kvičítko kvičí tónem 600 Hz
 //       sleep_ms(10);  // prodleva 80 milisekund 
 //       hraj_ton(650); // kvičítko kvičí tónem 500 Hz
 //       sleep_ms(10);
 //       hraj_ton(750); // kvičítko kvičí tónem 450 Hz
 //       sleep_ms(10);
        hraj_ton(800);
        sleep_ms(10);
        hraj_ton(1200);
        sleep_ms(20);
        hraj_ton(1400);
        sleep_ms(280);
        hraj_ton(0);    // kvičítko přestává kvičet
        sleep_ms(500);
    }
}
