Python'dan Serial Porta Veri Gönderme ve Okuma

Kodla Büyü

emrahsahan

Süper Üye
Süper Üye
Seçkin Üye
Mesajlar
1,499
Arkadaşlar Python masaüstü uygulamasından serial porta veri göndermek ve arduinoda serial porttan veriyi okuyarak işlem yapmak istiyorum. Bu şekilde çalışma yapan var mı?Örneğin Pythondan 1 verisini göndreceğim. Arduino serial portan 1 verisini okursa işlem yapacak led yakma gibi. pyserial kütüphanesiyle yapıyorum.


import serial
import time

serialObj = serial.Serial(port="COM8", baudrate=9600, timeout=1)

if serialObj.isOpen():
data = "ON"
serialObj.write(data.encode('utf-8'))
time.sleep(1)
gelen = serialObj.read()
print(gelen)

serialObj.close()

Boş yazdırıyor.

Bu da arduino kodu

int buzzerPin = 5;

void setup() {
pinMode(buzzerPin, OUTPUT);
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()>0){
String test = Serial.readString();
if (test=="ON"){
digitalWrite(buzzerPin, HIGH);
delay(500);
digitalWrite(buzzerPin, LOW);
delay(500);
}
}
 
Son düzenleme:
pyfirmata2 ile yap hocam daha basit ve verimli

from pyfirmata2 import Arduino
import time

PORT = 'COM3' # Kendi port numaranıza göre değiştirin

# Arduino'ya bağlan
try:
board = Arduino(PORT)
print(f"Arduino bağlantısı başarılı: {PORT}")
except Exception as e:
print(f"Bağlantı hatası: {e}")
exit()

# LED pinlerini tanımla (dijital pinler)
led1 = board.get_pin('d:2:o') # Dijital pin 2, çıkış modu
led2 = board.get_pin('d:3:o') # Dijital pin 3, çıkış modu
led3 = board.get_pin('d:4:o') # Dijital pin 4, çıkış modu

# Tüm LED'leri söndür
def turn_off_all_leds():
led1.write(0)
led2.write(0)
led3.write(0)

def main():
print("Komutlar:")
print("1: 1. LED'i yak")
print("2: 2. LED'i yak")
print("3: 3. LED'i yak")
print("0: Tüm LED'leri söndür")
print("q: Programdan çık")

try:
while True:
command = input("\nKomut girin (1/2/3/0/q): ")

if command.lower() == 'q':
print("Program sonlandırılıyor...")
break

# Önce tüm LED'leri söndür
turn_off_all_leds()

# Komuta göre LED'i yak
if command == '1':
led1.write(1)
print("LED 1 yakıldı")
elif command == '2':
led2.write(1)
print("LED 2 yakıldı")
elif command == '3':
led3.write(1)
print("LED 3 yakıldı")
elif command == '0':
print("Tüm LED'ler söndürüldü")
else:
print("Geçersiz komut! Lütfen 0, 1, 2, 3 veya q girin.")

except KeyboardInterrupt:
print("\nProgram kullanıcı tarafından sonlandırıldı.")
finally:
# Program sonlandığında tüm LED'leri söndür ve bağlantıyı kapat
turn_off_all_leds()
board.exit()
print("Arduino bağlantısı kapatıldı.")

if __name__ == "__main__":
main()
 
pyfirmata2 ile yap hocam daha basit ve verimli
Tamam hocam çıktım artık pazartesi deneyeceğim. 20 tane proje var. Hocalarla bitirdik çoğunu. 20.000 ₺ ödeme geldi. 6 projede 13.500 ₺ e ulaştık. Yaktigim benzin de cabası. Malzeme almak için. Sanayidir, carsidir.

Hocam opencv ile araç plakasini okuyorum. PyQt5 ile yaptım. Veritabanından plakayı kontrol ediyor. Buraya kadar işlemler tamam. Seri porta sinyal gönderip okumam lazım. Engelli araci ise park alanını açacak Arduino.
 
Son düzenleme:
BBNET
Geri
Üst