Python

Salve,
sono nuovo dell'ambiente...
Girando per internet ho visto che la maggior parte delle guide sono per programmare Arduino in simil C.
Io da canto mio sto imparando Pythos.
Ho letto che programmare in Python cosi come in altri linguaggi interpetrati , possono dare problemi per la gestione della ram , e quindi, i programmi non funzionano.
Volevo sapere se a tutto oggi vi è ancora questo problema o è stato risolto, e se c'è qualche versione di arduino (scheda) più compatibile a tale linguaggio .
Grazie 1000
Trip

Se vuoi programmare in Python prendi un Raspberry Pi, fai prima.

Su Arduino potrebbe magari un giorno uscire un port di MicroPython, ma a mio avviso è proprio sbagliato il concetto: se vuoi giocare con Arduino non puoi allontanarti più di tanto dall'hardware. Se vuoi allontanarti dall'hardware allora Arduino non è la scelta giusta :).

Essendo il tuo primo post Ti invitiamo a presentarti QUI
(dicci quali conoscenze hai di elettronica e di programmazione) e a leggere il regolamento QUI
se non lo hai già fatto.

Comunque benvenuto sul forum.

Attilio

trip:
Ho letto che programmare in Python cosi come in altri linguaggi interpetrati , possono dare problemi per la gestione della ram , e quindi, i programmi non funzionano.
Volevo sapere se a tutto oggi vi è ancora questo problema o è stato risolto

Questo problema non è mai esistito, i linguaggi interpretati, Python, PHP, Perl, Javascript, ecc, in parte anche Java, hanno tanti difetti e altrettanti vantaggi. Uno di questi è la semplicità e il distaccamento dello sviluppo per la specifica macchina, se mi trovo su debiant, su Linux, su Windows o su Mac per me programmatore non cambia nulla. Si guadagna cosi una semplicità di stesura del codice, per esempio la gestione della memoria è affidata quasi interamente all'interprete. Questo può essere un vantaggio (semplicità di scrittura del codice, per esempio un cast in Javascript ha un livello di complessità ben lontano dal C) e anche uno svantaggio, non posso ottimizzare piu di tanto le risorse, dato che non sono io a gestirle. Ma arrivare allo script che non funziona... non posso dare la colpa all'interprete, io sviluppatore devo essere conscio dei limiti del linguaggio, ma questo discorso si applica anche a tutti i linguaggi.

Arduino usa il compilatore originale che da il produttore del Controller montato. Esiste ancora un compilatore Baasic (BASCOM) ma quanto ne so io non ci sono altri compilatori/interpreti per Arduio.
Ciao Uwe

trip:
Volevo sapere se a tutto oggi vi è ancora questo problema o è stato risolto, e se c'è qualche versione di arduino (scheda) più compatibile a tale linguaggio .

No. Arduino Uno, Mega, Micro, Nano sono MCU pensate per controllare circuiti e fare prototipazione, non sono un piccolo computer. Se vuoi programmare in Python lato Linux puoi optare per Arduino Yun.
https://www.arduino.cc/en/Guide/ArduinoYun#toc3

grazie a tutti per il tempo dedicatomi.
Non sono un programmatore, so un po di elettronica, quel che mi ricordo dai tempi della scuola.Sto cercando di imparare Python, e pensavo si potesse utilizzare anche per programmare i microcontrollori.Dalle vostre risposte apprendo che non è così.
La mia frase "Ho letto che programmare in Python cosi come in altri linguaggi interpetrati , possono dare problemi per la gestione della ram , e quindi, i programmi non funzionano."deriva dalla lettura di un articolo in questi sito dove dice:"You can use these languages to communicate with the Arduino, but in general, code in these languages will not run on the board."
ciao
Trip

Con Python puoi farci tutto, a patto che qualche brava persona abbia sviluppato un interprete per il device su cui vuoi sviluppare. Come ti ha suggerito nid puoi sviluppare in Python per Yun che di per se un vero e proprio computer con un SO. Le altre schede Arduino sono semplicemente dei microcontrollori a cui è stata aggiunta una serie di componenti HW per velocizzare la prototipazione. I microcontrollori non montano un SO(sono destinati a essere parte di sistemi embedded) quindi niente Python, Java, Javascript o PHP.

grazie per la puntualizzazione !
Ciao

Ribadisco comunque che se proprio vuoi programmare in Python anche il Raspberry Pi è una valida scelta. Peraltro, con le giuste librerie puoi comandare direttamente i pin GPIO, cosa che non so quanto sia semplice sulla Yun.

