Pico Eğitim Kartı
 
Yüklüyor...
Arıyor...
Eşleşme Yok
pico_training_board.h
Bu dosyanın dokümantasyonuna git.
1
9#ifndef PICO_TRAINING_BOARD_H
10#define PICO_TRAINING_BOARD_H
11
12/* Standart kütüphaneler */
13#include <stdio.h>
14#include <math.h>
15#include <string.h>
16#include <limits.h>
17
18/* Pico-SDK kütüphaneleri */
19#include "hardware/gpio.h"
20#include "pico/multicore.h"
21#include "pico/stdlib.h"
22#include "hardware/pwm.h"
23#include "hardware/adc.h"
24#include "hardware/i2c.h"
25
30#define KEYPAD 28
31#define POT_1 27
32#define LDR_1 26
39#define BUTTON_UP 5
40#define BUTTON_OK 6
41#define BUTTON_DOWN 7
48#define LED_RED 4
49#define LED_YELLOW 3
50#define LED_GREEN 2
51#define RGB_R 16
52#define RGB_G 17
53#define RGB_B 18
59#define BUZZER_PIN 10
65#define STEP_MOTOR_A1 11
66#define STEP_MOTOR_A2 12
67#define STEP_MOTOR_B1 13
68#define STEP_MOTOR_B2 14
69#define STEP_DELAY_MIN 1000
70#define STEP_DELAY_MAX 10000
71#define STEPS_PER_REV 2048
82
86typedef enum {
88 CCW
90
91// Motor kontrol fonksiyon prototipleri
92bool is_motor_running(void);
94void step_turn(motor_direction_t direction, uint speed, float revolutions);
95void step_stop(void);
96void init_step_motor(void);
97void send_motor_parameters(motor_direction_t direction, uint speed, float revolutions);
98
99// Ultrasonik Sensör
100#define ULTRA_SONIC_TR 8
101#define ULTRA_SONIC_EC 9
103// Bluetooth Modülü
104#define BLT_TX 0
105#define BLT_RX 1
107// PIR Sensör
108#define PIR_DETECTOR 19
110// I2C LCD Ekran (Adres 0x27)
111#define I2C_SDA 20
112#define I2C_SCL 21
113#define LCD_ADDR 0x27
114#define I2C_PORT i2c0
115#define LCD_ROWS 2
116#define LCD_COLS 16
118// LCD için modlar
119#define LCD_CHARACTER 1
120#define LCD_COMMAND 0
122// LCD kontrol bayrakları
123#define LCD_CLEARDISPLAY 0x01
124#define LCD_RETURNHOME 0x02
125#define LCD_ENTRYMODESET 0x04
126#define LCD_DISPLAYCONTROL 0x08
127#define LCD_CURSORSHIFT 0x10
128#define LCD_FUNCTIONSET 0x20
129#define LCD_SETCGRAMADDR 0x40
130#define LCD_SETDDRAMADDR 0x80
132// LCD giriş modu bayrakları
133#define LCD_ENTRYSHIFTINCREMENT 0x01
134#define LCD_ENTRYLEFT 0x02
136// LCD ekran kontrol bayrakları
137#define LCD_BLINKON 0x01
138#define LCD_CURSORON 0x02
139#define LCD_DISPLAYON 0x04
141// LCD ekran/imleç kaydırma bayrakları
142#define LCD_MOVERIGHT 0x04
143#define LCD_DISPLAYMOVE 0x08
145// LCD fonksiyon ayar bayrakları
146#define LCD_5x10DOTS 0x04
147#define LCD_2LINE 0x08
148#define LCD_8BITMODE 0x10
150// LCD arka ışık kontrolü
151#define LCD_BACKLIGHT 0x08
152#define LCD_ENABLE_BIT 0x04
154// Genel tanımlar
155#define HIGH 1
156#define LOW 0
158// PWM tanımlamaları
159#define PWM_FREQ 1000
160#define PWM_DUTY_MAX 4095
162// Buzzer için PWM ayarları
163#define BUZZER_CLOCK 125000000
164#define BUZZER_WRAP 4095
165#define BUZZER_DUTY_50 2048
167// Nota frekans tanımlamaları
168#define NOTE_C4 261.63
169#define NOTE_CS4 277.18
170#define NOTE_D4 293.66
171#define NOTE_DS4 311.13
172#define NOTE_E4 329.63
173#define NOTE_F4 349.23
174#define NOTE_FS4 369.99
175#define NOTE_G4 392.00
176#define NOTE_GS4 415.30
177#define NOTE_A4 440.00
178#define NOTE_AS4 466.16
179#define NOTE_B4 493.88
181// Fonksiyon prototipleri
182char keypadOku(void);
183bool analog_button_pressed(uint gpio);
184
185// Buton olay türleri
192
193// Buton fonksiyon prototipleri
194bool button_pressed(uint gpio);
195bool check_button_event(uint gpio, ButtonEvent event);
196uint32_t get_button_hold_duration(uint gpio);
197uint wait_for_button_press(uint32_t timeout_ms);
198
199// Ek fonksiyon prototipleri
200// PWM fonksiyon prototipleri
201uint init_pwm_pin(uint gpio, float frequency, uint16_t duty);
202void init_buzzer_pwm(void);
203void init_rgb_pwm(void);
204void init_led_pwm(void);
205void init_board(void); // Tüm kart bileşenlerini başlat
206void init_adc(void); // ADC'yi başlat
207void init_pwm(void); // Tüm PWM'leri başlat
208void init_lcd(void); // LCD'yi başlat
209void init_buttons(void);
210
211uint16_t read_analog(uint8_t pin);
212
213void set_led_pwm(uint gpio, uint16_t duty); // LED PWM görev döngüsünü ayarla
214void set_pwm_frequency(uint slice_num, float frequency);
215double get_frequency(const char *note, int octave);
216void play_note(float frequency, int duration_ms);
217void play_notes(const char *notes[][2], int num_notes, int duration);
218
219// LCD fonksiyon prototipleri
220void lcd_init(void);
221void lcd_send_byte(uint8_t val, int mode);
222void lcd_clear(void);
223void lcd_set_cursor(int line, int position);
224void lcd_string(const char *s);
225
226// Sensör fonksiyon prototipleri
227void init_ultrasonic(void);
228void init_pir(void);
229float measure_distance(void);
230bool detect_motion(void);
231bool wait_for_motion(uint32_t timeout_ms);
232float get_average_distance(uint8_t num_samples, uint32_t delay_ms);
233
234#endif // PICO_TRAINING_BOARD_H
float revolutions
Definition main.c:139
uint wait_for_button_press(uint32_t timeout_ms)
Herhangi bir buton basılmasını bekle.
Definition buttons.c:180
ButtonEvent
Definition pico_training_board.h:187
@ BUTTON_HELD
Definition pico_training_board.h:190
@ BUTTON_RELEASED
Definition pico_training_board.h:189
@ BUTTON_PRESSED
Definition pico_training_board.h:188
bool detect_motion(void)
PIR sensörü tarafından hareket algılanıp algılanmadığını kontrol eder.
Definition sensors.c:26
uint32_t get_button_hold_duration(uint gpio)
Bir butonun ne kadar süre al.
Definition buttons.c:157
uint init_pwm_pin(uint gpio, float frequency, uint16_t duty)
Belirli bir GPIO pini için PWM'i başlatır.
Definition init_functions.c:46
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.
Definition led_control.c:23
void lcd_send_byte(uint8_t val, int mode)
LCD'ye bir byte veri gönderir.
Definition lcd_i2c.c:41
void play_note(float frequency, int duration_ms)
Belirtilen frekans ve sürede buzzer'da bir nota çalar.
Definition buzzer.c:160
void init_pwm(void)
Buzzer ve LED çıkışları için PWM'i başlatır.
Definition init_functions.c:31
void init_pir(void)
PIR hareket sensörünü başlatır.
Definition sensors.c:15
float get_average_distance(uint8_t num_samples, uint32_t delay_ms)
Birden fazla ölçümden ortalama mesafeyi alır.
Definition sensors.c:134
void set_led_pwm(uint gpio, uint16_t duty)
Bir LED için PWM görev döngüsünü ayarlar.
Definition led_control.c:36
void lcd_init(void)
LCD ekranını başlatır.
Definition lcd_i2c.c:95
bool button_pressed(uint gpio)
Debounce korumalı temel buton basma kontrolü
Definition buttons.c:37
bool check_button_event(uint gpio, ButtonEvent event)
Çeşitli zamanlama kontrolleriyle buton basma kontrolü
Definition buttons.c:106
motor_direction_t
Motor yönü numaralandırması
Definition pico_training_board.h:86
@ CCW
Definition pico_training_board.h:88
@ CW
Definition pico_training_board.h:87
double get_frequency(const char *note, int octave)
Adı ve oktavı verilen bir müzikal notanın frekansını hesaplar.
Definition buzzer.c:132
void init_step_motor(void)
Step motor GPIO pinlerini başlatır.
Definition stepper.c:52
void step_stop(void)
Step motor için acil durdurma fonksiyonu.
Definition stepper.c:91
bool is_motor_running(void)
Motorun çalışıp çalışmadığını kontrol eder.
Definition stepper.c:65
void init_board(void)
Tüm kart bileşenlerini başlatır.
Definition init_functions.c:112
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
float measure_distance(void)
Ultrasonik sensör kullanarak mesafe ölçer.
Definition sensors.c:59
uint16_t read_analog(uint8_t pin)
Analog değeri okur.
Definition keypad.c:108
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.
Definition led_control.c:12
void init_lcd(void)
I2C LCD ekranını başlatır.
Definition init_functions.c:77
void init_adc(void)
Analog girişler için ADC'yi başlatır.
Definition init_functions.c:17
motor_state_t
Motor durumu numaralandırması
Definition pico_training_board.h:77
@ MOTOR_STOPPED
Definition pico_training_board.h:78
@ MOTOR_RUNNING
Definition pico_training_board.h:79
@ MOTOR_ERROR
Definition pico_training_board.h:80
bool analog_button_pressed(uint gpio)
Analog giriş kullanarak bir düğmeye basılıp basılmadığını kontrol eder.
Definition keypad.c:81
void set_pwm_frequency(uint slice_num, float frequency)
Belirtilen dilim için PWM frekansını ayarlar.
Definition buzzer.c:99
void init_buzzer_pwm(void)
Buzzer için özel olarak PWM'i başlatır.
Definition buzzer.c:81
motor_state_t get_motor_state(void)
Motorun mevcut durumunu döndürür.
Definition stepper.c:74
void send_motor_parameters(motor_direction_t direction, uint speed, float revolutions)
Step motor parametrelerini Core1'e gönderir (yön, hız, devir)
Definition main.c:147
void lcd_clear(void)
LCD ekranını temizler.
Definition lcd_i2c.c:54
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
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.
Definition stepper.c:120
char keypadOku(void)
Analog tuş takımını okur ve basılan tuşu döndürür.
Definition keypad.c:33
void init_ultrasonic(void)
Ultrasonik sensör pinlerini başlatır.
Definition sensors.c:40
bool wait_for_motion(uint32_t timeout_ms)
Zaman aşımı ile hareket algılamayı bekler.
Definition sensors.c:111
void init_buttons(void)
Tüm buton GPIO pinlerini başlat.
Definition buttons.c:58