Convertir codigo binario a decimal

Buenas noches:

Es la primera vez que entro en este foro y buscaba un poco de ayuda

Quisiera convertir el valor obtenido en binario a traves de tres entradas digitales en un numero decimal

Me explico, tengo tres conmutadores cada uno conectado a una entrada diferente de arduino y segun la combinacion de los comutadores obtener su valor en decimal

entrada 1 entrada 2 entrada 3 n=

0 0 0 n=0 0 0 1 n=1 0 1 0 n=2

Esto quisiera que fuese a traves de una mascara como filtro. y utilizando el menor numero de instrucciones

Gracias por vuestra ayuda.

Bienvenido al foro en Español, a pesar de que no has posteado acá, otro forero se encargó de “reportar tu error” y yo lo traje para acá.
Error que no debió haber ocurrido si hubieras dado un paseo y procurado información sobre como te tienes que manejar.
El foro de Arduino.cc es muy concurrido y no podemos estar detrás de todos, para eso están las normas que espero que por lo menos ya hayas leído, justamente, el foro en Español se caracteriza por tener las normas siempre al alcance de la mano.

Ahora a tu consulta!

Por que no pones tu código?, es mas fácil darte una respuesta y no adivinar, no te parece?

Debiste postear el código pero te ayudo con algo…
Tres entradas serán leidas usando digitalRead(pinX); donde X es 1,2 y 3 para los que designaras pines del arduino apropiados para tal caso.

Si usas una variable byte valor y sumas los resusltados poderados en binario obtienes tu respuesta
algo asi

byte valor = digitalRead(pin3) + digitalRead(pin2) << 1 + digitalRead(pin1) <<2;
los resultados coinciderán con tu tabla de verdad.
digitalRead(pin3) es el LSB
digitalRead(pin1) es el MSB

No soy partidario de hacerle la tarea a nadie y por el solo hecho de que hoy me he tomado una cerveza bien fría cosa que no hacia desde hace tiempooooo, acá te ayudo con algo.

Queda tu compromiso de investigar y aprenderte el porque cada linea de este código que es super básico.

int entrada1;
int entrada2;
int entrada3;

void setup() {
 Serial.begin(9600);
 pinMode(4,INPUT);
 pinMode(5,INPUT);
 pinMode(6,INPUT);
}

void loop() {
  entrada1 = digitalRead(4);
  entrada2 = digitalRead(5);
  entrada3 = digitalRead(6);

  if(entrada1 == o){
    if(entrada2 == 0)&& (entrada3 == 0){
      print("Resultado: 0");
    }
    if(entrada2 == 0)&& (entrada3 == 1){
      print("Resultado: 1");
    }
    if(entrada2 == 1)&& (entrada3 ==0){
      print("Resultado: 2");
    }
  }
}

Bueno, ante todo perdon por todos los errores que he cometido, Llevo 15 dias con arduino, La primera vez que entre estaba en ingles y no supe como entrar en el foro en español.

Gracias por vuestras respuestas

Gracias por tu contestacion.

Pero mi idea no consiste en usar la instruccion If comparando cada una de las estradas y asignando el valor a N

Busco una instruccion la cual me controle el valor de las entradas que yo pongo a 1. y el programa me devuelva en la variable N el valor binario de las entradas en un valor decimal.

Para que esto: pues bien. Si pongo las tres entradas a uno, el programa me devolvera en N el valor 7 por lo tanto n=7

Y con esto a traves de un While y case, seleccionare el programa que me interese ejecutar en ese momento.

Esta es la idea a grandes rasgos. Esto es para disparar un rele a traves de tres sensores, y selecciono el sensor con el que quiero trabajar.

Gracias

Y que te he respondido?

Debiste postear el código pero te ayudo con algo…
Tres entradas serán leidas usando digitalRead(pinX); donde X es 1,2 y 3 para los que designaras pines del arduino apropiados para tal caso.

Si usas una variable byte valor y sumas los resusltados poderados en binario obtienes tu respuesta
algo asi

byte valor = digitalRead(pin3) + digitalRead(pin2) << 1 + digitalRead(pin1) <<2;

los resultados coinciderán con tu tabla de verdad.
digitalRead(pin3) es el LSB
digitalRead(pin1) es el MSB

Esta linea resuelve tu problema.

valor = digitalRead(pin3) + digitalRead(pin2) << 1 + digitalRead(pin1) <<2;

Es una suma con peso binario.
Cada pin aporta un 0 o 1 pero de acuerdo al peso lo desplazo usando << 1 o 2 lugares.
Asi que imagina que pin3 lee 1 pin2 lee un 1 y pin 1 lee un 0
valor = 1 + 1 << 1 + 0 << 2
1 << 0 = 1
1 << 1 = 10
1 << 2 = 100
Si fuera 0 << 0,1 o 2 no cambia nada, da por resultado un 0

Asi que valor = 001 + 010+ 000 = 011
Cada loop tendras la tabla que has indicado.

Gracias Surbyte, ahora te he entendido.

Perdonar pero acabo de entrar y aun no estoy relacionado con algunas palabras como es postear o como decia el amigo Lightcalamar poner el codigo, que tampoco se como se hace.

Gracias a todos por vuestra colaboracion, y ahora solo me queda probarlo

Entonces Lee LAS NORMAS del FORO @javier311 y aprendes como manejarte en este o cualquier foro. Ahí esta explicado como hacer y como actuar debidamente. Espero lo hagas porque no toleramos infracciones.