Arama butonu
Bu konudaki kullanıcılar: 1 misafir
11
Cevap
949
Tıklama
0
Öne Çıkarma
Arduino python haberleşme
W
5 yıl
Onbaşı
Konu Sahibi

Elimde klon arduino uno var.Python ile porta yazı yazıyorum ama okuyamıyorum .Sorun ne olabilir acaba?

>>> import serial
>>> port = serial.Serial("COM4")
>>> port.name
'COM4'
>>> port.isOpen()
True
>>> port.write(b"arduino")
7
>>> port.read()






port.read() yazdıktan sonra bir şey görmediğinden dolayı dönmüyor sanırım.



E
5 yıl
Yüzbaşı

Yazdığın şeyin arduinoya doğru şekilde ulaştığına emin misin? Arduino tarafında bunu test etmelisin. Baud rate ayarı da göremedim. İki tarafta da baud rate eşit olmalı.


Bu mesaja 1 cevap geldi.
W
5 yıl
Onbaşı
Konu Sahibi

Hocam sanırım ulaşmıyor ayrıca baud rate ayarın yapıp denedim gene aynı





< Bu mesaj bu kişi tarafından değiştirildi was deferans -- 25 Ocak 2020; 22:4:28 >

< Bu ileti DH mobil uygulamasından atıldı >


Bu mesajda bahsedilenler: @EmuDev
W
5 yıl
Onbaşı
Konu Sahibi

PYTHON
import tkinter
import time
import serial



data = serial.Serial("COM4", 9600)

class RENK:
def __init__(self, isim):
self.isim = isim
def arka_plan(self):
if(self.isim =="kırmızı"):
pencere["background"]="red"
yazi["bg"]="red"
if (not data.isOpen()):
data.open()
data.write('1'.encode())

if(self.isim =="yesil"):
pencere["background"]="green"
yazi["bg"]="green"
if (not data.isOpen()):
data.open()
data.write('3'.encode())

if(self.isim =="sari"):
pencere["background"]="yellow"
yazi["bg"]="yellow"
if (not data.isOpen()):
data.open()
data.write('5'.encode())




kirmizi = RENK("kırmızı")
yesil = RENK("yesil")
sari = RENK("sari")

pencere= tkinter.Tk()
pencere.geometry('700x700')
pencere.title("ARDUİNO")
pencere.configure(background ="white")




yazi=tkinter.Label(text="ARDUİNO LED PROGRAMI", bg="white",fg="black",font=("Open Sans","30","normal"))
yazi.pack()



kirmizi_buton = tkinter.Button(text ="KIRMIZI",bg ="red",command = kirmizi.arka_plan,font=("Open Sans","15","normal"))
kirmizi_buton.pack(side="left")

yesil_buton = tkinter.Button(text ="YEŞİL ",bg ="green",command = yesil.arka_plan,font=("Open Sans","15","normal"))
yesil_buton.pack(side ="right")

sari_buton =tkinter.Button(text ="SARI",bg ="yellow",command = sari.arka_plan,font=("Open Sans","15","normal"))
sari_buton.pack(side ="bottom")

foto = tkinter.PhotoImage(file="RUN1.png")
foto1= tkinter.Button(pencere,image=foto,command=pencere.destroy)
foto1.pack()


pencere.mainloop()


ARDUİNO
int durum;
int kirmizi_led =8;
int yesil_led = 10;
int sari_led = 6;



void setup() {

pinMode(kirmizi_led , OUTPUT);
pinMode(yesil_led , OUTPUT);
pinMode(sari_led , OUTPUT);
Serial.begin(9600);

}

void loop() {
if(Serial.available() > 0){
durum =Serial.read();
delay(1);
Serial.print(durum);

if(durum == "1"){
digitalWrite(kirmizi_led , HIGH);
delay(150);
}
else if(durum == "2"){
digitalWrite(kirmizi_led , LOW);
}
else if(durum == "3"){
digitalWrite(yesil_led , HIGH);
delay(150);
}
else if(durum == "4"){
digitalWrite(yesil_led , LOW);
}
else if(durum == "5"){
digitalWrite(sari_led , HIGH);
delay(150);
}
else if(durum == "6"){
digitalWrite(sari_led , LOW);
}
}
else {
digitalWrite(kirmizi_led , HIGH);
}
}


