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

Raspberry Pi Pico eğitim kartı için pin tanımlamaları ve yapılandırmaları Ayrıntılar...

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <limits.h>
#include "hardware/gpio.h"
#include "pico/multicore.h"
#include "pico/stdlib.h"
#include "hardware/pwm.h"
#include "hardware/adc.h"
#include "hardware/i2c.h"
pico_training_board.h için içerme bağımlılık grafiği:
Bu şekil hangi dosyaların doğrudan ya da dolaylı olarak bu dosyayı içerdiğini gösterir:

Bu dosyanın kaynak koduna git.

Makrolar

#define KEYPAD   28
 
#define POT_1   27
 
#define LDR_1   26
 
#define BUTTON_UP   5
 
#define BUTTON_OK   6
 
#define BUTTON_DOWN   7
 
#define LED_RED   4
 
#define LED_YELLOW   3
 
#define LED_GREEN   2
 
#define RGB_R   16
 
#define RGB_G   17
 
#define RGB_B   18
 
#define BUZZER_PIN   10
 
#define STEP_MOTOR_A1   11
 
#define STEP_MOTOR_A2   12
 
#define STEP_MOTOR_B1   13
 
#define STEP_MOTOR_B2   14
 
#define STEP_DELAY_MIN   1000
 
#define STEP_DELAY_MAX   10000
 
#define STEPS_PER_REV   2048
 
#define ULTRA_SONIC_TR   8
 
#define ULTRA_SONIC_EC   9
 
#define BLT_TX   0
 
#define BLT_RX   1
 
#define PIR_DETECTOR   19
 
#define I2C_SDA   20
 
#define I2C_SCL   21
 
#define LCD_ADDR   0x27
 
#define I2C_PORT   i2c0
 
#define LCD_ROWS   2
 
#define LCD_COLS   16
 
#define LCD_CHARACTER   1
 
#define LCD_COMMAND   0
 
#define LCD_CLEARDISPLAY   0x01
 
#define LCD_RETURNHOME   0x02
 
#define LCD_ENTRYMODESET   0x04
 
#define LCD_DISPLAYCONTROL   0x08
 
#define LCD_CURSORSHIFT   0x10
 
#define LCD_FUNCTIONSET   0x20
 
#define LCD_SETCGRAMADDR   0x40
 
#define LCD_SETDDRAMADDR   0x80
 
#define LCD_ENTRYSHIFTINCREMENT   0x01
 
#define LCD_ENTRYLEFT   0x02
 
#define LCD_BLINKON   0x01
 
#define LCD_CURSORON   0x02
 
#define LCD_DISPLAYON   0x04
 
#define LCD_MOVERIGHT   0x04
 
#define LCD_DISPLAYMOVE   0x08
 
#define LCD_5x10DOTS   0x04
 
#define LCD_2LINE   0x08
 
#define LCD_8BITMODE   0x10
 
#define LCD_BACKLIGHT   0x08
 
#define LCD_ENABLE_BIT   0x04
 
#define HIGH   1
 
#define LOW   0
 
#define PWM_FREQ   1000
 
#define PWM_DUTY_MAX   4095
 
#define BUZZER_CLOCK   125000000
 
#define BUZZER_WRAP   4095
 
#define BUZZER_DUTY_50   2048
 
#define NOTE_C4   261.63
 
#define NOTE_CS4   277.18
 
#define NOTE_D4   293.66
 
#define NOTE_DS4   311.13
 
#define NOTE_E4   329.63
 
#define NOTE_F4   349.23
 
#define NOTE_FS4   369.99
 
#define NOTE_G4   392.00
 
#define NOTE_GS4   415.30
 
#define NOTE_A4   440.00
 
#define NOTE_AS4   466.16
 
#define NOTE_B4   493.88
 

Enümerasyonlar

enum  motor_state_t { MOTOR_STOPPED = 0 , MOTOR_RUNNING = 1 , MOTOR_ERROR = 2 }
 Motor durumu numaralandırması Ayrıntılar...
 
enum  motor_direction_t { CW , CCW }
 Motor yönü numaralandırması Ayrıntılar...
 
enum  ButtonEvent { BUTTON_PRESSED , BUTTON_RELEASED , BUTTON_HELD }
 

Fonksiyonlar

