Sumatoria de valor

Hola buenas tardes a todos. Estoy intentando hacer un programa que encienda luces(7) pero dependiendo del resultado. Por ejemplo si luz blanca vale 2 y luz azul vale 4, al encenderse las 2 juntas tendría que valer 6 ya que 2 y 4 son 6 pero no se me ocurre de que forma poder hacerlo, si alguien me tira una idea lo agradecería mucho.

Saludos.

Yo te entiendo menos.
Las luces tienen asignado un número y encender las dos provoca una suma?
Que tiene que ver tocino con velocidad?
Busca una mejor explicación!
Enumera todos los colores que usararás y su número asociado.
Y luego dinos como sabes que luz se enciende?

Basicamente seria asi.

int luzB = 4; //LUZ BLANCA PIN 4
int luzV = 10; //LUZ VERDE PIN 10
int luzA = 6; //LUZ AMARILLA PIN 6
int luzR = 12; //LUZ ROJA PIN 12
int luzAz = 8; //LUZ AZUL PIN 8
int luzN = 2; //LUZ NARANJA PIN 2
int luzV = 3; //LUZ VIOLETA PIN 3

void setup() {

pinMode(luzB, OUTPUT); //DECLARAMOS LUZ BLANCA COMO SALIDA.
pinMode(luzV, OUTPUT); //DECLARAMOS LUZ VERDE COMO SALIDA.
pinMode(luzA, OUTPUT); //DECLARAMOS LUZ AMARILLA COMO SALIDA.
pinMode(luzR, OUTPUT); //DECLARAMOS LUZ ROJA COMO SALIDA.
pinMode(luzAz, OUTPUT); //DECLARAMOS LUZ AZUL COMO SALIDA.
pinMode(luzN, OUTPUT); //DECLARAMOS LUZ NARANJA COMO SALIDA.
pinMode(luzV, OUTPUT); //DECLARAMOS LUZ VIOLETA COMO SALIDA.

}

void loop() {

}

Luz violeta vale 1.
Luz blanca vale 2.
Luz azul vale 4.
Luz verde vale 8.
Luz roja vale 16.
Luz amarilla vale 32.
Luz naranja vale 64.

La idea mía es encender desde el monitor serial las luces, por ejemplo si mando un 2 desde el monitor serial tendría que prenderse luz blanca y si mando un 6 tendría que prenderse luz blanca y azul al mismo tiempo ya que luz blanca vale 2 y azul vale 4... pero no encuentro la manera de hacerlo.

Gracias

Un ejemplo sobre el que puedes trabajar, no se si es lo que estás buscando.

int luz_verde =0,luz_azul=0;


void Setup
{
  //Define las entradas y salidas digitales
}
void Loop
{
  if(digitalRead(//PINLedVerde) == 'HIGH')
  {
    luz_verde=2;
  }
if(digitalRead(//PINLedAzul) == 'HIGH')
  {
    luz_azul=4;
  }
  if(luz_azul + luz_verde == 6)
  {
    digitalWrite(//PINluzRojo,HIGH);
}
luz_verde =0;
luz_azul=0;

}

Piensa en binario.

Por lo que veo has definido los colores por peso: 1 violeta, 2 blanca, 4 azul... 64 naranja. Has asignado una posición de un bit a cada color...

Eso quiere decir que cuando tu envias 6 por el puerto serie obtienes un número 6 que en binario es: b00000110, si observas los bits de peso, estan el bit 2, y el bit 4 a 1 que son los que quieres encender.

Otro ejemplo 45: en binario b00101101, los pesos de los bits son 1 (violeta), 4(azul), 8 (verde), 32 (amarilla), si sumas 1+4+8+32=45.

Así que la solución es leer el byte del puerto serie, y recorrer los bits de ese byte uno a uno viendo si valen 0 o 1, y activar la salida correspondiente. Para ello puedes hacer uso de la función bitRead que esta definida en arduino.

Bueno @victorjam ha dado con la respuesta correcta.
Te das cuenta @extrajuegosya como debe explicarse correctamente una consulta? Luego de mi pregunta diste la explicación con la que debiste empezar.
Por favor tenlo presente para la proxima y no te guardes las cosas. Explica porque los demás no estamos en tu cabeza y si re lees tu explicación. Eso no esta claro en tu primer post.

Suerte y creo que tema solucionado o le pega en el palo.