McMax, intanto complimenti per il lavoro. Sto leggendo il programma ed e' un gran bel lavoro.
Ci sono alcune cose che non ho capito, posso romperti le scatole?
Intanto, ho modificato il programma per poter usare il display con un multiplexer i2c, mi faceva fatica collegare tutti i fili del display
Poi ho fatto un pcb per non usare direttamente la scheda arduino.
Se qualcuno e' interessato, posso caricare i files.
E adesso le domande:
1. la variabile actual_integer_steps (che usi nella funzione CreaSequenza) e' un byte. Ho provato a simulare (carta e penna) i conti che fai (1000 passi di encoder, vitemadre passo 3, 800 step/giro e passo filettatura 1mm) e quella variabile va in overflow. Sicuramente la cosa e' voluta (visto che funziona), ma perche' sfruttare l'overflow e non usare una variabile int? Questione di spazio?
2. l'array per stabilire la posizione dell'encoder l'hai dichiarata cosi: char encoder[] = {0, 1, -1, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, -1, 1, 0};.
L'hai dichiarata char per questione di memoria? I valori che popolano l'array come li hai trovati? Premetto che non ci ho ragionato sopra (mi sto concentrando sulle routine filettatura, quella piu' interessante).
3. per ora sono fermo nella serie di while all'interno della funzione FilettaturaToPosition... in un primo momento mi sembrava non facesse nulla, mi ero scordato che avevi attivato la routine di interrupt dell'encoder che va a modificare diverse variabili (e quindi entri nell'IF appropriato)
E infine alcune "critiche" (piu' che altro gusti personali, leggi: "cose che io avrei fatto diversamente"):
1. non avrei usato il joystick, tutti quelli che ho provato (cinesi o recuperati da controller ps3, sia cinesi che originali) hanno una corsa utile che arriva a poco meno di 3/4 della corsa reale (mi spiego: col joystick a riposo leggo 5kohm circa, lo sposto da una parte e arrivo a 10k molto prima che il joystick sia a fine corsa). Sara' che sono un animale ma devo bisticciare ogni volta per arrivare ad inserire il valore corretto. Se mi riesce, modificherei il programma per mettere 4 pulsanti.
2. il lavoro che hai fatto nei menu' e' una chicca, me lo devo studiare bene per sfruttarlo nei miei (molto) futuri progetti. Io avrei tolto tutto il menu impostazioni, scrivendo direttamente i parametri in una costante del programma. Vero che, come hai fatto tu, il programma e' piu' professionale e pronto da usare (quindi usabile da chiunque... per questo tanto di cappello per il lavoro fatto), pero' togliendo tutta quella parte risparmieresti tutte le routine per scrivere/leggere dall'eeprom e, ovviamente, tutta la parte del menu impostazioni.
Comunque e' e resta un lavoro mastodontico