Concetti Chiave

  • Il progetto prevede la realizzazione di un convertitore da numeri decimali a numeri binari a 8 bit utilizzando una scheda Arduino UNO.
  • La conversione avviene attraverso una serie di divisioni a catena per 2, considerando i resti di ciascuna divisione.
  • Il monitor seriale è utilizzato per inserire i numeri decimali e visualizzare i risultati della conversione in binario.
  • Il programma limita l'input a numeri decimali minori di 256, restituendo un messaggio di errore per valori superiori.
  • Il codice è strutturato in due funzioni principali: void setup() per inizializzare la comunicazione e void loop() per gestire la conversione dei numeri.

Oggi avremo a che fare con un progetto un po' particolare: realizzare un convertitore di numeri decimale in numeri binari a 8 bit con il solo ausilio della scheda Arduino, senza altri strumenti. Quindi assicurati di avere a portata di mano:

--Questo progetto consiste nel collegamento al monitor seriale, al quale forniremo dei numeri decimali che il nostro convertitore trasformerà in Sappiamo benissimo che per convertire un numero decimale in binario è necessario eseguire una divisione a catena per 2 e successivamente considerarne i resti.

Implementazione del codice

È ciò che faremo fare al nostro Arduino, eseguire una serie di divisioni, considerarne il resto, e stampare il risultato sul void setup(){

Serial.begin(9600); //Impostiamo la comunicazione col monitor seriale alla velocità di 9600 baud

}

void loop(){

int val = Serial.parseInt(); //Chiamiamo val il valore che immetteremo nel monitor seriale

if(val > 0){ //se il valore immesso è maggiore di 0, ovvero se inseriamo qualcosa,

if(val

int restouno = val%2; //chiamiamo restouno il resto del numero diviso per 2.

int restodue = ((val-restouno)/2)%2; //chiamiamo restodue il resto del numero meno il resto diviso per due, e così via, a catena.

int restoquattro = ((((val-restouno)/2)-restodue)/2)%2;

int restootto = ((((((val-restouno)/2)-restodue)/2)-restoquattro)/2)%2;

int restosedici = ((((((((val-restouno)/2)-restodue)/2)-restoquattro)/2)-restootto)/2)%2;

int restotrentadue = ((((((((((val-restouno)/2)-restodue)/2)-restoquattro)/2)-restootto)/2)-restosedici)/2)%2;

int restosessantaquattro = ((((((((((((val-restouno)/2)-restodue)/2)-restoquattro)/2)-restootto)/2)-restosedici)/2)-restotrentadue)/2)%2;

int restocentoventotto = ((((((((((((((val-restouno)/2)-restodue)/2)-restoquattro)/2)-restootto)/2)-restosedici)/2)-restotrentadue)/2)-restosessantaquattro)/2)%2;

Serial.print(restocentoventotto); //stampa il resto del bit corrispondente a 128

Serial.print(restosessantaquattro); //stampa il resto del bit corrispondente a 64

Serial.print(restotrentadue); //stampa il resto del bit corrispondente a 32

Serial.print(restosedici); //stampa il resto del bit corrispondente a 16

Serial.print(restootto); //stampa il resto del bit corrispondente a 8

Serial.print(restoquattro); //stampa il resto del bit corrispondente a 4

Serial.print(restodue); //stampa il resto del bit corrispondente a 2

Serial.println(restouno); //stampa il resto del bit corrispondente a 1

}else{

Serial.println("Numero troppo grande!"); //se la condizione è falsa, ovvero il numero è maggiore o uguale di 256, il monitor restituirà la frase tra gli apici.

}

}

}

Esecuzione e risultati

Il gioco è fatto. Basta aprire il monitor seriale ed inserire un numero minore di 256 per avere la sua conversione in binario!

Domande da interrogazione

  1. Come funziona il convertitore di numeri decimali in binari a 8 bit con Arduino?
  2. Il convertitore utilizza una serie di divisioni a catena per 2 per ottenere i resti, che rappresentano i bit del numero binario. I risultati vengono poi stampati sul monitor seriale, a condizione che il numero immesso sia compreso tra 0 e 255.

  3. Qual è il limite del numero decimale che può essere convertito?
  4. Il numero decimale da convertire deve essere minore di 256; altrimenti, il programma restituirà un messaggio di errore: "Numero troppo grande!".

  5. Qual è la velocità di comunicazione impostata per il monitor seriale?
  6. La comunicazione con il monitor seriale è impostata a una velocità di 9600 baud, come specificato nel codice all'inizio del programma.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community