@sukko ho la Raspy e la Yun. Tutte e due presentano difficoltà.
Ho anche preso dei libri da futuraelettronica che mi hanno aiutato molto.
Su Yun la parte circuiti è Arduino quindi C come abituati sulla Uno/Leonardo poi con librerie Bridge/Process comunichi con parte Linux.
Su Raspy la fregatura (per hobbisti abituati ai 5V) è che il GPIO è solo a 3,3V e NON c'e' pin analogici quindi no input analogico (A0-A5) ed inoltre i pin disponibili sono pochini.

Giuste osservazioni! Io ho un paio di Raspi ma non la Yun, e a questo punto non mi è chiaro cosa puoi fare sulla Yun in Python: puoi comandare direttamente i pin o devi fare qualcosa in C per forza?

I pin GPIO sul Raspi mi pare siano 17, più o meno come su Arduino :). Ha anche l'i2c, per cui puoi facilmente usare un I/O expander o un ADC per sopperire alle mancanze citate. Certo, le cose si complicano un po'...

SukkoPera:
Giuste osservazioni! Io ho un paio di Raspi ma non la Yun, e a questo punto non mi è chiaro cosa puoi fare sulla Yun in Python: puoi comandare direttamente i pin o devi fare qualcosa in C per forza?

Mi pare la seconda, ma è da un pò che non la uso. Mi pare carichi su parte atmel uno sketch tipo Firmata e poi da Linux Yun (openwrt) puoi colloquiare usando delle librerie.

SukkoPera:
a questo punto non mi è chiaro cosa puoi fare sulla Yun in Python: puoi comandare direttamente i pin o devi fare qualcosa in C per forza?

La Yun è costituita da una Leonardo con aggiunto un SoC dove gira una distro Linux, il SoC è uno di quelli normalmente utilizzati su i Router WiFi con tutti i limiti del caso, la comunicazione tra parte Arduino e parte Linux avviene tramite seriale.
In pratica sulla Yun hai un Arduino che fa da interfaccia low level per Linux, la programmazione è facilitata dalla libreria bridge che consente l'interazione tra le due parti.

I pin GPIO sul Raspi mi pare siano 17, più o meno come su Arduino :). Ha anche l'i2c, per cui puoi facilmente usare un I/O expander o un ADC per sopperire alle mancanze citate. Certo, le cose si complicano un po'...

Però non ti scordare che i GPIO presenti su i sistemi Linux embedded possono erogare pochi mA, solitamente non più di 3, vanno esclusivamente a 3.3V, o addirittura a 1.8 V, non sono accessibili in real time per via dei limiti di Linux, in pratica vanno bene se vuoi comandare dei relè/mos per compiti dove non è importante la velocità e il real time.
Per tutte le altre cose si usa sempre un sistema Linux embedded abbinato a una, o più, mcu per gestire il low level.

Certo, ma se devo gestire roba real-time non mi metto a farlo a Python :blush: (linguaggio che comunque personalmente adoro!).

Chiaro anche il resto, ora trip dovrebbe poter scegliere da sé con coscienza :).

SukkoPera:
Certo, ma se devo gestire roba real-time non mi metto a farlo a Python

perche non va bene in real time?
grazie

trip:
perche non va bene in real time?
grazie

Perché Python, come tutti i linguaggi interpretati o tramite pcode, non permette il controllo real time, inoltre lo stesso Linux, come Windows, non è un sistema operativo real time, noti anche come RTOS.

ma ripeto che Linux 2.6 permetteva gia l'hard real time figuriamoci adesso che è avanzato.
Sicuramente è un pelo diverso da un FreeRTOS o da un SalvoRTOS, anche perchè Linux permette di fare molte piu cose.
Dunque se linux permette il RT allora è possibile anche in Python senza nessun problema.

python development board
python development board

vbextreme:
ma ripeto che Linux 2.6 permetteva gia l'hard real time figuriamoci adesso che è avanzato.

Ancora con questa barzelletta ?
Linux non è e non può essere un RTOS, sono due mondi diversi realizzati in modo diversi, almeno parlando di un vero RTOS, se poi vuoi chiamare RTOS un S.O. non RTOS patchato alla meno peggio per scimmiottare un vero RTOS allora è un altro paio di maniche :slight_smile:

@astrobeed, litighiamo un pò dai... mi annoio... sei sempre rintanato nel tuo blog