Actividad 8

 

Control de intensidad de 3 LED por Puerto Serie

En este montaje se controlará la intensidad de tres LEDs diferentes (situados en los pines 9, 10 y 11).

Se les indicará por puerto serie la siguiente sentencia ‘LED X: Value’, donde X corresponde al pin (9, 10 o 11) y ‘Value’ corresponde a la intensidad entre 0-100%.

Como se hará uso de la señal PWM, deberemos convertir ese porcentaje en un valor en el rango 0-255. Para ello, haremos uso de la función map() antes descrita.



 
 
const int pin_led_1 = 9;          // Definimos el pin donde conectamos LED 1
const int pin_led_2 = 10;         // Definimos el pin donde conectamos LED 2
const int pin_led_3 = 11;         // Definimos el pin donde conectamos LED 3
// Para hacer la pausa usaremos la función millis(), para esto necesitaremos
// la siguiente variable donde guardaremos el valor de millis() después de
// imprimir cada mensaje
unsigned long tiempo_transcurrido = 0;

void setup() {

  Serial.begin(9600);           // Inicializamos la comunicación serial

  pinMode(pin_led_1, OUTPUT);   // Inicializamos el pin del LED 1 como salida
  pinMode(pin_led_2, OUTPUT);   // Inicializamos el pin del LED 2 como salida
  pinMode(pin_led_3, OUTPUT);   // Inicializamos el pin del LED 3 como salida
  analogWrite(pin_led_1, 0);    // Apagamos el LED 1
  analogWrite(pin_led_2, 0);    // Apagamos el LED 2
  analogWrite(pin_led_3, 0);    // Apagamos el LED 3

}

void loop() {

  // Comprobamos que tengamos datos entrantes en el Serial
  if(Serial.available()) {

    String mensaje = Serial.readString(); // Leemos la cadena de texto

    // Extraemos del mensaje el LED que debemos modificar
    int numero_led = mensaje.substring(45).toInt();

    // Extraemos del mensaje el valor de la PWM de 0-100 y lo
    // convertimos a un valor de 0-255
    int valor_led_100 = mensaje.substring(7).toInt();
    int valor_led_255 = map(valor_led_100, 01000255);

    // Modificamos la PWM del LED que corresponda
    if(numero_led == 1)
      analogWrite(pin_led_1, valor_led_255);

    if(numero_led == 2)
      analogWrite(pin_led_2, valor_led_255);

    if(numero_led == 3)
      analogWrite(pin_led_3, valor_led_255);

  }

}
Vistas
27 Número de vistas
27 Vistas de miembros
0 Vistas públicas
Acciones
0 Gustos
0 No me gusta
0 Comentarios
Compartir en redes sociales
Compartir enlace
Compartir por correo

Por favor iniciar sesión para compartir esto webpage por correo.