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