bool is_motor_running (void)
 Motorun çalışıp çalışmadığını kontrol eder.
 
motor_state_t get_motor_state (void)
 Motorun mevcut durumunu döndürür.
 
void step_turn (motor_direction_t direction, uint speed, float revolutions)
 Belirtilen yön, hız ve devir sayısı ile step motor dönüşünü kontrol eder.
 
void step_stop (void)
 Step motor için acil durdurma fonksiyonu.
 
void init_step_motor (void)
 Step motor GPIO pinlerini başlatır.
 
void send_motor_parameters (motor_direction_t direction, uint speed, float revolutions)
 Step motor parametrelerini Core1'e gönderir (yön, hız, devir)
 
char keypadOku (void)
 Analog tuş takımını okur ve basılan tuşu döndürür.
 
bool analog_button_pressed (uint gpio)
 Analog giriş kullanarak bir düğmeye basılıp basılmadığını kontrol eder.
 
bool button_pressed (uint gpio)
 Debounce korumalı temel buton basma kontrolü
 
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.
 
uint init_pwm_pin (uint gpio, float frequency, uint16_t duty)
 Belirli bir GPIO pini için PWM'i başlatır.
 
void init_buzzer_pwm (void)
 Buzzer için özel olarak PWM'i başlatır.
 
void init_rgb_pwm (void)
 RGB LED pinleri için PWM'i başlatır Tüm üç RGB LED kanalını PWM ile yapılandırır.
 
void init_led_pwm (void)
 Standart LED çıkışları için PWM'i başlatır Kırmızı, Sarı ve Yeşil LED'ler için PWM'i yapılandırır.
 
void init_board (void)
 Tüm kart bileşenlerini başlatır.
 
void init_adc (void)
 Analog girişler için ADC'yi başlatır.
 
void init_pwm (void)
 Buzzer ve LED çıkışları için PWM'i başlatır.
 
void init_lcd (void)
 I2C LCD ekranını başlatır.
 
void init_buttons (void)
 Tüm buton GPIO pinlerini başlat.
 
uint16_t read_analog (uint8_t pin)
 Analog değeri okur.
 
void set_led_pwm (uint gpio, uint16_t duty)
 Bir LED için PWM görev döngüsünü ayarlar.
 
void set_pwm_frequency (uint slice_num, float frequency)
 Belirtilen dilim için PWM frekansını ayarlar.
 
double get_frequency (const char *note, int octave)
 Adı ve oktavı verilen bir müzikal notanın frekansını hesaplar.
 
void play_note (float frequency, int duration_ms)
 Belirtilen frekans ve sürede buzzer'da bir nota çalar.
 
void play_notes (const char *notes[][2], int num_notes, int duration)
 Bir dizi müzikal notanın çalınmasını sağlar.
 
void lcd_init (void)
 LCD ekranını başlatır.
 
void lcd_send_byte (uint8_t val, int mode)
 LCD'ye bir byte veri gönderir.
 
void lcd_clear (void)
 LCD ekranını temizler.
 
void lcd_set_cursor (int line, int position)
 LCD imlecini belirtilen konuma ayarlar.
 
void lcd_string (const char *s)
 LCD'ye bir metin dizisi gönderir.
 
void init_ultrasonic (void)
 Ultrasonik sensör pinlerini başlatır.
 
void init_pir (void)
 PIR hareket sensörünü başlatır.
 
float measure_distance (void)
 Ultrasonik sensör kullanarak mesafe ölçer.
 
bool detect_motion (void)
 PIR sensörü tarafından hareket algılanıp algılanmadığını kontrol eder.
 
bool wait_for_motion (uint32_t timeout_ms)
 Zaman aşımı ile hareket algılamayı bekler.
 
float get_average_distance (uint8_t num_samples, uint32_t delay_ms)
 Birden fazla ölçümden ortalama mesafeyi alır.
 

Ayrıntılı tanımlama

Raspberry Pi Pico eğitim kartı için pin tanımlamaları ve yapılandırmaları

Bu başlık dosyası, butonlar, LED'ler, LCD, motorlar ve sensörler dahil olmak üzere çeşitli bileşenler için yapılandırmalar ve fonksiyon prototipleri sağlar.

Yazar
Hakan KILIÇASLAN
Tarih
2024-12-4

