Zkonstruujeme blikající maják na sanitku.
Schéma zapojení
Schéma zapojení v programu KiCAD

Funkce použité v programu
void gpio_init_mask( uint32_t maska ) (1)
static void gpio_set_dir_out_masked( uint32_t maska ) (2)
gpio_set_mask( uint32_t maska ) (3)
gpio_clr_mask( uint32_t maska ) (4)
sleep_ms(uint milisekundy) (5)
| 1 | Počáteční inicializace pinů, které jsou jedničkové v masce. |
| 2 | Nastavení směru pinů na výstupní, které jsou jedničkové v masce. |
| 3 | Rozsvícení pinů, které jsou jedničkové v masce. |
| 4 | Zhasnutí pinů, které jsou jedničkové v masce. |
| 5 | Pauza programu v milisekundách. |
Jak se tyto funkce používají si můžete přečíst zde: Práce s několika GPIO linkami současně
Program
/* Maják na sanitku
* (c) Jirka Chráska 2025; <jirka@lixis.cz>
* licence BSD 3 clause
*/
#include "pico/stdlib.h"
// GPIO0 až GPIO11 budou LED majáku
uint32_t piny_majak = 1 | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7) | (1<<8) | (1<<9) | (1<<10) | (1<<11);
// to samé mohu udělat pomocí: uint32_t piny_majak = 0xfff;
// anebo to samé mohu udělat pomocí: uint32_t piny_majak = 0b0000111111111111;
void majak_init()
{
gpio_init_mask( piny_majak ); // nastavení pinů 0 a 11
gpio_set_dir_out_masked( piny_majak ); // na výstupní
gpio_set_mask( piny_majak ); // testovací rozsvícení
}
// masky pro jednotlivé stavy majáku
uint32_t masky[10] = {0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0x1c0, 0x380, 0x700, 0xe00};
// nebo se to dá zapsat binárně takto
/* uint32_t masky[10] = { 0b000000000111,
0b000000001110,
0b000000011100,
0b000000111000,
0b000001110000,
0b000011100000,
0b000111000000,
0b001110000000,
0b011100000000,
0b111000000000 };
*/
int main( void )
{
int sleep_time = 50;
int i = 0;
unsigned int j = 1;
majak_init();
sleep_ms(1000);
gpio_clr_mask( piny_majak ); // zhasnu maják
while(1) {
for( i=0; i<10; i++ ) {
gpio_set_mask( masky[i] );
sleep_ms(sleep_time);
gpio_clr_mask( masky[i] );
}
for( i=9; i>=0; i-- ) {
gpio_set_mask( masky[i] );
sleep_ms(sleep_time);
gpio_clr_mask( masky[i] );
}
if( (j%5) == 4 ) {
gpio_clr_mask( piny_majak );
sleep_ms( sleep_time );
gpio_set_mask( piny_majak );
sleep_ms( sleep_time );
gpio_clr_mask( piny_majak );
j = 0;
sleep_ms( sleep_time/2 );
gpio_set_mask( piny_majak );
sleep_ms( sleep_time );
gpio_clr_mask( piny_majak );
}
j++;
}
}
cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(majak1 C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
add_executable(majak1
majak1.c
)
target_link_libraries(majak1 pico_stdlib)
pico_add_extra_outputs(majak1)
Sestavení programu
$ cd majak1
$ mkdir build
$ cd build
$ cmake ..
$ make -j8
Konstrukce
Konstrukce roku 2025

Fungující prototyp majáku na sanitku
Konstrukce roku 2026
