Python Arayüz ile Arduino Sensör Verisi Okuma
Bu uygulamada Arduino'nun potansiyometreden okuduğu ve seri port ekranında yazdırdığı değerin Python arayüzde görüntülenmesi için Python ve Arduino kodları verilecektir.
Python ile Arduino mikrodenetleyici kartının bağlı olduğu seri portu kontrol edebilmek için PySerial modülünün kurulması gerekir. Bu kütüphane kullanılarak Python ile seri port kontrolü yapılabilir. Python programlama dilinde oyun ve kullanıcı arayüzleri oluşturmak için PyGame modülü yaygın olarak kullanılır. Bu modüllerin kurulması için aşağıdaki işlem adımları takip edilir:
1. Kullanılan Python editörünün komut satırı (terminal) açılır. Alternatif olarak Windows komut istemi veya Windows PowerShell açılır.
2. pip install pyserial
3. pip install pygame
komutları verilir.
Editör olarak Python IDLE Shell ve Visual Studio Code kullanılmıştır. Visual Studio Code editörü kullanılacaksa Python eklentisinin kurulması gerekir. Kod açıklamaları açıklama (yorum) satırı olarak verilmiştir.
Bu uygulamada Arduino'nun potansiyometreden okuduğu ve seri port ekranında yazdırdığı değer, Python arayüzde görüntülenmiştir. Pygame modülü kullanılarak 800x600 ölçüsünde bir pencere oluşturularak seri porttan okunan değer 1 sn aralıklarla görüntülenmiştir. Program çıktısı aşağıda verilmiştir.

Görsel 1: Python arayüz (program çıktısı)
Programda kullanılan arkaresim.png ile pencere ikonu için kullanılan sensor.png dosyaları aşağıdaki bağlantıya tıklanarak indirilebilir. Bu dosyalar Python kodunun bulunduğu klasör içerisinde bulunmalıdır.
Uygulamaya Ait Şema, Bağlantı Şekli ve Görseller

