Topic: Python per Arduino  (Letto 1411 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Python per Arduino
« il: Settembre 01, 2016, 18:08 »
Ciao,
Mi piacerebbe ci fosse un modo di programmare e debuggare con python. Poi una volta risolto il più compilarlo e caricarlo su Arduino.
Ho trovato pyxie, ma credo sia ancora poco capace. C'è qualcuno che l' ha provato?
Come si comporta con le liste ?
Atri strumenti che usando python possono aiutare il debug di Arduino, senza continuamente caricare sketch che forse non sono ancora validi ?

Offline Claudio_F

  • python sapiens sapiens
  • ******
  • Post: 1.157
  • Punti reputazione: 2
    • Mostra profilo
Re: Python per Arduino
« Risposta #1 il: Settembre 01, 2016, 20:12 »
A me sembra che con 2 kappa di memoria si possa far girare solo un simulacro sintattico ben distante dalla filosofia e potenzialità del linguaggio. Dicono che 2k di RAM sia il limite minimo per farci funzionare (decentemente) anche il semplice C (e non sappiamo quanti byte siano effettivamente utilizzabili su Arduino). A questo punto che vantaggio porterebbe scrivere in similpython, forse perdendo anche il controllo sull'allocazione che su un sistema così ridotto va centellinata accuratamente)?

Tutto ciò senza nulla togliere all'impegno, all'idea, al piacere personale di realizzarla.

Offline Tungsteno

  • python erectus
  • ***
  • Post: 183
  • Punti reputazione: 0
    • Mostra profilo
Re: Python per Arduino
« Risposta #2 il: Settembre 03, 2016, 07:37 »
Ciao. Tempo fa ci ho provai ache io a cercare qualcosa di simile per Arduino, ma a parte 1 o 2 implementazioni che non hanno quasi nulla a che fare con Python (a parte la descrizione), ho notato che entrambi usano praticamente un subset molto molto stretto di cPython.

Quindi come dice bene anche Claudio_F, visti i processori e le architetture in gioco è praticamente impossibile supportare python "standard" su Arduino (con tutti i suoi vantaggi). Ti conviene (come ho fatto io) studiarti bene come funziona arduino e la sua implementazione di C e appoggiarti a Python tramite seriale wifi o simili per sviluppare il tuo programma.

A me sembra che con 2 kappa di memoria si possa far girare solo un simulacro sintattico ben distante dalla filosofia e potenzialità del linguaggio.

Infatti, ci hai azzeccato in pieno. Su una delle implementazioni su cui mi informai c'era proprio scritto che era praticamente un'implementazione sintattica di python su android più che un vero interprete. Si può dire che è stato scritto più che altro per chi non più fare a meno della sintassi di Python da tutte le parti.  :D

A questo punto che vantaggio porterebbe scrivere in similpython, forse perdendo anche il controllo sull'allocazione che su un sistema così ridotto va centellinata accuratamente)?

Togli il forse. Da quello che lessi un paio di anni fa, si andava ad inizializzare le variabili che si volevano usare, in pratica come in C.
« Ultima modifica: Settembre 04, 2016, 09:46 da Tungsteno »

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Re: Python per Arduino
« Risposta #3 il: Settembre 04, 2016, 02:10 »
Beh, io ho letto quello che si potrebbe implementare un python su arduino. Specialmente BitLash  e PyMite che magari  vuole microcontrollori di livello elevato. Ma non è quello che intendevo, forse mi sono espresso malino.
Quello che intendo, sarebbe un traduttore che dallo script python mi traduce in codice C++ per arduino e quindi lo si compila. Quello che farebbe pyxie. Sebbene a riguardo ho i miei dubbi che lavori abbastanza bene. Forse anche dovuto al fatto di colloquiare/riconoscersi con le librerie interne.
Per i ucontrollori di Microchip ho visto Pyastra. Peccato che non hanno continuato.

Il mio problema sarebbe di imbarcarmi ad apprendere un nuovo linguaggio, forse ci vorrebbe diversi mesi, mentre mi suona più familiare con python :).
Forse non è così fattibile e darò ragione a Claudio.
« Ultima modifica: Settembre 04, 2016, 02:20 da pestatasti »

