Python İle Arduino Kontrol Etme

0 884

Python günümüzün en popüler programlama dillerinin başında geliyor. Python ile arduino kartlarınıda kontrol edebilir, arduino üzerindeki sensörlerden gelen verileri okuyabilir ve hatta aruinoya bağlı led gibi elemanları kontrol edebilirsiniz.

Bu yazımızda Python ile arduinoya bağlı bir led’i nasıl kontrol edebileceğimizi anlatacağız.

Öncelikle arduino üzerinden standart bir led devresi oluşturacağız. Ledin eksi bacağının arduinodaki GND (toprak) pinine bağlı olduğuna dikkat edin. Ayrıca LED’in daha verimli çalışması için LED’in eksi bacağı ve GND pini arasında bir direnç ekliyoruz.

LED’in uzun bacağından yani artı kısmınıda 13. pine bağlıyoruz. Devre şeması alttaki görseldeki gibi olmalı.

Arduino Led Yakma Devresi

Arduino Kod Yükleme

Arduinoya yükleyeceğimiz kodu istersek Dosya/Örnekler/04. Comminication/PhysicalPixel kısmındaki örnek kodu yükleyrek tamamlayabiliriz.

Arduino Örnek Kod Yükleme

 

/*
  Physical Pixel

  An example of using the Arduino board to receive data from the computer. In
  this case, the Arduino boards turns on an LED when it receives the character
  'H', and turns off the LED when it receives the character 'L'.

  The data can be sent from the Arduino Serial Monitor, or another program like
  Processing (see code below), Flash (via a serial-net proxy), PD, or Max/MSP.

  The circuit:
  - LED connected from digital pin 13 to ground through 220 ohm resistor

  created 2006
  by David A. Mellis
  modified 30 Aug 2011
  by Tom Igoe and Scott Fitzgerald

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/PhysicalPixel
*/

const int ledPin = 13; // the pin that the LED is attached to
int incomingByte;      // a variable to read incoming serial data into

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // see if there's incoming serial data:
  if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    incomingByte = Serial.read();
    // if it's a capital H (ASCII 72), turn on the LED:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    // if it's an L (ASCII 76) turn off the LED:
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}


Arduino Seri Monitör ile LED’i açıp kapatın

Araçlar -> Seri Monitör’ü kullanarak Arduino Seri Monitörünü açın. Seri Monitörde Lveya yazın Hve [Gönder]’e tıklayın. LED’in açılıp kapanmasını gözlemleyin. HLED’i açmak için Gönder . LLED’i kapatmak için Gönder .

Arduino Seri Monitör

Kodumuzu arduinoya yükledikten sonra python kısmına geçebiliriz.

Python kısmı için pyserial kütüphanesine ihtiyacımız var.

pyserial kütüphanesini yüklemek için “pip install pyserial” komutunu terminal ekranında yazmanız yeterli olacaktır.

>>> import serial
>>> import time

>>> ser = serial.Serial('COM4', 9600)  # open serial port
>>> time.sleep(2)                      # wait 2 seconds
>>> ser.name()
'COM4'

>>> ser.write(b'H')
# LED turns on

>>> ser.write(b'L')
# LED turns off

>>> ser.write(b'H')
# LED turns on

>>> ser.write(b'L')
# LED turns off

>>> ser.close()
>>> exit()

Burada dikkat etmemiz gereken arduinonun hangi porttan bilgisayar bağlandığından emin olmamız gerekmektedir. Arduinonun hangi porttan bağlandığını Arduino IDE içindeki araçlar menüsünden port ekranından görebilirsiniz.

ser.write(b’H’) komutu arduinoya H verisini iletecektir. Arduino kodlarına bakılıncada H verisi gelince Ledin yanmasını sağlayacak kodun çalışacağı görülebilir.

Python Betiği Yazma

Python ile sürekli çalışacak bir betik yazarak kullanıcıdan veri alıp arduinoya göndermesi sağlanabilir. Bunun içinde gerekli kodlar:

import serial
import time
print('Arduino Led Açma Kapama Programı jn7.net')
print('LEDi Açma İçin H tuşuna basın')
print('Ledi Kapatmak İçin L tuşuna basın')
print('Çıkmak için q ya basın.')
ser = serial.Serial('COM4', 9800, timeout=1)
time.sleep(2)

user_input = 'L'
while user_input != 'q':
    user_input = input('H = aç, L = kapat, q = çıkış' : )
    byte_command = encode(user_input)
    ser.writelines(byte_command)   # send a byte
    time.sleep(0.5) # wait 0.5 seconds

print('q ya basıldı. Programdan çıkılıyor.')
ser.close()

Bu Python ile arduino kullanma örneklerinin başlangıcıydı. İleride daha farklı uygulamalar paylaşacağız. İsterseniz sitemizde Python derslerine erişebilirsiniz. Sorularınızı ve yorumlarınız bekliyoruz.

 

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul etmek Mesajları Oku