Utente:Galessandroni/DAC

Da Wikiversità, l'apprendimento libero.

Codice sorgente[modifica]

int myPins[] = {2, 3, 4, 5};              // Definisce i pin di uscita
int t = 1000;                             // Durata di un evento in millisecondi
int i, j, k;                              // Variabili di appoggio
int n_bit = 4;                            // numero di bit

void setup(){
  for ( i = 0; i < n_bit; i++)
    pinMode(myPins[i], OUTPUT);           // Assegna la funzione di uscita a ogni pin
}

void loop() {
  for( i = 0; i < pow(2, n_bit); i++ ) {  // i definisce il generico bit
    j = i;                                // j serve per non modificare i
    for ( k = 0; k < n_bit; k++ ) {       // scorre i vari bit
      digitalWrite(myPins[k], j % 2);     // estrae il bit meno significativo (LSB)
      j = j >> 1;                         // sposta i bit a destra perdendo il LSB
    }
    delay(t);                             // attende un tempo pari a t millisecondi    
  }
}

Convertitore Digitale/Analogico[modifica]