Pythonda Arduinoya Güncel Zaman Yazma

pythonu yeni öğreniyorum . Güncel zamanı pythondan arduinoya yollamak istiyorum ancak probllemle karşılaştım .

Python codum:

  1. import serial

  2. import time

  3. import datetime

  4. ser = serial.Serial(‘COM3’, 9600, timeout=0)

  5. ser.reset_input_buffer()

  6. time.sleep(1.5)

  7. d=datetime.datetime.now()

  8. print(“d:”,d)

  9. now_year=str(d.year)

  10. now_month =str(d.month)

  11. now_day =str(d.day)

  12. now_hour =str(d.hour)

  13. now_minute =str(d.minute)

  14. now_second =str(d.second)

  15. #var = input("Enter something: ")+’\r\n’

  16. #ser.write(var.encode())

  17. ser.write(now_month.encode())

  18. while 1:

  19. try:
    
  20.     print (ser.readline())
    
  21.     time.sleep(1.5)
    
  22. except ser.SerialTimeoutException:
    
  23.     print('Data could not be read')
    

Arduino codum:

  1. int incomingByte = 0;
  2. void setup(){
  3. // Open serial connection.
  4. Serial.begin(9600);
  5. }
  6. void loop(){
  7. if (Serial.available() > 0) {
  8. // read the incoming byte:
  9. incomingByte = Serial.read();
  10. // say what you got:
  11. Serial.print("I got: "); // ASCII printable characters
  12. Serial.println(incomingByte,DEC);
  13. }
  14. }

Codun çıktısı:
b’ ’ şeklinde boş geliyor

İnput methodunun çıktısı:

İnput methoduyla ascii değerleri yollayabiliyor olmama rağmen datetime modülünün de çıktısı string olmasına rağmen aynı sonucu alamıyorum.Yardımcı olursanız sevinirim.
#python #datetime #serialcommunication

Öncelikle kodlara girinti kazandırabilir misiniz? Satır numaraları olmadan kodlarınızı şu iki aralığa yazın:
```
KODLARINIZ
```
Çentik işaretini (`) alt gr + , tuşuna basarak yapabilirsiniz.

1 Beğeni

aurdinoya nasıl gönderirsiniz bilmem ama time modülü ile güncel zamanı almak istiyorsanız böyle bir kod yazabilirsiniz

import time
time.strftime("%Y %H/%M/%S") # Output;2019 23:50 

bilgisayarınızın saati neyse buda onu göstericektir bunu nasıl aurdinoya gönderirsiniz çok bilgim yok ama bunu bildikten sonra yapabiliyorsanız bilmiyorum yapamıyorsanız araştırabilirim biraz

Python codu

import serial
import time
import datetime


ser = serial.Serial('COM3', 9600, timeout=0)
ser.reset_input_buffer()
time.sleep(1.5)

d=datetime.datetime.now()
print("d:",d)
now_year=str(d.year)
now_month =str(d.month)
now_day =str(d.day)
now_hour =str(d.hour)
now_minute =str(d.minute)
now_second =str(d.second)


var = input("Enter something: ")+'\r\n'
ser.write(var.encode())

#ser.write(now_month.encode())


while 1:
    try:
        print (ser.readline())
        time.sleep(1.5)
    except ser.SerialTimeoutException:
        print('Data could not be read')

Arduino codu

int incomingByte = 0;
 
void setup(){
// Open serial connection.
Serial.begin(9600);
 
}
 
void loop(){
if (Serial.available() > 0) {
 
 // read the incoming byte:
 incomingByte = Serial.read();
 
 // say what you got:
 Serial.print("I got: "); // ASCII printable characters
 Serial.println(incomingByte,DEC);
}
 
}

Yazığınız kodu da denedim ancak aynı sonucu alıyorum.Herhangi bir veri gitmiyor.

Dediğim gibi arduino yu bilmiyorum sadece python hakkında konuşabiliyorum :slight_smile: yardım etmek isterdim

1 Beğeni

Kodunuzdan biraz anladığım kadarıyla, arduinodaki kod sürekli her döngüde bir veri akışı var mı diye kontrol ediyor ve sonra da bunu okuyup, okuduğu veriyi ekrana yazıyor.

Python tarafında gelince de, sadece bir kere veri gönderdiğinizi görüyoruz.

ser.write(var.encode())

Siz bu satırdan başka bir yerde veri göndermediğiniz için, arduino da bir veri okumamış oluyor. Şu şekilde bir ekleme yapıp, geri dönüş yapar mısınız?

import serial
import time
import datetime


ser = serial.Serial('COM3', 9600, timeout=0)
ser.reset_input_buffer()
time.sleep(1.5)

d=datetime.datetime.now()
print("d:",d)
now_year=str(d.year)
now_month =str(d.month)
now_day =str(d.day)
now_hour =str(d.hour)
now_minute =str(d.minute)
now_second =str(d.second)


var = input("Enter something: ")+'\r\n'
ser.write(var.encode())

#ser.write(now_month.encode())


while 1:
    try:
        # Değişiklik burada
        bilgi = time.strftime("%H:%M:%S")+"\r\n"
        ser.write(bilgi.encode())
        time.sleep(1.5)
        print (ser.readline())
    except ser.SerialTimeoutException:
        print('Data could not be read')
2 Beğeni

While içerisindeki değişikliği uyguladım ve kod çalıştı.Yardımınız için teşekkür ederim.

2 Beğeni