Non sono molto abile con il linguaggio C e mi chiedevo se esiste un modo in cui python potesse essere usato per programmare un Arduino. Ciò richiederebbe probabilmente un IDE diverso per poter eseguire il debug degli script stessi.
Non sono molto abile con il linguaggio C e mi chiedevo se esiste un modo in cui python potesse essere usato per programmare un Arduino. Ciò richiederebbe probabilmente un IDE diverso per poter eseguire il debug degli script stessi.
Risposte:
Sarà estremamente difficile ottenere qualsiasi tipo di script Python in esecuzione direttamente su Arduino. Il motivo è che si tratta di un linguaggio interpretato, quindi è necessario un interprete integrato oltre allo script di testo normale. Probabilmente non ci sarà abbastanza memoria per tutto ciò.
La tua scommessa migliore sarebbe probabilmente trovare un modo per compilare uno script Python in codice macchina nativo (che è come funziona C / C ++). Credo che ci siano progetti in giro per fare qualcosa del genere per altre piattaforme, ma (per quanto ne so) nessuno che lo faccia ancora con successo per Arduino.
Potresti trovare alcune informazioni più utili su questa domanda in Stack Overflow: c'è un modo per "compilare" il codice Python su un Arduino (Uno) .
Sì, è (in qualche modo) possibile programmare Arduino usando Python. Uno di questi progetti su Github è l' API di Python Arduino Prototyping v2 . Fornisce funzionalità di base come l'I / O digitale e l'I / O analogico.
Questo può essere usato per progetti molto semplici.
* Questo progetto è un po 'un trucco per "programmare" la scheda usando la connessione seriale. Passa i comandi sulla connessione seriale a uno schizzo in esecuzione sulla scheda che "esegue" il comando Python.
Esiste un progetto che porta una macchina virtuale Python ai microcontroller, incluso Arduino Mega .
Ecco una citazione dell'Ardunio Mega README , che dà un'idea di come potrebbe essere (ma non l'ho provato!):
Di seguito è riportata una sessione di esempio che utilizza 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)
Ho usato pyserial con grande successo nel controllo dei pin sull'arduino. La workstation (laptop, ecc.) Esegue uno script Python che comunica in tempo reale con Arduino.
Non è esattamente come eseguire lo script direttamente sull'arduino, ma stavo facendo un po 'più di quanto pensassi che l'arduino potesse gestire (alcune analisi musicali, colpire un API REST, ecc.).
Un'altra opzione da considerare è l' Arduino Yun . Oltre al chip AVR di cui dispone la maggior parte degli Arduinos, include anche un chip MIPS con Linux. Dal momento che è Linux, puoi facilmente eseguire il codice Python e qualsiasi pacchetto Pure-Python può essere facilmente installato.
Tuttavia, tutte le interessanti funzionalità di input / output si trovano sul chip AVR, non sul chip MIPS. Progetti come Autobahn e LininoIO risolvono questo problema eseguendo un programma speciale sul chip AVR che esegue le operazioni di I / O sotto le istruzioni del chip MIPS.
Sappiamo che questo è un problema aperto nella programmazione di Arduino e nel mondo embedded in generale. Esistono varie soluzioni disponibili sul mercato come MicroPython, ma la maggior parte sono dedicate a schede specifiche e non consentono di mantenere il sistema in tempo reale. Stiamo lavorando a una soluzione! VIPER è una macchina virtuale Python per Arduino DUE e tutte le architetture ARM a 32 bit che gira su un sistema operativo in tempo reale. Ciò significa che è possibile sviluppare script Python che possono essere eseguiti da Arduino DUE, UDOO, Spark (tutte le schede) e anche sulle nuove schede ST nucleo. Inoltre, se hai bisogno di prestazioni elevate e sei esperto in C, puoi sviluppare moduli in tempo reale per VIPER che possono essere chiamati e gestiti dagli script Python.
Puoi vedere VIPER in azione qui http://bit.ly/kickviper
Potresti imparare da C (AVR) come funzionano i sensori ma richiede molto più tempo. Arduino IDE Code e Python Code per Arduino utilizzano le funzioni del codice C per semplificare le cose. Python e Arduino IDE se usano Firmata usano la comunicazione seriale e pensi di scrivere codice.
Sì. Python può essere usato per programmare un Arduino, semplicemente importando pyfirmata, che può interfacciare l'arduino con Python.
Temo che Arduino IDE non usi il linguaggio C / C ++. Deriva dall'IDE di elaborazione e ha una sintassi semplificata simile a C / Java.