Pilotare simultaneamente 2 servi rc con NodeMcu 8266

Salve a tutti,
vi scrivo perchè non so dove sbattere la testa...anzi non so come sbatterla e in quali angoli!!! ahahah
Apparte gli scherzi... ho sviluppato un progettino con l'arduino Nano dove praticamente ho la lettura di un file sd, la gestione di uno schermo tft 1.8 st7735 con relativa gui, un microfono per attivazione comandi e il pilotaggio di due servi rc con la libreria VarSpeedServo.h.... funziona tutto...unico problema? per via diciamo della gui e della parte di gestione del display... mi sono mangiato troppa memoria risultato? sono arrivato al 90% della fine del progetto ma ora non ho più memoria per scrivere codice... ho cercato di ottimizzare al massimo le relative funzioni... ma piu di tanto non sono riuscito ad ottimizzare....

Ho scoperto durante la mia disperazione che i nodemcu hanno una valanga di memoria per scrivere codice allora ne ho comprato qualcuno col tentativo di fare il porting dell'elettronica e del software... ma qui arriva il disastro!!! Ho scoperto che la libreria (per me fondamentale) VarSpeedServo.H non funziona su 8266....

ho bisogno di pilotare due servi a velocità diverse senza bloccare il programma... come potrei fare?

avevo pensato a collegare un arduino un seriale e passare i comandi... ma mi sembra un po esagerato... allora avevo pensato di trovare qualhe scheda per pilotare i servi magari in i2c o spi ma non so se esiste... o meglio ne ho trovata una a 16 canali ma non so se fa al caso mio...

Qualcuno ha qualche idea per realizzare la cosa in maniera "semplice"? ripeto la mia esigenza è quella di pilotare 2 servi rc in contemporanea a velocità differenti con l' 8266.... con l'arduino già funziona ma ho esaurito i 32k.....

Il top sarebbe una libreria tipo VarSpeedServo.h però funzionante su 8266....

Grazie a chi potrà aiutarmi e no! :slight_smile:

Se vuoi sull'ottimizzazione possiamo provare a darti qualche consiglio, ma dovresti postare il codice...

Per la libreria, effettivamente non vedo nessuna libreria che faccia quello che fa la VarSpeedServo, e lo stesso autore ho letto che ha scritto:

As owner of this library, I agree. My version of VarSpeedServo is built on prior work that was started a long time ago. I think the only path is to rebuild the library on the modern servo libraries so VarSpeedServo isn't tied down to the AVR. For example, then we could then make use of:
Arduino/libraries/Servo at master · esp8266/Arduino · GitHub
This would require coming up with a new architecture and rewriting much of the underlying code. I don't have time for that at this point, but perhaps in the summer. If anyone can find any other libraries out there that are more modern and could be adapted, that would be a big help. Or if anyone with low level servo experience wants to volunteer some time and to collaborate with me, that would be much appreciated!

Per cui temo che finora non ci siano alternative se non usare Arduino e cercare di liberare spazio...

Grazie per la risposta, fortunatamente ripensando al mio progetto, ho capito che potevo semplicemente creare una funzione che muovesse i due servi in contemporanea modulando opportunamente il pwm dei servi... quello che mi dispiace è che avevo raggiunto il 95% del progetto...! ufff ma in fondo in fondo lo sapevo che sarebbe successo.... quindi ho deciso di passare tutto quanto all'8266... unica cosa è che non mi torna tanto bene lo spazio per scrivere il programma... usando l'8266 (devo ancora iniziare ho compilato solo qualche esempio di test del display st7735) a pelle... sembra di avere solo 64kb per il programma... tutto questo guardando solo la percentuale di riempimento nella compilazione... ma su 8266 non c'è 1mb o addirittura 4mb (come nel mio caso, esp8266_12E) ?!?!?

comunque dovrei farcela...

altra cosa se qualcuno ha avuto esperienza o meno... su l'arduino ho utilizzato un display st7735 con successo ci faccio di tutto.... ma con l'8266 posso usare la solita libreria o ci vuole una speciale?

SuperDenab:
unica cosa è che non mi torna tanto bene lo spazio per scrivere il programma... usando l'8266 (devo ancora iniziare ho compilato solo qualche esempio di test del display st7735) a pelle... sembra di avere solo 64kb per il programma... tutto questo guardando solo la percentuale di riempimento nella compilazione... ma su 8266 non c'è 1mb o addirittura 4mb (come nel mio caso, esp8266_12E) ?!?!?

Dipende, ma per prima cosa, per capire meglio, quando dici "8266" di quale parli esattamente? Perché ci sono gli ESP-01 (da programmare con apposito convertitore), e ci sono vari chip ESP8266 e vari "tagli" di flash memory. Magari metti un link al tuo prodotto (e dò per scontato che tu abbia configurato correttamentel'IDE di Arduino per programmarla).

Poi parli di 64kb, 1mb, 4 mb, tu devi distinguere tra memoria FLASH e RAM! Per esempio l'ESP delle WeMos D1 Mini (ESP8266EX) ha circa 50k di RAM utilizzabili per il tuo programma, e ben 4MB di memoria flash che puoi usare o come la EEPROM di Arduino UNO (che però è di solo 1k, o 4k del Mega), o come file system (quindi vederla come un disco da 3Mbyte).

In sostanza, ha risorse maggiori rispetto ad una UNO, dovresti starci tranquillamente.