Makro Dokümantasyonu

◆ BLT_RX

#define BLT_RX   1

Bluetooth RX pini

◆ BLT_TX

#define BLT_TX   0

Bluetooth TX pini

◆ BUZZER_CLOCK

#define BUZZER_CLOCK   125000000

Buzzer saat frekansı (125 MHz)

◆ BUZZER_DUTY_50

#define BUZZER_DUTY_50   2048

Buzzer %50 görev döngüsü

◆ BUZZER_PIN

#define BUZZER_PIN   10

Buzzer kontrol pini Buzzer çıkışı (PWM)

◆ BUZZER_WRAP

#define BUZZER_WRAP   4095

Buzzer sarma değeri

◆ HIGH

#define HIGH   1

Yüksek seviye

◆ I2C_PORT

#define I2C_PORT   i2c0

I2C portu

◆ I2C_SCL

#define I2C_SCL   21

I2C saat pini

◆ I2C_SDA

#define I2C_SDA   20

I2C veri pini

◆ LCD_2LINE

#define LCD_2LINE   0x08

LCD 2 satır

◆ LCD_5x10DOTS

#define LCD_5x10DOTS   0x04

LCD 5x10 nokta

◆ LCD_8BITMODE

#define LCD_8BITMODE   0x10

LCD 8 bit modu

◆ LCD_ADDR

#define LCD_ADDR   0x27

LCD I2C adresi

◆ LCD_BACKLIGHT

#define LCD_BACKLIGHT   0x08

LCD arka ışık

◆ LCD_BLINKON

#define LCD_BLINKON   0x01

LCD yanıp sönme açık

◆ LCD_CHARACTER

#define LCD_CHARACTER   1

LCD karakter modu

◆ LCD_CLEARDISPLAY

#define LCD_CLEARDISPLAY   0x01

LCD ekranı temizle

◆ LCD_COLS

#define LCD_COLS   16

LCD sütun sayısı

◆ LCD_COMMAND

#define LCD_COMMAND   0

LCD komut modu

◆ LCD_CURSORON

#define LCD_CURSORON   0x02

LCD imleç açık

◆ LCD_CURSORSHIFT

#define LCD_CURSORSHIFT   0x10

LCD imleç kaydırma

◆ LCD_DISPLAYCONTROL

#define LCD_DISPLAYCONTROL   0x08

LCD ekran kontrolü

◆ LCD_DISPLAYMOVE

#define LCD_DISPLAYMOVE   0x08

LCD ekran hareketi

◆ LCD_DISPLAYON

#define LCD_DISPLAYON   0x04

LCD ekran açık

◆ LCD_ENABLE_BIT

#define LCD_ENABLE_BIT   0x04

LCD etkinleştirme biti

◆ LCD_ENTRYLEFT

#define LCD_ENTRYLEFT   0x02

LCD giriş sola

◆ LCD_ENTRYMODESET

#define LCD_ENTRYMODESET   0x04

LCD giriş modu ayarla

◆ LCD_ENTRYSHIFTINCREMENT

#define LCD_ENTRYSHIFTINCREMENT   0x01

LCD giriş kaydırma artışı

◆ LCD_FUNCTIONSET

#define LCD_FUNCTIONSET   0x20

LCD fonksiyon ayarı

◆ LCD_MOVERIGHT

#define LCD_MOVERIGHT   0x04

LCD sağa kaydır

◆ LCD_RETURNHOME

#define LCD_RETURNHOME   0x02

LCD başlangıç konumuna dön

◆ LCD_ROWS

#define LCD_ROWS   2

LCD satır sayısı

◆ LCD_SETCGRAMADDR

#define LCD_SETCGRAMADDR   0x40

LCD CGRAM adres ayarı

◆ LCD_SETDDRAMADDR

#define LCD_SETDDRAMADDR   0x80

LCD DDRAM adres ayarı

◆ LOW

#define LOW   0

Düşük seviye

◆ NOTE_A4

#define NOTE_A4   440.00

La notası frekansı

◆ NOTE_AS4

#define NOTE_AS4   466.16

La diyez notası frekansı

◆ NOTE_B4

#define NOTE_B4   493.88

Si notası frekansı

◆ NOTE_C4

#define NOTE_C4   261.63

