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.