Görsel 2: Arduino Uno ile sensör verisi okuma devre şeması
Malzeme Listesi
|
Sıra No |
Adı |
Özelliği |
Miktarı |
|
1 |
Arduino Uno R3 |
- |
1 Adet |
|
2 |
Potansiyometre |
10k |
1 Adet |
|
3 |
Breadboard |
830 pin |
1 Adet |
|
4 |
Jumper kablo |
Erkek-erkek |
- |
Uygulamaya Ait Python Kodu
"""
Uygulama Adı : Python arayüz ile Arduino sensör verisi okuma
Açıklama :
Tarih : 25 Nisan 2026
Yazan : İlhan DEMİR
"""
import pygame, os, time, serial
#pygame, os, time ve serial modülleri eklendi.
pygame.init()
#pygame modülü başlatıldı.
#Arduino kartının bağlı olduğu seri port ayarları yapıldı.
#Haberleşme portu com3, haberleşme hızı 9600 baud
#port=serial.Serial("com3",9600)
port=serial.Serial()
port.port="com3"
port.baudrate=9600
port.open()
print("Port açıldı.")
#port bilgileri konsoldan yazdırıldı.
print(port)
print()
#Pencere arka plan görseli tanımlandı.
arkaResim=pygame.image.load("arkaresim.png")
ekranBoyutu=(800,600)
#Ekran boyutu demet veri tipinde tanımlandı.
#Pencere 800x600 ölçülerinde oluşturuldu.
ekran=pygame.display.set_mode(ekranBoyutu)
#ekran=pygame.display.set_mode((800,600))
pygame.display.set_caption("Arduino Sensör Verisi Okuma")
#Pencere için başlık tanımlandı.
iconDosya= "sensor.png"
#sensor.png dosyasının aynı klasörde olup olmadığının kontrolü yapıldı.
if os.path.exists(iconDosya):
#Pencere ikonu yüklendi.
icon = pygame.image.load(iconDosya)
pygame.display.set_icon(icon)
print("Pencere ikonu başarıyla yüklendi.")
else:
print(f"Uyarı: '{iconDosya}' dosyası bulunamadı. Varsayılan icon kullanılıyor.")
#Arayüz için font arial ve font boyutu piksel olarak tanımlandı.
font1=pygame.font.SysFont("arial",64)
font2=pygame.font.SysFont("arial",128)
font3=pygame.font.SysFont("arial",20)
durum=True;
while durum:
#Bu döngü olmazsa pencere açıldığı gibi saniyeler içinde kapanır.
#Döngü sayesinde X butonuna basana kadar pencere aktif kalır.
for olay in pygame.event.get():
if olay.type==pygame.QUIT:
durum=False
#com3 portu okunarak string türüne çevrildi ve değişkene yüklendi.
okunanVeri=str(port.readline())
#okunanVeri indekslendi. Veri 2.indeks dahil, son 5 indeks hariç düzenlendi.
#Sadece veri görüntülendi.
#b'veri\r\n' şeklinde okunan veride sadece veri kısmı görüntülendi.
okunanVeri=okunanVeri[2:int(len(okunanVeri)-5)]
print("Okunan veri:",okunanVeri)
#"Okunan Veri" karakter dizisi siyah renkte render yapıldı.
yazi1=font1.render("Okunan Veri",True,(0,0,0))
#"Okunan Veri" karakter dizisi için konum ayarlandı.
yazi1Koordinat=yazi1.get_rect()
yazi1Koordinat.topleft=(265,175)
#okunanVeri değişken içeriği siyah renkte render yapıldı.
yazi2=font2.render(okunanVeri,True,(0,0,0))
#okunanVeri değişken içeriği için konum ayarlandı.
yazi2Koordinat=yazi2.get_rect()
yazi2Koordinat.topleft=(325,260)
#"www.beyzemiter.com" karakter dizisi siyah renkte render yapıldı.
yazi3=font3.render("www.beyzemiter.com",True,(0,0,0))
#"www.beyzemiter.com" karakter dizisi için konum ayarlandı.
yazi3Koordinat=yazi3.get_rect()
yazi3Koordinat.topleft=(330,560)
#arkaResim pencereyi dolduracak şekilde ayarlandı.
ekran.blit(arkaResim,(0,0))
#yazi1, yazi2 ve yazi3 değişken içerikleri ekrana gönderildi.
ekran.blit(yazi1,yazi1Koordinat)
ekran.blit(yazi2,yazi2Koordinat)
ekran.blit(yazi3,yazi3Koordinat)
#Yapılan değişiklikler ekrana yansıtıldı.
pygame.display.flip()
#pygame.display.update()
time.sleep(1)
#1 snde bir okuma yapmak için bekle.
#pygame modülü kapatıldı.
pygame.quit()
Uygulamaya Ait Arduino Kodu
/*
Uygulama Adı : Potansiyometre değerini okuma
Açıklama :
Tarih : 18 Nisan 2026
Yazan : İlhan DEMİR
*/
#define POTPIN A0
void setup() {
Serial.begin(9600);
//Donanımsal seri port ile haberleşmeyi başlat.
}
void loop() {
int potDeger=analogRead(POTPIN);
Serial.println(potDeger);
delay(1000);
}
Bu internet sitesi içeriğinde yer alan tüm eserler (yazı, resim, görüntü, fotoğraf, video, müzik vb.) İlhan DEMİR'e ait olup, 5846 sayılı Fikir ve Sanat Eserleri Kanunu ve 5237 sayılı Türk Ceza Kanunu kapsamında korunmaktadır. Bu hakları ihlal eden kişiler, 5846 sayılı Fikir ve Sanat eserleri Kanunu ve 5237 sayılı Türk Ceza Kanununda yer alan hukuki ve cezai yaptırımlara tabi olurlar. İlhan DEMİR, yasal işlem başlatma hakkına sahiptir.

BİR CEVAP YAZ