Do notası frekansı

◆ NOTE_CS4

#define NOTE_CS4   277.18

Do diyez notası frekansı

◆ NOTE_D4

#define NOTE_D4   293.66

Re notası frekansı

◆ NOTE_DS4

#define NOTE_DS4   311.13

Re diyez notası frekansı

◆ NOTE_E4

#define NOTE_E4   329.63

Mi notası frekansı

◆ NOTE_F4

#define NOTE_F4   349.23

Fa notası frekansı

◆ NOTE_FS4

#define NOTE_FS4   369.99

Fa diyez notası frekansı

◆ NOTE_G4

#define NOTE_G4   392.00

Sol notası frekansı

◆ NOTE_GS4

#define NOTE_GS4   415.30

Sol diyez notası frekansı

◆ PIR_DETECTOR

#define PIR_DETECTOR   19

PIR hareket sensörü pini

◆ PWM_DUTY_MAX

#define PWM_DUTY_MAX   4095

PWM maksimum görev döngüsü

◆ PWM_FREQ

#define PWM_FREQ   1000

PWM frekansı

◆ ULTRA_SONIC_EC

#define ULTRA_SONIC_EC   9

Yankı pini

◆ ULTRA_SONIC_TR

#define ULTRA_SONIC_TR   8

Tetikleme pini

Enümerasyon Tipi Dokümantasyonu

◆ ButtonEvent

Enümeratör
BUTTON_PRESSED 

Buton basıldı

BUTTON_RELEASED 

Buton bırakıldı

BUTTON_HELD 

Buton tutuldu

◆ motor_direction_t

Motor yönü numaralandırması

Enümeratör
CW 

Saat yönünde

CCW 

Saat yönünün tersine

◆ motor_state_t

Motor durumu numaralandırması

Enümeratör
MOTOR_STOPPED 

Motor durmuş durumda

MOTOR_RUNNING 

Motor çalışıyor

MOTOR_ERROR 

Hata durumu

Fonksiyon Dokümantasyonu

◆ analog_button_pressed()

bool analog_button_pressed ( uint  gpio)

Analog giriş kullanarak bir düğmeye basılıp basılmadığını kontrol eder.

Bu fonksiyon, bir analog girişi okur ve ADC değerine göre bir düğmeye basılıp basılmadığını belirler ve debounce koruması içerir.

Parametreler
gpioOkunacak GPIO pin numarası
Döndürdüğü değer
bool düğmeye basılmışsa true, aksi halde false
Not
Minimum 200 ms debounce uygulanır.

◆ 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ı:

◆ detect_motion()

bool detect_motion ( void  )

PIR sensörü tarafından hareket algılanıp algılanmadığını kontrol eder.

Döndürdüğü değer
Hareket algılandıysa true, aksi halde false
Bu fonksiyon için çağırılma şeması:

◆ get_average_distance()

float get_average_distance ( uint8_t  num_samples,
uint32_t  delay_ms 
)

Birden fazla ölçümden ortalama mesafeyi alır.

Parametreler
num_samplesOrtalama alınacak örnek sayısı
delay_msÖrnekler arasındaki gecikme süresi (milisaniye)
Döndürdüğü değer
float Santimetre cinsinden ortalama mesafe veya ölçümler başarısız olursa -1.0
Not
Negatif dönen ölçümler (zaman aşımı) ortalamaya dahil edilmez.
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_frequency()

double get_frequency ( const char *  note,
int  octave 
)

Adı ve oktavı verilen bir müzikal notanın frekansını hesaplar.

Bu fonksiyon, önceden tanımlanmış nota frekansları listesinden temel frekansını bularak ve belirtilen oktava göre ayarlayarak, belirtilen müzikal notanın frekansını belirler.

Parametreler
noteMüzikal notayı temsil eden dize (örn. "A", "C#", "G")
octaveOktav numarasını temsil eden tamsayı
Döndürdüğü değer
Belirtilen oktavdaki notanın frekansı
Not
Referans oktav 4'tür ve diğer oktavlar için frekanslar şu formül kullanılarak hesaplanır: f = f_temel * 2^(oktav_farkı)
Bu fonksiyon için çağırılma şeması:

◆ get_motor_state()

motor_state_t get_motor_state ( void  )

