Pico Eğitim Kartı
 
Yüklüyor...
Arıyor...
Eşleşme Yok
buttons.c Dosya Referansı

Pico Eğitim Kartı için buton kontrol implementasyonu. Ayrıntılar...

buttons.c için içerme bağımlılık grafiği:

Veri Yapıları

struct  button_state_t
 Bir butonun durumunu ve zamanlamasını takip eden yapı tipi. Ayrıntılar...
 

Fonksiyonlar

bool button_pressed (uint gpio)
 Debounce korumalı temel buton basma kontrolü
 
void init_buttons (void)
 Tüm buton GPIO pinlerini başlat.
 
static int get_button_index (uint gpio)
 GPIO pininden buton indeksini al.
 
bool check_button_event (uint gpio, ButtonEvent event)
 Çeşitli zamanlama kontrolleriyle buton basma kontrolü
 
uint32_t get_button_hold_duration (uint gpio)
 Bir butonun ne kadar süre al.
 
uint wait_for_button_press (uint32_t timeout_ms)
 Herhangi bir buton basılmasını bekle.
 

Değişkenler

static button_state_t button_states [3] = {0}
 

Ayrıntılı tanımlama

Pico Eğitim Kartı için buton kontrol implementasyonu.

Yazar
Hakan KILIÇASLAN
Tarih
2024-12-4

Bu dosya, Pico Eğitim Kartı üzerindeki buton girişleri için fonksiyonlar sağlar, debounce koruması, basma algılama ve zamanlama özelliklerini içerir.

Ayrıca Bakınız
Butonlar

Fonksiyon Dokümantasyonu

◆ button_pressed()

bool button_pressed ( uint  gpio)

Debounce korumalı temel buton basma kontrolü

Parametreler
gpioKontrol edilecek GPIO pini
Döndürdüğü değer
bool buton basılıysa (debounce sonrası) true, değilse false

Buton sıçramalarından kaynaklanan yanlış tetiklenmeleri önlemek için 100ms debounce süresi uygular. Sadece debounce süresi geçtikten sonra basma işlemini kaydeder.

Bu fonksiyon için çağırılma şeması:

◆ check_button_event()

bool check_button_event ( uint  gpio,
ButtonEvent  event 
)

Çeşitli zamanlama kontrolleriyle buton basma kontrolü

Parametreler
gpioKontrol edilecek GPIO pini
eventKontrol edilecek buton olayı türü (BUTTON_PRESSED, BUTTON_RELEASED veya BUTTON_HELD)
Döndürdüğü değer
bool belirtilen olay gerçekleştiyse true

Farklı buton olay türlerini işler:

  • BUTTON_PRESSED: Buton ilk basıldığında bir kez tetiklenir
  • BUTTON_RELEASED: Buton bırakıldığında bir kez tetiklenir
  • BUTTON_HELD: Buton 1 saniyeden fazla basılı tutulduğunda tetiklenir
Not
Debounce koruması içerir ve her buton için durum bilgisini saklar
Bu fonksiyon için çağırılma şeması:

◆ get_button_hold_duration()

uint32_t get_button_hold_duration ( uint  gpio)

Bir butonun ne kadar süre al.

Parametreler
gpioKontrol edilecek GPIO pini
Döndürdüğü değer
uint32_t Basılı tutulma süresi (milisaniye cinsinden), basılı değilse 0

Butonun sürekli olarak ne kadar süre basılı tutulduğunu döndürür. Buton şu anda basılı değilse veya GPIO pini geçersizse 0 döndürür.

Bu fonksiyon için çağırılma şeması:

◆ get_button_index()

static int get_button_index ( uint  gpio)
static

GPIO pininden buton indeksini al.

Parametreler
gpioGPIO pin numarası
Döndürdüğü değer
int Buton indeksi (YUKARI için 0, TAMAM için 1, AŞAĞI için 2, geçersizse -1)

GPIO pin numaralarını buton durumu takibi için dizi indekslerine eşler. GPIO pini geçerli bir buton pini değilse -1 döndürür.

Bu fonksiyon için çağırılma şeması:

◆ init_buttons()

void init_buttons ( void  )

Tüm buton GPIO pinlerini başlat.

YUKARI, TAMAM ve AŞAĞI butonlarını pull-down dirençli giriş pinleri olarak yapılandırır. Bu, butonlar basılı değilken bilinen bir durumda olmalarını sağlar.

Bu fonksiyon için çağırılma şeması:

◆ wait_for_button_press()

uint wait_for_button_press ( uint32_t  timeout_ms)

Herhangi bir buton basılmasını bekle.

Parametreler
timeout_msMaksimum bekleme süresi (milisaniye cinsinden, sonsuz için 0)
Döndürdüğü değer
uint Basılan butonun GPIO pini, veya zaman aşımında UINT_MAX

Şu durumlardan biri gerçekleşene kadar program akışını bloklar:

  1. Herhangi bir butona basılması (GPIO pin numarasını döndürür)
  2. Zaman aşımı süresinin dolması (UINT_MAX döndürür)
  3. timeout_ms 0 ise, sonsuza kadar bekler
Not
Verimli bekleme için tight_loop_contents() makrosunu kullanır
Bu fonksiyon için çağırılma şeması:

Değişken Dokümantasyonu

◆ button_states

button_state_t button_states[3] = {0}
static