// C++ code

/* Puertos */

// Swichtes
#define SW1 22
#define SW0 23

// Leds switches
#define LED_SW1 21
#define LED_SW0 19

// Leds secuencia
#define LED_PWM 4


// Potenciometro
#define POT 2

/* Variables */
int pot_value = 0;   // Valor del potenciometro (0 - 2013)
int val_pwm = 0;     // Valor del pwm (0 - 255)
int sw_val1;
int sw_val0;
int num_seq; 
int loop_time = 500;

void inicializar_entradas() {
  // Inicialice aqui las entradas
  pinMode(SW1, INPUT);
  pinMode(SW0, INPUT);
}

void inicializar_salidas() {
  // Inicialice aqui las salidas
  pinMode(LED_SW1, OUTPUT);
  pinMode(LED_SW0, OUTPUT);
}

void setup() {
  // Inicializacion de las entradas
  inicializar_entradas();
  inicializar_salidas();
  // Debug Serial
  Serial.begin(9600);
  Serial.println("Configuración de I/O -> OK");
}

int obtener_numero_secuencia(int sw1, int sw0) {
  // Obtiene el numero asociado a una combinación de switches
  int number;  
  if ((sw1 == LOW)&&(sw0 == LOW)) {
    number = 0;  
  }
  else if ((sw1 == LOW)&&(sw0 == HIGH)) {
    number = 1;
  }
  else if ((sw1 == HIGH)&&(sw0 == LOW)) {
    number = 2;  
  }
  else {
    number = 3;
  }
  //Serial.print("Numero:");
  //Serial.println(number, BIN);
  return number;
}

void encender_leds_indicadores(int number) {
  // Encendido de luces indicadores  
  switch(number) {
    case 0:
      digitalWrite(LED_SW1,LOW);
      digitalWrite(LED_SW0,LOW);
      break;
    case 1:
      digitalWrite(LED_SW1,LOW);
      digitalWrite(LED_SW0,HIGH);
      break;
    case 2:
      digitalWrite(LED_SW1,HIGH);
      digitalWrite(LED_SW0,LOW);
      break;
    default:
      digitalWrite(LED_SW1,HIGH);
      digitalWrite(LED_SW0,HIGH);
  }
}

void loop() {
  pot_value = analogRead(POT);
  val_pwm = map(pot_value, 0 , 4095, 0, 255);
  analogWrite(LED_PWM,val_pwm);
  Serial.print("POT: ");
  Serial.print(pot_value);  
  Serial.print("; PWM: ");
  Serial.print(val_pwm);
  // Lectura de los switches
  sw_val0 = digitalRead(SW0);  
  sw_val1 = digitalRead(SW1);
  Serial.print("- SW0: ");
  Serial.print(sw_val0);
  Serial.print("; SW1: ");
  Serial.println(sw_val1);
  // Obtencion de la secuencia
  num_seq = obtener_numero_secuencia(sw_val1, sw_val0);  
  // Encendido de los leds
  encender_leds_indicadores(num_seq); 
  delay(loop_time);
}
$abcdeabcde151015202530fghijfghij