Ritorna a INPUT

:: Contraves Binari ::

Ecco un contraves, o meglio un interruttore che restituisce il valore impostato in decimale in binario. I preselettori contraves sono dei contatti rotanti utilizzati per codificare i dati di ingresso in quei circuiti a logica binaria o di ingresso. Questi preselettori contraves sono accessibili all'operatore per favorirne una facile lettura e programmazione.

La gestione dello stesso รจ stata come da sketch qui sotto utilizzata per regolare l'accensione di LED in percentuale.

Ecco il nostro progettino realizzato al Workshop di Milano !!

Ecco lo sketch :

/* 28.2.2010 Milano

 * Gianni Lenta, Giorgio Lenta, Salvati Amedeo, Caruso Angelo
 *
 * Workshop Milano
 * Gestione Contraves Binario
 *
 */

  1. define BIT1 2 //bit di peso 1 -> pin 1
  2. define BIT2 3 //bit di peso 2 -> pin 2
  3. define BIT4 4 //bit di peso 4 -> pin 7
  4. define BIT8 5 //bit di peso 8 -> pin 6

  5. define BITG 9
  6. define BITR 10
  7. define BITB 11

  8. define DELAY 300
  9. define DEBUG 2

int iBit1 = 0; int iBit2 = 0; int iBit4 = 0; int iBit8 = 0;

int iValPWM = 0;

//valore totale letto/pesato int val = 0;

void setup() {

  Serial.begin( 9600 );

  pinMode( BIT1, INPUT );
  pinMode( BIT2, INPUT );
  pinMode( BIT4, INPUT );
  pinMode( BIT8, INPUT );

  //attivazione resistori interni di pullup
  digitalWrite( BIT1, HIGH );
  digitalWrite( BIT2, HIGH );
  digitalWrite( BIT4, HIGH );
  digitalWrite( BIT8, HIGH );

  pinMode( BITR, OUTPUT );
  pinMode( BITG, OUTPUT );
  pinMode( BITB, OUTPUT );  

}

void loop(){

  iBit1 = 1 - digitalRead( BIT1 );
  iBit2 = 1 - digitalRead( BIT2 );
  iBit4 = 1 - digitalRead( BIT4 );
  iBit8 = 1 - digitalRead( BIT8 );

  val = iBit8 * 8 + iBit4 * 4 + iBit2 * 2 + iBit1;

  1. if DEBUG>1
  Serial.print( "Bit1: " );
  Serial.print( iBit1 );
  Serial.print( ", Bit2: " );
  Serial.print( iBit2 );
  Serial.print( ", Bit4: " );
  Serial.print( iBit4 );
  Serial.print( ", Bit8: " );
  Serial.print( iBit8 );
  Serial.print( " " );
  1. endif

  2. if DEBUG>0
  Serial.print( "Totale: " );
  Serial.print( val );
  1. endif

  iValPWM = map(val, 0, 9, 0, 255 );

  analogWrite( BITR, iValPWM );
  analogWrite( BITB, iValPWM );
  analogWrite( BITG, iValPWM );

  1. if DEBUG>0
  Serial.print( " Intensita' di colore: " );
  Serial.print( iValPWM );
  1. endif

  //ultime istruzioni
  1. if DEBUG>0
  Serial.println( "" );
  1. endif
  delay( DELAY );

}

Un altro particolare

Ritorna a INPUT

Share