Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arduino = Python

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Arduino = Python

Avatar for Yanuar Sulistyo Wibowo

Yanuar Sulistyo Wibowo

July 20, 2016

Other Decks in Programming

Transcript

  1. Kisah Dua Sejoli: Arduino + Python Ridwan Fadjar Septian Ilmu

    Komputer 2009 / 0901939 @Sharing Session #2 POSS UPI Desember 2014
  2. 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
  3. 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
  4. 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
  5. Hello Serial – hello_serial.py import serial arduinoData = serial.Serial('/dev/ttyACM1', 9600)

    while True: myData = arduinoData.readline().strip() print myData.decode('utf-8')
  6. 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); }
  7. 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')
  8. 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); } }
  9. Tombol LED – tombol_led.py import Tkinter import 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') …....................................................................................
  10. Tombol LED – tombol_led.py …........................................................................................ TombolLed = Tkinter.Tk() # mendefinisikan

    button :D tombol1 = 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() …........................................................................................
  11. Tombol LED – tombol_led.py …........................................................................................ # mengatur tampilan widget BelajarButton

    TombolLed.title("Tombol LED dengan Tkinter") TombolLed.geometry("300x100") # menjalankan aplikasi TombolLed.mainloop()
  12. 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
  13. 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
  14. 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 = 275 center_y = 275 circle_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") …..........................................................................................
  15. 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()
  16. 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); }
  17. 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
  18. 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/)