Kisah Dua Sejoli: Arduino & Python
-
Upload
ridwan-fajar -
Category
Technology
-
view
391 -
download
6
Transcript of Kisah Dua Sejoli: Arduino & Python
Kisah Dua Sejoli: Arduino + Python
Ridwan Fadjar SeptianIlmu Komputer 2009 / 0901939@Sharing Session #2 POSS UPIDesember 2014
Kisah Dua Sejoli: Apa itu Arduino
Apa itu Arduino
● Sebuah mikrokontroler yang memudahkan kita untuk belajar mikrokontroler
● Ditemukan dan didirikan oleh Massimo Banzi dan David Curtialles
● Merupakan Open Source Hardware
● Memiliki IDE sendiri yang dinamakan Arduino IDE
● File yang di-upload kepada Arduino memiliki sintaks mirip C dengan ekstensi file .ino
● Memiliki perangkat tambahan yang dinamakan shield. Ada berbagai shield yang dapat digunakan seperti Ethernet Shield, GSM Shield, Motor Shield, Breadboard Shield, dan lainnya
Apa itu Arduino
● Memiliki tombol reset untuk mengosongkan program yang telah di-upload
● Chip yang digunakan umumnya adalah Atmel Mega
● Mempunyai pin untuk membaca input analog dan output analog
● Mempunyai pin untuk membaca input digital dan output digital
● Untuk versi Arduino UNO, dapat mengalirkan listrik sebesar 5V dan 3,5 V
● Terdapat macam versi seperti UNO, Mega, Leonardo, Lily, Mini, Esplora, dan lainnya
Kisah Dua Sejoli: Python dan Arduino?
Python dan Arduino?
● Berkomunikasi antara Arduino dengan aplikasi Python menggunakan library PySerial
● Dengan menggunakan PySerial, Anda dapat mengendalikan perangkat berbasis Arduino melalui aplikasi desktop atau console yang ditulis dengan Python
● Data yang dikirim dari Arduino melalui mekanisme komunikasi serial
Kisah Dua Sejoli: Hello Serial
Hello Serial – skema breadboard
Hello Serial – hello_serial.py
import serial
arduinoData = serial.Serial('/dev/ttyACM1', 9600)
while True: myData = arduinoData.readline().strip() print myData.decode('utf-8')
Hello Serial – hello_serial.ino
int ledPin = 13;
void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600);}
void loop(){ Serial.println("LED is on !!!"); digitalWrite(ledPin, HIGH); delay(1000); Serial.println("LED is off !!!"); digitalWrite(ledPin, LOW); delay(100);}
Kisah Dua Sejoli: Serial Send
Serial Send – skema breadboard
Hello Serial – serial_send.py
import serial
arduinoData = serial.Serial('/dev/ttyACM1', 9600)
while True: myData = raw_input('Kirimkan perintah (1/0): ') if myData == "1": arduinoData.write(b'1') elif myData == "0": arduinoData.write(b'0')
Hello Serial – serial_send.ino
int ledPin = 13;char myData = 0;
void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600);}
void loop(){ myData = int(Serial.read()); if (myData == '1'){ Serial.println("LED is on !!!"); digitalWrite(ledPin, HIGH); } else if (myData == '0'){ Serial.println("LED is off !!!"); digitalWrite(ledPin, LOW); }}
Kisah Dua Sejoli: Tombol LED
Tombol LED – skema breadboard
Tombol LED – tombol_led.py
import Tkinterimport serial
arduinoData = serial.Serial('/dev/ttyACM0', 9600)
def LED_Switch1(): arduinoData.write('H,13')
def LED_Switch2(): arduinoData.write('H,12')
def LED_Switch3(): arduinoData.write('H,11') …....................................................................................
Tombol LED – tombol_led.py…........................................................................................
TombolLed = Tkinter.Tk()
# mendefinisikan button :Dtombol1 = Tkinter.Button(TombolLed, text="LED - 1", command=LED_Switch1)tombol2 = Tkinter.Button(TombolLed, text="LED - 2", command=LED_Switch2) tombol3 = Tkinter.Button(TombolLed, text="LED - 3", command=LED_Switch3)
# menentukan memasang button ke widget BelajarButton
tombol1.pack()tombol2.pack()tombol3.pack()…........................................................................................
Tombol LED – tombol_led.py…........................................................................................
# mengatur tampilan widget BelajarButtonTombolLed.title("Tombol LED dengan Tkinter")TombolLed.geometry("300x100")
# menjalankan aplikasiTombolLed.mainloop()
Tombol LED – tombol_led.ino
long int value = 0;int ledPin1 = 13;int ledPin2 = 12;int ledPin3 = 11;int ledPin1State = -1;int ledPin2State = -1;int ledPin3State = -1;
long int tempValue = 0;
void setup(){ Serial.begin(9600); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); }
void loop(){ if (Serial.available()) { if (Serial.read() == 'H') { value = Serial.parseInt(); } Serial.println(value); …..................................... }}
Lanjut Kesana
Tombol LED – tombol_led.ino
if (value == 13){ ledPin1State *= -1; } else if (value == 12){ ledPin2State *= -1; } else if (value == 11){ ledPin3State *= -1; } }
else { if (ledPin1State == -1){ digitalWrite(ledPin1, LOW); } else if (ledPin1State = 1){ digitalWrite(ledPin1, HIGH); } if (ledPin2State == -1){ digitalWrite(ledPin2, LOW); } else if (ledPin2State = 1){ digitalWrite(ledPin2, HIGH); } if (ledPin3State == -1){ digitalWrite(ledPin3, LOW); } else if (ledPin3State = 1){ digitalWrite(ledPin3, HIGH); } }}
Lanjut Kesana
Kisah Dua Sejoli: Circle Blue
Circle Blue – circle_blue.py
Circle Blue – circle_blue.py
from Tkinter import *from time import *import serial
arduinoData = serial.Serial('/dev/ttyACM0', 9600)master = Tk()
canvas = Canvas(master, width = 550, height = 550)canvas.pack()
center_x = 275center_y = 275circle_size = 50
canvas.create_oval( center_x-circle_size, center_y-circle_size, center_x+circle_size, center_y+circle_size,fill = "blue", tags = "circle1")
…..........................................................................................
Circle Blue – circle_blue.py
….....................................................................................................
def resize_circle_blue(): global circle_size global canvas while True: myData = arduinoData.readline().strip() circle_size = int(myData) print circle_size canvas.delete('circle1') canvas.create_oval( center_x-circle_size, center_y-circle_size, center_x+circle_size, center_y+circle_size,fill = "blue", tags = "circle1") canvas.update() sleep(0.001) master.after(100, resize_circle_blue)master.mainloop()
Circle Blue – circle_blue.ino
int AnalogPin = A0;
void setup(){ Serial.begin(9600);}
void loop(){ int value = analogRead(AnalogPin) / 4; Serial.print(value); Serial.print("\n"); delay(100);}
Kisah Dua Sejoli: Cerita Akhir
Kesimpulan
● Python dapat digunakan untuk membuat graphical user interface dari sebuah aplikasi berbasis Arduino
● PySerial merupakan salah satu library yang dapat digunakan untuk berkomunikasi dengan mikrokontroler
● Dengan menggunakan PySerial, Anda dapat mempelajari mikrokontroler beserta pengembangan aplikasi untuk sisi desktop
Referensi
● Arduino Documentation● Tuts Plus – Arduino● AdaFruit Learning System● PySerial● Python Documentation
● Anda juga dapat bergabung di Facebook bersama grup Arduino Indonesia (https://www.facebook.com/groups/arduino.indonesia/)