Arduino Aracılığı ile Led Yakan Character Device Uygulaması
Arduino cihazına sinyal gönderen ve cihaz
aracılığı ile breadboard üzerindeki ledleri yakan bir character device
uygulaması yazılacaktır. Ledler yerine alternatif olarak LCD panel de
kullanılabilir.
Kullanılan Malzemeler:
- 1 adet Arduino Genuino Uno
- 1 adet LCD Ekran (16x2)
- 1 adet Breadboard
- 1 adet Potansiyometre
- 1 adet 220ohm direnç
- Bağlantı
kabloları
Devre Bağlantıları:
LCD ve Arduino arasındaki bağlantı aşağıdaki gibidir.
- LCD RS pin --> digital pin 12
- LCD Enable pin --> digital pin 11
- LCD D4 pin --> digital pin 5
- LCD D5 pin --> digital pin 4
- LCD D6 pin --> digital pin 3
- LCD D7 pin --> digital pin 2
Ek olarak 10k potansiyometre +5V ve toprak girişlerine, çıktısı LCD ekranın V0 pin’ine bağlanır. 220 ohm resistor ise arka ışığı ayarlamada kullanılır.
Devre Şeması
KODLAR
Arduino
Taslağı
C
Program Kodu( unocom.c )
Character
Device Driver Kodu( FormatDev.c )
Makefile
Uygulama
1-) Arduino cihazı ile seri port üzerinden bağlantı kurulur. Bu
sebeple öncelikle cihazın seri porttan okuma yapmasını sağlayacak taslak kodu
Arduuino IDE arayüzü ile cihaza gönderilmelidir. Bu noktadan sonra IDE’ye
ihtiyaç duyulmaz.
2-)Terminal aracılığı ile Makefile ve C kaynak
kodlarının bulunduğu dizine girilir.
# make
Komutu ile character device driver modülü ve c
programı derlenir.
3-)Aynı dizinde
# sudo insmod FormatDev.ko
Komutu ile modül eklenir.
# dmesg
Komutu ile kontrol edilebilir.
4-)Bu aşamadaki
komutların çalışması için super user olarak
girilmesi gerekmektedir. Dolayısıyla önce
# su
Komutu ve UNIX şifresi
girilir.
# mknod /dev/FormatDev c 91 3
Komutu ile majör(modül
kaynak kodundan alınır) ve minör(keyfidir) numaralarını belirterek bir
character device oluşturulur. Bu character üzerinden okuma ve yazma
yapılabilmesi için gerekli izinler verilmelidir.
# chmod a+rw /dev/FormatDev
Komutu ile cihaza
gerekli izinler verilir.
(Opsiyonel: # exit komutu ile su’dan çıkış yapılabilir.)
5-)#cat /proc/modules | grep Format
#cat
/proc/devices | grep Format
Komutları ile de cihazın eklenip
eklenmediği kontrol edilebilir.
6-)Terminal aracılığı
ile C kaynak kodu derlenir ve çalıştırılabilir dosya (executable) hâline
getirilir.
# gcc –o parname param.c
Komutu param.c
dosyasını derler, daha sonra kaynak kod ile aynı dizinde “parname” adlı
çalıştırılabilir bir dosya oluşturur.
7-)# ./unocom Sistem Prog.
Komutu ile terminal
üzerinden dosya çalıştırılır. Aradan yukarıda da belirtildiği gibi 5 saniye
geçtikten sonra argüman olarak girilen metin LCD ekranından okunabilir.
Farklı metin denemeleri:



Eğer argüman girilmez ise program aşağıdaki hata ile sonlanır.
Görüldüğü gibi C programı, character device
sürücüsü ve Arduino cihazı sorunsuz bir şekilde iletişim kurmaktadır. Dolayısı
ile yazma haricinde okuma gibi dosya işlemleri de bu seri cihaz üzerinde
gerçekleştirilebilir.
8-)#sudo rm /dev/FormatDev
Komutu ile oluşturulan
character device dosyası kaldırılabilir.
#sudo rmmod FormatDev.ko
Komutu ile de eklenen
modül kaldırılır ve character device kaydı sistemden silinir.
# dmesg
Komutu ile kontrol
edilebilir.
C Programı, Character Device Driver ve Arduino Veri
Akış Diyagramı
Ek Bilgiler
- Metni LCD ekranının üst
satırına yazdırmak için taslak kodunda 19. satırın
# lcd.setCursor(0,0)
şeklinde değiştirilmesi
yeterlidir.
- # lcd.clear()
Komutu ile LCD ekranı
temizlenebilir.
- Daha önceki
ödevimizdeki ilgili kod bloğu kullanılarak Arduino’nun LCD ekranına
matematiksel 4 işlem sonucu yazması sağlanabilir.
Kaynakça
-
https://chrisheydrick.com/2012/06/12/how-to-read-serial-data-from-an-arduino-in-linux-with-c-part-1/ (All Parts)
Ödev Grup Arkadaşlarım: