Arduino ve python serial kütüphanesi veri dönüşümü hatası

python

import pygame
import time
import serial

pygame.init()

Hız = 5
boyut = (1500,700)
Durum = True
Beyaz = (255,255,255)
Mavi = (0,0,255)
Siyah = (0,0,0)
Fontlar = pygame.font.get_fonts()
Font = pygame.font.Font('Fonts\Roboto-Thin.ttf',18)
yazi_TAG = Font.render("TAG",False,(0,0,0))
yazi_TAG_kordinat = yazi_TAG.get_rect()
FPS = 30
clock = pygame.time.Clock()
Haberleşme = serial.Serial("COM3",timeout=.1)
root = pygame.display.set_mode(boyut)
root.fill(Beyaz)
while Durum:
    GelenVeri = Haberleşme.readline()
    AyrılmışVeri = GelenVeri.decode('utf-8')
    İşlenmişVeri = int(AyrılmışVeri)
    Pozisyon_X = İşlenmişVeri
    print(Pozisyon_X)   
    TAG_KORDİNAT_X = int(Pozisyon_X)
    
    tus_durumu = pygame.key.get_pressed()
    for işlem in pygame.event.get():
        
        if işlem.type == pygame.QUIT:
            Durum = False

    yazi_TAG_kordinat.x = TAG_KORDİNAT_X
    yazi_TAG_kordinat.y = TAG_KORDİNAT_Y


    root.fill(Beyaz)
    pygame.draw.circle(root,Siyah,(TAG_KORDİNAT_X-5,TAG_KORDİNAT_Y+25),5,0)
    pygame.draw.rect(root,Mavi,(40,25,1000,655),0)
    pygame.draw.circle(root,Siyah,(TAG_KORDİNAT_X-5,TAG_KORDİNAT_Y+25),5,0)
    root.blit(yazi_TAG,yazi_TAG_kordinat)
    clock.tick(FPS)
    pygame.display.update()
pygame.quit()

arduino

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
for(int b = 150; b < 601; b++){
  delay(50);
  Serial.println(b);
}
}

örnek olarak bir arduino kodu yazdım
Arduino ile konum takip sistemi yapıyorum ve pyhton ile de arayüzünü yapıyorum. Arduino USB ile bilgisayara bağlı ve serial kütüphanesini kullanıyorum. Sabahdan beri uğraşmama rağmen şu hatayı çözemedim.

İşlenmişVeri = int(AyrılmışVeri)
ValueError: invalid literal for int() with base 10: ''

Lütfen yardım edin

println ile değeri sonunda da \r gönderir. Yani alt satıra indirir.

Bunu integer’a çevirmek istersen, sonundaki \r çevrilemez ve bu hatayı alırsın.

 Serial.print(b);

Kullanabilirsin.

Yada python tarafında stringi alınca sonundaki \r yi kaldıracak bir satır kod yazabilirsin.

Ona da şuradan bakabilirsin.

Removing newline character from string in Python - GeeksforGeeks

Serial.println(b);

yerine

Serial.print(b);

kullandım ama aynı hatayı veriyor

GelenVeri ve AyrılmışVeri değerlerinizi print edebilir misiniz?

Yada serial monitorden gönderilen veriye bakabilir misiniz?

Gelen Veri

b'437\r\n'

Ayrılmış Veri

276

Oldu

İşlenmişVeri = int(str(AyrılmışVeri))

işlenmişveri değerini önce string sonra integer olarak aldım oldu ekrandada hareket ediyor

1 Beğeni