Go Down

Topic: Escribir Binario fácil (Read 2 times) previous topic - next topic

nahuelv

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í http://www.arduino.cc/playground/Code/BitMath pero no me quedó del todo claro qué código usar.


Gracias

PepeChorva

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
Code: [Select]

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;
}

---
Saludos,
José Chorva
www.pepechorva.com
@pepechorva on twitter

nahuelv

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.

nahuelv

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

nahuelv

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

Go Up