Motorun mevcut durumunu döndürür.

Döndürdüğü değer
motor_state_t MOTOR_STOPPED, MOTOR_RUNNING veya MOTOR_ERROR

◆ init_adc()

void init_adc ( void  )

Analog girişler için ADC'yi başlatır.

Aşağıdakiler için ADC'yi yapılandırır ve GPIO pinlerini başlatır:

  • Tuş takımı (GPIO28)
  • Potansiyometre (GPIO27)
  • Işık sensörü (GPIO26)
Bu fonksiyon için çağırılma şeması:

◆ init_board()

void init_board ( void  )

Tüm kart bileşenlerini başlatır.

Diğer tüm başlatma fonksiyonlarını çağıran ve butonlar ve LED'ler için GPIO pinlerini ayarlayan ana başlatma fonksiyonu

Bu fonksiyon için çağırılma şeması:
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ı:

◆ init_buzzer_pwm()

void init_buzzer_pwm ( void  )

Buzzer için özel olarak PWM'i başlatır.

Bu fonksiyon, buzzer'ın sessiz bir durumda başlamasını sağlamak için başlangıç frekansı ve sıfır görev döngüsü ile buzzer için PWM pinini ayarlar.

Not
Bu fonksiyon, herhangi bir ses üretme girişiminden önce sistem başlatılırken bir kez çağrılmalıdır.
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ init_lcd()

void init_lcd ( void  )

I2C LCD ekranını başlatır.

I2C iletişimini yapılandırır ve LCD ekranını standart 16x2 yapılandırması ile başlatır

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

◆ init_led_pwm()

void init_led_pwm ( void  )

Standart LED çıkışları için PWM'i başlatır Kırmızı, Sarı ve Yeşil LED'ler için PWM'i yapılandırır.

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

◆ init_pir()

void init_pir ( void  )

PIR hareket sensörünü başlatır.

PIR sensör pinini giriş olarak yapılandırır

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

◆ init_pwm()

void init_pwm ( void  )

Buzzer ve LED çıkışları için PWM'i başlatır.

Aşağıdakiler için PWM kanallarını yapılandırır:

  • Buzzer
  • RGB LED çıkışları
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ init_pwm_pin()

uint init_pwm_pin ( uint  gpio,
float  frequency,
uint16_t  duty 
)

Belirli bir GPIO pini için PWM'i başlatır.

Parametreler
gpioPWM için başlatılacak GPIO pin numarası
frequencyBaşlangıç PWM frekansı Hz cinsinden (uygulanabilirse, varsayılan için 0)
dutyBaşlangıç görev döngüsü (0-PWM_DUTY_MAX)
Döndürdüğü değer
uint Yapılandırılmış PWM dilim numarası
Bu fonksiyon için çağırılma şeması:

◆ init_rgb_pwm()

void init_rgb_pwm ( void  )

RGB LED pinleri için PWM'i başlatır Tüm üç RGB LED kanalını PWM ile yapılandırır.

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

◆ init_step_motor()

void init_step_motor ( void  )

Step motor GPIO pinlerini başlatır.

Bu fonksiyon, 4 fazlı bir step motorunu kontrol etmek için kullanılan GPIO pinlerini yapılandırır. Her pini başlatır ve motor bobinlerini sürmek için çıkış olarak ayarlar.

Not
motor_pins[] dizisinin step motorunun 4 fazı için geçerli GPIO pin numaralarını içerdiği varsayılır
Bu fonksiyon için çağırılma şeması:

◆ init_ultrasonic()

void init_ultrasonic ( void  )

Ultrasonik sensör pinlerini başlatır.

Tetikleme pinini çıkış ve yankı pinini giriş olarak yapılandırır

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

◆ is_motor_running()

bool is_motor_running ( void  )

Motorun çalışıp çalışmadığını kontrol eder.

Döndürdüğü değer
true motor çalışıyorsa, aksi halde false

◆ keypadOku()

char keypadOku ( void  )

Analog tuş takımını okur ve basılan tuşu döndürür.

Bu fonksiyon, KEYPAD pinine (GPIO28) bağlı tuş takımından analog değeri okur ve ADC değerini karşılık gelen tuş takımı karakterlerine eşleştirir. Tuş takımı düğmeleri aşağıdaki matris şeklinde düzenlenmiştir: | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | * | 0 | # |