< Resime gitmek için tıklayın >

Aslında yapmak istediğim fotoraftaki pencereyi kullanarak düğmelere basıldığında breadbord üzerindeki ledlerin yanması şu anda sadece kırmızı led yanıyor oda gösteriyorki porta hiçbir şey yazılmıyor(yanılıyor olabilirim).Kartta sorun olabilirmi yada nerede yanlış yapıyorum?





< Bu mesaj bu kişi tarafından değiştirildi was deferans -- 25 Ocak 2020; 23:0:21 >

E
5 yıl
Yüzbaşı

Öncelikle denemeleri sadece konsol penceresi üzerinde yap (şu siyah ekranda). String yerine byte ile alışveriş yapmayı dene. Stringler tamsayı verilerden çok daha karmaşıktır. Mesela arduino tarafında 2 led varsa 0 ve 1 göndererek ikisinden birini yakabilirsin.

Arduino tarafındaki if(durum == "1") hatalı bir kod. durum değişkeninin türü int, "1" ise char*. Bu iki ayrı tür karşılaştırılamaz. durum değişkeni char* türünde olsa yine olmaz.

Halbuki python tarafında byte gönderseydin arduinoda şu şekilde basitçe yapılabilirdi.

byte durum;
...
if(durum == 1)


Bu mesaja 1 cevap geldi.
W
5 yıl
Onbaşı
Konu Sahibi

Sağol hocam program çalışmıyor ama artık haberleşme yapabiliyor programı düzeltince hatamı editlerim...




Bu mesajda bahsedilenler: @EmuDev
W
5 yıl
Onbaşı
Konu Sahibi

PYTHON
import tkinter
import time
import serial



data = serial.Serial("COM4", 9600)

class RENK:
def __init__(self, isim):
self.isim = isim
def arka_plan(self):
if(self.isim =="kırmızı"):
pencere["background"]="red"
yazi["bg"]="red"
if (not data.isOpen()):
data.open()
data.write(b'1')
data.write(b'4')
data.write(b'6')

if(self.isim =="yesil"):
pencere["background"]="green"
yazi["bg"]="green"
if (not data.isOpen()):
data.open()
data.write(b'3')
data.write(b'2')
data.write(b'6')

if(self.isim =="sari"):
pencere["background"]="yellow"
yazi["bg"]="yellow"
if (not data.isOpen()):
data.open()
data.write(b'5')
data.write(b'2')
data.write(b'4')




kirmizi = RENK("kırmızı")
yesil = RENK("yesil")
sari = RENK("sari")

pencere= tkinter.Tk()
pencere.geometry('700x700')
pencere.title("ARDUİNO")
pencere.configure(background ="white")




yazi=tkinter.Label(text="ARDUİNO LED PROGRAMI", bg="white",fg="black",font=("Open Sans","30","normal"))
yazi.pack()



kirmizi_buton = tkinter.Button(text ="KIRMIZI",bg ="red",command = kirmizi.arka_plan,font=("Open Sans","15","normal"))
kirmizi_buton.pack(side="left")

yesil_buton = tkinter.Button(text ="YEŞİL ",bg ="green",command = yesil.arka_plan,font=("Open Sans","15","normal"))
yesil_buton.pack(side ="right")

sari_buton =tkinter.Button(text ="SARI",bg ="yellow",command = sari.arka_plan,font=("Open Sans","15","normal"))
sari_buton.pack(side ="bottom")

foto = tkinter.PhotoImage(file="RUN1.png")
foto1= tkinter.Button(pencere,image=foto,command=pencere.destroy)
foto1.pack()


pencere.mainloop()


ARDUİNO
char durum;
int kirmizi_led =8;
int yesil_led = 10;
int sari_led = 6;



void setup() {

pinMode(kirmizi_led , OUTPUT);
pinMode(yesil_led , OUTPUT);
pinMode(sari_led , OUTPUT);
Serial.begin(9600);

}

