nel primo link è un sito dove spiegano come costruire una piccola CNC e fin li mi è tutto chiaro ma quando si inizia a parlare del firmware non capisco più niente, istintivamente googolato il nome sotto quella voce trovo il secondo e il terzo link in cui si inizia a parlare di un linguaggio chiamato gcode(che credo sia un linguaggio della CNC).
E il problemi arrivano quando mi si chiede di mandare un firmware all arduino ?!?!?!!
Il firmware è il codice contenuto in un microcontrollore. Parlando dell'Arduino, è la traduzione in linguaggio macchina dello sketch utente.
Firmware indica normalmente un programma normalmente non modificabile dall'utilizzatore di un apparato. Un firmware è anche il codice del tuo telefonino oppure del tuo televisore, che normalmente non sono modificabili dall'utente.
Quindi il firmware è il codice che fa capire l' Arduino le istruzioni che si scrivono sul' IDE.
Cambiare firmware vuol dire far capire delle altre istruzioni al Arduino, Giusto?!?!?!?
Ogni cosa ha il suo linguaggio. Tu scrivi in C ma il C non è capito dalla CPU del microcontrollore, essa sa "leggere" solo il linguaggio macchina. Il compilatore converte il tuo sketch che scrivi nell'IDE in un formato leggibile dall'Atmega328. La scrittura di un nuovo firmware la fai con l'upload eseguito tramite l'IDE.
Quelli sono file binari, ossia firmware già pronti per essere caricati su un microcontrollore. Per fare ciò devi usare avrdude da terminale (cerca sul forum, ci sono tante discussioni: io personalmente ho messo tante volte i comandi da dare).
Le macchine utensili a controllo numerico (CNC) usano da tempo un linguaggio chiamato G-code che è universale (o quasi) e che risponde alle regole ISO 6983.
In pratica, alla macchina si invia un file ASCII che contiene delle righe di testo di questo tipo:
N10 G01 X100 Y100 Z100 S1000 F250 M03
Se Arduino è il controller CNC, esso deve interpretare questo file in modo che agisca di conseguenza:
N10 ... numero blocco istruzioni
G01 ... interpolazione lineare
X100 ... asse X
Y100 ... asse Y
Z100 ... asse Z
S1000 ... velocità spostamento
F250 ... avanzamento (feed)
M03 ... avvia mandrino in senso orario