Escribir Binario fácil

Hola, necesito para controlar una fuente de corriente digital. Para eso quiero escribir un número via serial y que un arduino mega me lo escriba digitalmente: ejemplo si el serial dice 1 quiero que mi salida en 10 puertos digitales sea LOW LOW LOW....HIGH, si dice 2 LOW LOW..... HIGH LOW y así para cualquier número. ¿Hay alguna forma de hacer esto sin escribir las tediosas divisones necesarias para pasar un número a binario? Leí Arduino Playground - BitMath pero no me quedó del todo claro qué código usar.

Gracias

Creo que no te he entendido del todo... ¿tu quieres pasar un numero (del 1 al 10) por el puerto serie y que ponga en HIGH el pin digital que corresponde a ese numero? Eso no es binario, es simplemente asignar una salida al numero que le pasas.

Lo que explicas sería algo similar a esto

 int vectorSalidas[] = {1,2,3,4,5,6,7,8,9,10}; //asignar numero de pin

void setup()
{
  for (int i = 0; i < 10; i++) {
    pinMode(vectorSalidas[i], OUTPUT); 
  }
  Serial.begin(9600);
}

void loop(){
if (Serial.available() > 0) 
    {
      int inByte = Serial.read();
      switch (inByte) 
      {
        case '1':    
          pines(1);
          break;
       case '2':    
          pines(2);
          break;
       case '3':    
          pines(3);
          break;
       case '4':    
          pines(4);
          break;
       case '5':    
          pines(5);
          break;
       case '6':    
          pines(6);
          break;
       case '7':    
          pines(7);
          break;
       case '8':    
          pines(8);
          break;
       case '9':    
          pines(9);
          break;
      default:
          pines(10);
          break;
      }
    }
}


void pines(int pin)
{
  for (int i= 0; i<10; i++)
  {
      vectorSalidas[i] = LOW;
  }
  vectorSalidas[pin%10] = HIGH;
}

No, no. Quizas no me exprese bien, yo quiero escribir cualquier numero entre 0 y (2 a la N)-1, en binarios con N igual al numero de bits q tenga. Por eso decia de pasarlo a binario. Quizas hay algun metodo para escribir un numero cualquiera en binario sin hacer las divisiones.

osea lo digo de nuevo si escribo 1 quiero tener LOW LOW LOW.... HIGH si escribo en el serial 2 a la N -1 quiero HIGH HIGH HIGH.... HIGH, para cualquier numero entero en el rango

Dicho de otra forma mas quiero un traductor a binario, con entrada por serial y salida digital.

creo que buscas esto_

aero_yo:
creo que buscas esto_

Arduino Reference - Arduino Reference

Si busco eso no me doy cuenta como usarlo.

Habia pensado guardar la lectura del serial en un entero llamado numero, y despues la salida del bit menos significativo sera Bitread(numero,0)
Entonces deberia poder escribir algo como digitalWrite(pin del menos significativo, Bitread(numero,0)) no se si interpreta HIGH como 1, pero se debe poder hacer algo asi.

Escucho ofertas

Si lo he entendido, creo que lo que quieres es pasar un número por puerto serie, convertirlo en binario y poner en alto los puertos correspondientes a los unos de ese número en binario:

Puerto serie = "38" o 38 (no queda claro)
Número binario = 0010.0110

Si utilizas 8 puertos (númerados de P0 a P7):
(0) P0=LOW
(1) P1=HIGH
(1) P2=HIGH
(0) P3=LOW
(0) P4=LOW
(1) P5=HIGH
(0) P6=LOW
(0) P7=LOW

Primero de todo, tienes que tener en cuenta si por el puerto serie vas a recibir 38 o "38", es decir un byte o varios carácteres ascii que forman un número decimal, para hacer la conversión correspondiente a byte del valor en el arduino.

Después, una vez que tienes el valor en byte (ya lo tienes en binario), utilizar máscaras para ver que bits están en alto, en la forma:

#define MASK_1  1  // en binario 0000.0001
#define MASK_2  2  // en binario 0000.0010
#define MASK_4  4  // en binario 0000.0100
#define MASK_8  8  // en binario 0000.1000
#define MASK_16 16  // en binario 0001.0000
...
  if(numeroRecibido & MASK_1) // Comparación bit a bit
    digitalWrite(pin1, HIGH);
  else
    digitalWrite(pin1, LOW);
  
  if(numeroRecibido & MASK_2) // Comparación bit a bit
    digitalWrite(pin2, HIGH);
  else
    digitalWrite(pin2, LOW);
...

GRACIAS A TODOS, Jorge me has solucionado la vida! (en argentino sería "me solucionaste")

Saludos