void loop() {
if(Serial.available() > 0){
durum =Serial.read();
delay(1);
Serial.print(durum);

if(durum == '1'){
digitalWrite(kirmizi_led , HIGH);
delay(150);
}
else if(durum == '2'){
digitalWrite(kirmizi_led , LOW);
}
else if(durum == '3'){
digitalWrite(yesil_led , HIGH);
delay(150);
}
else if(durum == '4'){
digitalWrite(yesil_led , LOW);
}
else if(durum == '5'){
digitalWrite(sari_led , HIGH);
delay(150);
}
else if(durum == '6'){
digitalWrite(sari_led , LOW);
}
}

}


Programın son hali bu artık çalışıyor arduino python haberleşmesiyle program yapmak isteyenlere örnek olması açısından paylaşıyorum.Yardımlarınız için teşekkür ederim.



E
5 yıl
Yüzbaşı

Tebrikler. Ben de biraz modifiye edilmişini bırakayım. Tek byte ile birden fazla bilgiyi nasıl iletebiliriz onun cevabı olsun.


import tkinter
import time
import serial

data = serial.Serial("COM4", 9600)
data.open()

class RENK:
def __init__(self, isim):
self.isim = isim
def arka_plan(self):
if(self.isim =="kırmızı"):
pencere["background"]="red"
yazi["bg"]="red"
data.write(b'\x01')

if(self.isim =="yesil"):
pencere["background"]="green"
yazi["bg"]="green"
data.write(b'\x02')

if(self.isim =="sari"):
pencere["background"]="yellow"
yazi["bg"]="yellow"
data.write(b'\x04')

kirmizi = RENK("kırmızı")
yesil = RENK("yesil")
sari = RENK("sari")

pencere= tkinter.Tk()
pencere.geometry('700x700')
pencere.title("ARDUİNO")
pencere.configure(background ="white")


yazi=tkinter.Label(text="ARDUİNO LED PROGRAMI", bg="white",fg="black",font=("Open Sans","30","normal"))
yazi.pack()



kirmizi_buton = tkinter.Button(text ="KIRMIZI",bg ="red",command = kirmizi.arka_plan,font=("Open Sans","15","normal"))
kirmizi_buton.pack(side="left")

yesil_buton = tkinter.Button(text ="YEŞİL ",bg ="green",command = yesil.arka_plan,font=("Open Sans","15","normal"))
yesil_buton.pack(side ="right")

sari_buton =tkinter.Button(text ="SARI",bg ="yellow",command = sari.arka_plan,font=("Open Sans","15","normal"))
sari_buton.pack(side ="bottom")

foto = tkinter.PhotoImage(file="RUN1.png")
foto1= tkinter.Button(pencere,image=foto,command=pencere.destroy)
foto1.pack()


pencere.mainloop()
data.close()



const int kirmizi_led = 8;
const int yesil_led = 10;
const int sari_led = 6;
byte durum;


void setup()
{
pinMode(kirmizi_led , OUTPUT);
pinMode(yesil_led , OUTPUT);
pinMode(sari_led , OUTPUT);
Serial.begin(9600);
}

void loop()
{
while(Serial.available() == 0);
durum = Serial.read();

digitalWrite(kirmizi_led , durum & 0x1);
digitalWrite(yesil_led , durum & 0x2);
digitalWrite(sari_led , durum & 0x4);
}



B
5 yıl
Binbaşı

string değerleri karşılaştırmak için strcmp fonksiyonunu kullan.



O
5 yıl
Yüzbaşı

arduino bordu uno r3 mu nasıl ledler baglı? bende denemek isterim.


Bu mesaja 1 cevap geldi.
W
5 yıl
Onbaşı
Konu Sahibi

Arduino uno r3 ile yaptım ben ledlerin nasıl bağlı olduğunu alttaki fotoğrafta gösterdim...
< Resime gitmek için tıklayın >




Bu mesajda bahsedilenler: @oshinankara
O
5 yıl
Yüzbaşı

Tesekkurler.



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.