Döndürdüğü değer
char Basılan tuşa karşılık gelen karakter, hiçbir tuşa basılmamışsa 0
char k = keypadOku();
if (k) {
char msg[16];
snprintf(msg, sizeof(msg), "Key:%c", k);
lcd_string(msg);
}
char keypadOku(void)
Analog tuş takımını okur ve basılan tuşu döndürür.
Definition keypad.c:33
void lcd_set_cursor(int line, int position)
LCD imlecini belirtilen konuma ayarlar.
Definition lcd_i2c.c:64
void lcd_string(const char *s)
LCD'ye bir metin dizisi gönderir.
Definition lcd_i2c.c:83
void lcd_clear(void)
LCD ekranını temizler.
Definition lcd_i2c.c:54
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ lcd_clear()

void lcd_clear ( void  )

LCD ekranını temizler.

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

◆ lcd_init()

void lcd_init ( void  )

LCD ekranını başlatır.

LCD ekranını 4-bit mod, 2 satır ve 5x8 yazı tipi ile yapılandırır. Ayrıca ekranı temizler ve imleci başlangıç konumuna getirir.

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

◆ lcd_send_byte()

void lcd_send_byte ( uint8_t  val,
int  mode 
)

LCD'ye bir byte veri gönderir.

Parametreler
valGönderilecek byte
modeKomutlar için LCD_COMMAND, karakter verisi için LCD_CHARACTER
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ lcd_set_cursor()

void lcd_set_cursor ( int  line,
int  position 
)

LCD imlecini belirtilen konuma ayarlar.

Parametreler
lineSatır numarası (0 veya 1)
positionKarakter pozisyonu (0-15)
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ lcd_string()

void lcd_string ( const char *  s)

LCD'ye bir metin dizisi gönderir.

Parametreler
sNull ile sonlandırılmış gönderilecek metin
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ measure_distance()

float measure_distance ( void  )

Ultrasonik sensör kullanarak mesafe ölçer.

Döndürdüğü değer
float Santimetre cinsinden mesafe veya ölçüm başarısız olursa -1.0
Not
Ölçüm aralığı tipik olarak ~2 cm ile ~450 cm arasındadır. Zaman aşımlarında -1.0 döner.
Ölçüm öncesi init_ultrasonic() çağrılmış olmalıdır.
Bu fonksiyon için çağırılma şeması:

◆ play_note()

void play_note ( float  frequency,
int  duration_ms 
)

Belirtilen frekans ve sürede buzzer'da bir nota çalar.

Bu fonksiyon, PWM kullanarak bir nota çalar ve nota çalma işlemi tamamlandıktan sonra uygun temizleme işlemlerini gerçekleştirir. Parametre doğrulaması içerir ve notalar arası temiz geçişleri sağlar.

Parametreler
frequencyÇalınacak notanın Hertz cinsinden frekansı
duration_msNotanın çalınması gereken süre (milisaniye cinsinden)
Not
Fonksiyon, notaların birbirine karışmasını önlemek ve temiz ses üretimini sağlamak için her notadan sonra küçük bir gecikme içerir
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ play_notes()

void play_notes ( const char *  notes[][2],
int  num_notes,
int  duration 
)

Bir dizi müzikal notanın çalınmasını sağlar.

Bu fonksiyon, bir dizi notanın üzerinden yineleyerek her bir nota için frekansı hesaplar ve belirtilen sürede çalar.

Parametreler
notesHer elemanı {nota, oktav} olan iki boyutlu dize dizisi. Örn. {"C","4"}, {"D#","4"}
num_notesDizideki nota sayısı
durationHer bir notanın çalma süresi (ms)
Not
Nota adı karşılaştırması önekle yapılır; diyez notasyonu kullanın ("Db" yerine "C#").
static const char *MELODY[][2] = {{"C","4"},{"E","4"},{"G","4"}};
play_notes(MELODY, (int)(sizeof(MELODY)/sizeof(MELODY[0])), 200);
void play_notes(const char *notes[][2], int num_notes, int duration)
Bir dizi müzikal notanın çalınmasını sağlar.
Definition buzzer.c:190
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ read_analog()

uint16_t read_analog ( uint8_t  pin)

