Daha önceden gösterdiğimiz örnek ile en başından itibaren nasıl proje oluşturduğumuzu hemen ardından da Clock ayarlarının ve Debug (Hata ayıklama) ayarlarının nasıl yapıldığını göstermiştik. Yine aynı konfigürasyonları gerçekleştirdikten sonra A5 pinini GPIO_Output olarak seçiyorum. Burada göz önünde bulundurulması gereken önemli bir faktör de hem işlemciden fazla akım çekilmesini engellemek hem de led diyotun fazla akım çekerek kendini bozmasını engellemek adına doğru değerlikli bir direnç seçimidir. Aşağıdaki tabloda DIP ledlerin voltaj düşüm tablosu ve akım tablosu verilmiştir.
Renk |
Vf (Volt) |
Tipik Akım (mA) |
|
LED Boyutu |
Tipik Akım (If) |
Maksimum Akım |
Kırmızı |
1.8 - 2.2V |
10 - 20 mA |
|
3mm LED |
10 - 20 mA |
20 - 25 mA |
Yeşil |
2.0 - 3.2V |
10 - 20 mA |
|
5mm LED |
10 - 20 mA |
20 - 30 mA |
Mavi |
3.0 - 3.4V |
10 - 20 mA |
|
|||
Beyaz |
3.0 - 3.4V |
10 - 20 mA |
|
Bu tablodaki veriler göz önüne alındığında Kırmızı renkli bir diyot için Vf değerini 2 volt olarak alırsak led diyottan geçecek akım değerimiz aşağıda formülize edilmiştir.
GPIO Output olarak
seçtikten sonra ise pinimiz artık Out çıkışı olarak konfigüre edilmiş
olacaktır. Bu Out çıkışı işlemcinin VDD güç girişine bağlı olan besleme
gerilimi değer aralığı kadar (3.0 - 3.3) gerilim çıkışını verebilmektedir.
Sadece 1 ve 0 çıkışlarıyla yani 3.3V ve 0 Volt çıkışları verebilmektedir. Devre
bağlantı şeması aşağıdaki görseldeki gibidir.
Projenin
Main.c kodu
/* Infinite loop */
/* USER CODE BEGIN
WHILE */
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
HAL_Delay(500);
/* USER CODE END
WHILE */
/* USER CODE BEGIN
3 */
}
/* USER CODE END 3 */
Sırayla 5 led yakılması örneği
Bu örneğimizde
işlemcinin A1, A2, A3, A4, ve A5 pinlerine seri bağlı 5 adet 330 ohm’luk direnç
ve direncin diğer ucuna da bağlı DIP Ledlerin Anode ucuna bağlanmış Catode ucu
da işlemcinin GND’sine bağlanmıştır. Yazmayı amaçladığımız kod ise sırasıyla
A1’den başlayarak A5’e kadar tüm ledler 500 milisaniye aralıklar ile yanacak
daha sonra ise yine 250 milisaniye aralıklarla A5’den A1’e doğru olarak
sönecektir.
/* USER CODE BEGIN
WHILE */
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
HAL_Delay(250);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
HAL_Delay(250);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
HAL_Delay(250);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
HAL_Delay(250);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
HAL_Delay(250);
/* USER CODE END
WHILE */
/* USER CODE BEGIN
3 */
}
Yorumlar
Yorum Gönder