Offline Claudio_F

  • python sapiens sapiens
  • ******
  • Post: 1.157
  • Punti reputazione: 2
    • Mostra profilo
Re: Python per Arduino
« Risposta #4 il: Settembre 04, 2016, 10:54 »
Il mio problema sarebbe di imbarcarmi ad apprendere un nuovo linguaggio, forse ci vorrebbe diversi mesi, mentre mi suona più familiare con python :)

Il C praticamente usabile su Arduino (sempre per limiti di memoria) alla fine è solo un subset elementare, si può (o forse si deve) dimenticare l'allocazione dinamica, i puntatori saltano fuori giusto qualche volta nel passaggio/ritorno tra funzioni. Si possono creare oggetti? Beh si, e si è praticamente obbligati ad usare quelli delle librerie esterne (seriale, i2c ecc), ma considerando strettamente l'ambito applicativo (microcontrollo appena un gradino sopra l'assembly) variabili e strutture statiche globali grandi su misura per i dati da trattare, qualche funzione per lavorarci su, poche varabili locali e parametri per contenere l'uso fisico dello stack, niente ricorsione, stringhe e funzioni di stringa il minimo assoluto indispensabile... le stringhe costanti vanno allocate nella ROM (tutte accortezze e/o uso risorse su cui in similpython forse non si avrebbe controllo). Secondo me non ha senso non impararsi quel poco di sintassi necessaria.

Offline pestatasti

  • python neanderthalensis
  • ****
  • Post: 405
  • Punti reputazione: 0
    • Mostra profilo
Re: Python per Arduino
« Risposta #5 il: Settembre 05, 2016, 17:46 »
Secondo me non ha senso non impararsi quel poco di sintassi necessaria.

Devo arrendermi e mi hai convinto che ho da fare in quel modo.
Poi un int per dichiarare un piedino, mi par che la memoria va via come il pane.

Offline Claudio_F

  • python sapiens sapiens
  • ******
  • Post: 1.157
  • Punti reputazione: 2
    • Mostra profilo
Re: Python per Arduino
« Risposta #6 il: Settembre 05, 2016, 19:47 »
I valori costanti sono memorizzati nella ROM da 32k. In RAM ci sono le variabili, lo stack(compresi gli argomenti passati alle funzioni), e una quota parte usata dalle funzioni di libreria. Una cosa come questa secondo me non occupa RAM:
[codice]pinMode(5, OUTPUT)[/codice]

Poi si può sempre fare del bitmapping (in un byte stipi otto bit/flag/stati indipendenti).
« Ultima modifica: Settembre 05, 2016, 19:49 da Claudio_F »

Offline Tungsteno

  • python erectus
  • ***
  • Post: 183
  • Punti reputazione: 0
    • Mostra profilo
Re: Python per Arduino
« Risposta #7 il: Settembre 06, 2016, 09:55 »
Secondo me non ha senso non impararsi quel poco di sintassi necessaria.

Devo arrendermi e mi hai convinto che ho da fare in quel modo.
Poi un int per dichiarare un piedino, mi par che la memoria va via come il pane.

Volendo ci sarebbe anche la memoria Flash da usare, solo che non tutte le implementazioni del bootloader ti danno la possibilità di accedere all'area riservata al programma (program space) anche se non sempre serve, quindi dovresti scegliere il bootloader appropriato. Una se non erro è optiboot, le altre non ricordo quali sono (ma credo che una semplice ricerca su google ti faccia saltare fuori i risultati giusti).

Qui trovi una piccola spiegazione sulle memorie di arduino https://www.arduino.cc/en/Tutorial/Memory.
« Ultima modifica: Settembre 06, 2016, 09:58 da Tungsteno »