Analog değeri okur.

Parametreler
pinOkunacak ADC pin numarası
Döndürdüğü değer
uint16_t Okunan analog değer (0-4095 arası)
Bu fonksiyon için çağırılma şeması:

◆ send_motor_parameters()

void send_motor_parameters ( motor_direction_t  direction,
uint  speed,
float  revolutions 
)

Step motor parametrelerini Core1'e gönderir (yön, hız, devir)

Parametreler
directionMotor yönü
speedAdım/saniye
revolutionsDevir sayısı (float)
Bu fonksiyon için çağırılma şeması:

◆ set_led_pwm()

void set_led_pwm ( uint  gpio,
uint16_t  duty 
)

Bir LED için PWM görev döngüsünü ayarlar.

Parametreler
gpioLED'in GPIO pin numarası
dutyGörev döngüsü değeri (0-PWM_DUTY_MAX)
Bu fonksiyon için çağırılma şeması:

◆ set_pwm_frequency()

void set_pwm_frequency ( uint  slice_num,
float  frequency 
)

Belirtilen dilim için PWM frekansını ayarlar.

Bu fonksiyon, pico_training_board.h'den önceden tanımlanmış sabitleri kullanarak istenen frekans için PWM dilimini yapılandırır. İstenen frekansa ulaşmak için uygun bölücü değerlerini hesaplar.

Parametreler
slice_numYapılandırılacak PWM dilim numarası
frequencyİstenen frekans (Hz cinsinden)
Not
Fonksiyon, istenen frekansa en yakın eşleşmeyi elde etmek için bölücü değerlerini otomatik olarak ayarlar
Bu fonksiyon için çağırılma şeması:

◆ step_stop()

void step_stop ( void  )

Step motor için acil durdurma fonksiyonu.

Bu fonksiyon, step motorunu acil olarak durdurur:

  • Acil durdurma bayrağını ayarlar
  • Motor durumunu durdurulmuş olarak günceller
  • Tüm motor bobinlerini enerjisiz hale getirir (GPIO pinlerini düşük seviyeye ayarlar)
Not
motor_pins[] dizisinin step motorunun 4 fazı için geçerli GPIO pin numaralarını içerdiği varsayılır
Uyarı
Bu fonksiyon, motoru yavaşlatmadan hemen durdurur, bu da mekanik strese neden olabilir
Bu fonksiyon için çağırılma şeması:

◆ step_turn()

void step_turn ( motor_direction_t  direction,
uint  speed,
float  revolutions 
)

Belirtilen yön, hız ve devir sayısı ile step motor dönüşünü kontrol eder.

Parametreler
directionMotor dönüş yönü (CW veya CCW)
speedMotor hızı (adım/saniye)
revolutionsYapılacak tam devir sayısı

Bu fonksiyon, yarım adım modu (her devir için 8 adım) kullanarak bir step motoru kontrol eder. Motor durumu yönetimi, acil durdurma işlevselliği ve hassas zamanlama kontrolü sağlar. Motor zaten çalışıyorsa fonksiyon başlamaz.

Not
Fonksiyon, motor_pins[] dizisinde tanımlanan GPIO pinlerini ve step_sequence[][] dizisinde tanımlanan adım sekanslarını kullanır.

Kullanılan global değişkenler:

  • motor_state: Motorun mevcut durumu
  • emergency_stop: Acil durdurma bayrağı
  • motor_pins[]: Motor kontrolü için GPIO pin numaraları dizisi
  • step_sequence[][]: Adım sekans desenlerini içeren dizi
Bu fonksiyon için çağırılma şeması:
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ı:

◆ wait_for_motion()

bool wait_for_motion ( uint32_t  timeout_ms)

Zaman aşımı ile hareket algılamayı bekler.

Parametreler
timeout_msBeklenecek maksimum süre (milisaniye), 0 ise zaman aşımı yok
Döndürdüğü değer
Hareket algılandıysa true, zaman aşımı oluştuysa false
if (wait_for_motion(5000)) {
// 5 saniye içinde hareket algılandı
} else {
// zaman aşımı
}
bool wait_for_motion(uint32_t timeout_ms)
Zaman aşımı ile hareket algılamayı bekler.
Definition sensors.c:111
Bu fonksiyon için çağırılma şeması: