การเขียนโปรแกรม Arduino โดยใช้ Python แทนที่จะเป็น C / C ++


36

ฉันไม่ค่อยชำนาญภาษา C และฉันก็สงสัยว่ามีวิธีที่หลามสามารถใช้โปรแกรม Arduino หรือไม่ สิ่งนี้น่าจะต้องใช้ IDE ที่แตกต่างกันเพื่อให้สามารถดีบักสคริปต์ด้วยตนเองได้


2
มีทางเลือกที่ทั้งคู่มีการเขียนโปรแกรม Arduino หนึ่งของพวกเขาคือBitLashและมีล่ามพื้นฐาน มีตัวเลือกสองสามอย่างเมื่อคุณค้นหาทางอินเทอร์เน็ต แต่การเรียนรู้ C / C ++ จะชำระให้ในที่สุด
jippie

ขอบคุณฉันจริง ๆ เริ่มดีขึ้นที่ C เพียงเล็กน้อยไม่ดีเท่าฉันกับ Python
JVarhol

2
คำถามทั่วไปที่เกี่ยวข้องเพิ่มเติม: "ตัวเลือกการเขียนโปรแกรม Arduino นอกเหนือจาก C ++"
David Cary

ราสเบอร์รี่ PI เป็นตัวเลือกหรือไม่?
พอล

คำตอบ:


26

มันจะเป็นเรื่องยากมากที่จะทำให้ Python script ชนิดใดทำงานบน Arduino โดยตรง เหตุผลก็คือเป็นภาษาที่ตีความดังนั้นคุณจะต้องใช้ล่ามแปลภาษานอกเหนือจากสคริปต์ข้อความธรรมดา อาจมีหน่วยความจำไม่เพียงพอสำหรับทุกสิ่ง

ทางออกที่ดีที่สุดของคุณอาจจะหาวิธีในการรวบรวมสคริปต์ Python กับรหัสเครื่องพื้นเมือง (ซึ่งเป็นวิธีการทำงานของ C / C ++) ฉันเชื่อว่ามีโปรเจ็กต์รอบ ๆ ที่จะทำอะไรแบบนั้นกับแพลตฟอร์มอื่น ๆ (เท่าที่ฉันรู้) แต่มันก็ไม่สำเร็จสำหรับ Arduino เลย

คุณอาจพบข้อมูลที่เป็นประโยชน์เพิ่มเติมเกี่ยวกับคำถามนี้ที่ Stack Overflow: มีวิธี "รวบรวม" ไพ ธ อนโค้ดบน Arduino (Uno)หรือไม่


15

ใช่เป็นไปได้ที่จะตั้งโปรแกรม Arduino โดยใช้ Python หนึ่งในโครงการดังกล่าวใน Github เป็นAPI v2 มันมีฟังก์ชั่นพื้นฐานมาก ๆ เช่น Digital I / O และ analog I / O

สามารถใช้สำหรับโครงการที่ง่ายมาก


* โปรเจคนี้เป็นบิตของการแฮ็คที่ "การเขียนโปรแกรม" บอร์ดโดยใช้การเชื่อมต่อแบบอนุกรม มันส่งคำสั่งผ่านการเชื่อมต่อแบบอนุกรมไปยังร่างที่เรียกใช้บนกระดานซึ่ง "ดำเนินการ" คำสั่ง Python


ดังนั้นบอร์ดจะต้องเสียบเข้ากับคอมพิวเตอร์เพื่อใช้งานรหัสจริง?
JVarhol

@JVarhol ผิดปกติใช่
asheeshr

1
นั่นมันช่างเลวร้าย มันจะง่ายกว่าถ้าใช้ Raspberry Pi
JVarhol

8

มีโครงการที่นำเป็นเครื่องเสมือนงูหลามจะไมโครคอนโทรลเลอร์รวมทั้งArduino เมกะ

นี่เป็นคำพูดจาก Ardunio Mega READMEซึ่งให้ความรู้สึกถึงสิ่งที่อาจเป็นเช่นนี้ (แม้ว่าฉันไม่ได้ทดสอบสิ่งนี้!):

ต่อไปนี้เป็นตัวอย่างเซสชันโดยใช้ ipm ::

ipm> import avr, sys
ipm> avr.ddrA(0xff)
ipm> avr.portA(0)       # Pins 22-29 all at 0 V
ipm> avr.portA(0xa5)
ipm> sys.heap()
(2622, 7424)

3

ฉันใช้ pyserial ที่ประสบความสำเร็จอย่างมากในการควบคุมพินบน arduino เวิร์กสเตชันของคุณ (แล็ปท็อปและอื่น ๆ ) เรียกใช้สคริปต์ไพ ธ อนจากนั้นสื่อสารแบบเรียลไทม์ไปยัง arduino

มันไม่เหมือนกับการเรียกใช้สคริปต์โดยตรงบน arduino แต่ฉันทำมากกว่านั้นเล็กน้อยที่ฉันคิดว่า arduino สามารถจัดการได้ (การวิเคราะห์เพลงการตี ri api ฯลฯ )


3

ตัวเลือกที่จะต้องพิจารณาก็คือArduino หยุน นอกจากชิป AVR ที่ Arduinos ส่วนใหญ่มีแล้วยังรวมถึงชิป MIPS ที่ใช้งานกับ Linux เนื่องจากเป็น linux คุณจึงสามารถเรียกใช้งานรหัสหลามได้อย่างง่ายดายและแพคเกจ pure-python ใด ๆ ก็สามารถติดตั้งได้อย่างง่ายดาย

อย่างไรก็ตามความสามารถในการรับเข้า / ส่งออกที่น่าสนใจทั้งหมดอยู่บนชิป AVR ไม่ใช่ในชิป MIPS โครงการต่าง ๆ เช่น Autobahn และLininoIOแก้ปัญหานี้โดยการเรียกใช้โปรแกรมพิเศษบนชิป AVR ซึ่งดำเนินการ I / O ภายใต้คำสั่งจากชิป MIPS


0

เรารู้ว่านี่เป็นปัญหาเปิดในการเขียนโปรแกรม Arduino และในโลกฝังตัวโดยทั่วไป มีโซลูชั่นหลากหลายที่มีอยู่ในตลาดเช่น MicroPython แต่ส่วนใหญ่จะทุ่มเทให้กับบอร์ดเฉพาะและไม่อนุญาตให้ทำให้ระบบเรียลไทม์ เรากำลังแก้ไขปัญหา! VIPER เป็นเครื่องเสมือน Python สำหรับ Arduino DUE และสถาปัตยกรรม ARM 32 บิตทั้งหมดที่ทำงานบนระบบปฏิบัติการแบบเรียลไทม์ ซึ่งหมายความว่าคุณสามารถพัฒนาสคริปต์ Python ที่สามารถประมวลผลได้โดย Arduino DUE, UDOO, Spark (ทุกบอร์ด) และบน ST นิวคลีโอบอร์ดใหม่ ยิ่งไปกว่านั้นหากคุณต้องการสมรรถนะสูงและคุณมีทักษะใน C คุณสามารถพัฒนาโมดูลเรียลไทม์สำหรับ VIPER ที่สามารถเรียกใช้และจัดการโดยสคริปต์ Python

คุณสามารถเห็นการทำงานของ VIPER ได้ที่นี่http://bit.ly/kickviper


มันไม่ใช่ปัญหาเปิด หลามเป็นภาษาเยื้องที่น่ากลัว
user2497

-1

ใช่. Python สามารถใช้โปรแกรม Arduino เพียงนำเข้า pyfirmata ซึ่งสามารถเชื่อมต่อ Arduino กับ Python ได้


จริง แต่นั่นไม่ใช่สิ่งที่ OP ขอ
sempaiscuba

-8

ฉันกลัว Arduino IDE ไม่ได้ใช้ภาษา C / C ++ มันมาจากการประมวลผล IDE และค่อนข้างง่ายไวยากรณ์เหมือน C / Java


8
Arduino IDE คือ C ++: ทำการประมวลผลขั้นต่ำเพียงเล็กน้อย (นำเสนอ“ #include <Arduino.h> <” และการประกาศสำหรับฟังก์ชันที่คุณกำหนดไว้) จากนั้นเรียกคอมไพเลอร์ C ++ ปกติ (GNU g ++)
Edgar Bonet

มันเป็น IDE เองมากกว่าภาษาการเขียนโปรแกรมซึ่งได้มาจากการประมวลผล
Peter Bloomfield

แทบไม่มีใครใส่ใจเรื่องการนำ IDE มาใช้ใน Arduino ประเด็นคือเพื่อให้สามารถเขียน Python ซึ่งทำงานได้อย่างมีประสิทธิภาพบน Arduino
wallyk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.