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 Kod Yükleme
Arduinoya yükleyeceğimiz kodu istersek Dosya/Örnekler/04. Comminication/PhysicalPixel kısmındaki örnek kodu yükleyrek tamamlayabiliriz.
/* 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 L
veya yazın H
ve [Gönder]’e tıklayın. LED’in açılıp kapanmasını gözlemleyin. H
LED’i açmak için Gönder . L
LED’i kapatmak için Gönder .
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.