Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
1
Cevap
173
Tıklama
0
Öne Çıkarma
Oluşturduğum kordinat sistemini arduino da kullanmak için?
F
geçen yıl
Er
Konu Sahibi

Merhaba pycharmda tkinter kullanarakbir kordinat sistemi oluşturdum bunu arduinoya bağlayarak servo motoru hareket ettirmek istiyorum kordinat sisteminde x eksenlerine basarak derece dönüşlerini yapmak istiyorum bunu nasıl yapabilirim ?


GUİ kodları bu arkadaşlar

import tkinter as tk
import tkinter.ttk as ttk
from tkinter import Canvas
import math

pencere = tk.Tk()
pencere.title("Koordinat Sistemi")

X = 800
Y = 600


can = Canvas(pencere, width=X+1, height=Y+1, bg="white")
can.pack()


can.create_rectangle(800, 600, can.winfo_width(), can.winfo_height(), fill="white")
can.create_line(0, 300, 800, 300, fill="black", width=2, arrow=tk.BOTH)
can.create_line(400, 0, 400, 600, fill="black", width=2, arrow=tk.BOTH)

width = 800
height = 600
cell_size = 25 # Her bir hücrenin boyutu

# Dikey çizgileri çizme
for x in range(0, 800, cell_size):
can.create_line(x, 0, x, height, fill="black",dash=(4, 2))

# Yatay çizgileri çizme
for y in range(0, 600, cell_size):
can.create_line(0, y, width, y, fill="black",dash=(4, 2))


# nokta oluşturmak
ov_size=(6,6)

def get_oval_centre(coords):
x = (coords[0] + coords[2])//2
y = (coords[1] + coords[3])//2
return [x,y]

def set_oval_coords(t, xy):
x,y = xy
can.coords(t, (x-5, y-5, x+5, y+5) )



def evn(e):
xx = can.canvasx(e.x)
yy = can.canvasy(e.y)
#cc = c.find_closest(xx,yy)
t = can.find_withtag('point')
#c.move(t, 20,20)
#print(c.find_all())
#c.itemconfig(t, )
oc = get_oval_centre(can.bbox(t))
oc[0] += cell_size
oc[1] += cell_size

def mot(e):
xg = (e.x+cell_size/2)//cell_size
yg = (e.y+cell_size/2)//cell_size
t = can.find_withtag('point')
set_oval_coords(t, (xg*cell_size, yg*cell_size))
# Fare imlecinin yeni konumunu ekrana yazdır
print(f"Fare İmleci Konumu: ({xg-16}, {(yg-abs(12))*-1})")

# Label içeriğini güncelle
mouse_position_label.config(text=f"X: Y: ({xg-16}, {(yg-abs(12))*-1})")
mouse_position_label.pack(side="bottom") # Metni sola hizala


# Fare pozisyonunu gösterecek Label widget'ı oluştur
mouse_position_label = tk.Label(pencere, text="X: Y: (0, 0)", font=("Helvetica", 14))
mouse_position_label.pack(pady=25)
mouse_position_label.pack(side="left") # Metni sola hizala

#Fare Tıklama Olayı
can.bind('<Button-1>', evn)
can.bind('<Motion>', mot)


ov = can.create_oval(-3,-3, 3, 3, tags='point', fill='red')


def fare_konumunu_guncelle(event):
x = (event.x + cell_size / 2) // cell_size - 16
y = ((event.y + cell_size / 2) // cell_size - abs(12)) * -1
fare_konumu_etiketi.config(text=f"Fare Konumu: x={x}, y={y}")

# En yakın 25 pixel aralıklı noktanın koordinatlarını bul
nearest_x = round(event.x / 25) * 25
nearest_y = round(event.y / 25) * 25

# Canvas üzerine nokta çiz
can.create_oval(nearest_x - 10, nearest_y - 10, nearest_x + 10, nearest_y + 10, outline="red")
fare_konumu_etiketi = tk.Label(pencere, text="Fare Konumu: x=0, y=0", font=("Helvetica", 14))
fare_konumu_etiketi.pack(pady=20)

# Fare hareketlerini dinlemek için canvas'a bağlanma
can.bind("<Button-1>", fare_konumunu_guncelle)

pencere.mainloop()
quote:






F
geçen yıl
Yüzbaşı

Merhaba. Arduino ile seri haberleşme sağlayan kodları python kodunuza ekleyip, butonlara basıldığında arduinoya mesaj göndermesini sağlamalısınız. Arduino tarafında da bu mesajları yorumlayıp servo motora gerekli komutları gönderecek program yazılmalı.

Python'a pek hakim değilim ama youtube'a "pycharm tkinter arduino" yazınca bulduğum bir video başlangıç için yardımcı olabilir. İlk videodaki seri haberleşme kodlarını kendi programınıza ekleyip arduino ile seri port üzerinden habereşmesini sağlayabilirseniz o noktadan ilerlemek zor olmayacaktır. Video açıklamalarında kodların linki bulunuyor.

https://www.youtube.com/playlist?list=PLb1SYTph-GZJOhtl6fwqc4wDZfPL2DalE
İyi çalışmalar.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.