Curso C para Arduino
1. Control de brillo con potenciómetro:
- Lee un potenciómetro y controla el brillo de un LED mediante PWM.
2. Detector de luz:
- Enciende un LED automáticamente al bajar la intensidad lumínica detectada por una LDR.
3. Termómetro ambiental:
- Usa un sensor LM35 para leer la temperatura y mostrarla por puerto serie con alertas visuales (LED rojo para altas temperaturas).
Aquí tienes la solución para los tres ejercicios prácticos de la Unidad 5: Entrada y Salida Analógica, usando sensores comunes y control PWM en Arduino:
✅ 1. Control de brillo con potenciómetro
Lee un potenciómetro y controla el brillo de un LED mediante PWM.
1const int pinPot = A0; 2const int pinLED = 9; // debe ser un pin con salida PWM 3 4void setup() { 5 pinMode(pinLED, OUTPUT); 6} 7 8void loop() { 9 int lectura = analogRead(pinPot); // 0 a 1023 10 int brillo = map(lectura, 0, 1023, 0, 255); // ajustar rango para PWM 11 12 analogWrite(pinLED, brillo); 13 delay(10); 14}
✅ 2. Detector de luz (LDR)
Enciende un LED automáticamente al bajar la intensidad lumínica detectada por una LDR.
1const int pinLDR = A0; 2const int pinLED = 13; 3 4void setup() { 5 pinMode(pinLED, OUTPUT); 6 Serial.begin(9600); 7} 8 9void loop() { 10 int luz = analogRead(pinLDR); 11 Serial.print("Luz: "); 12 Serial.println(luz); 13 14 if (luz < 400) { // umbral ajustable según entorno 15 digitalWrite(pinLED, HIGH); 16 } else { 17 digitalWrite(pinLED, LOW); 18 } 19 20 delay(200); 21}
💡 El valor de umbral (400) depende del entorno y la resistencia usada con la LDR.
✅ 3. Termómetro ambiental (LM35)
Usa un sensor LM35 para leer la temperatura y mostrarla por el puerto serie con alertas visuales.
1const int pinLM35 = A1; 2const int pinLED = 13; 3 4void setup() { 5 Serial.begin(9600); 6 pinMode(pinLED, OUTPUT); 7} 8 9void loop() { 10 int lectura = analogRead(pinLM35); 11 float voltaje = lectura * (5.0 / 1023.0); // conversión a voltios 12 float temperaturaC = voltaje * 100.0; // LM35: 10mV/°C 13 14 Serial.print("Temperatura: "); 15 Serial.print(temperaturaC); 16 Serial.println(" °C"); 17 18 if (temperaturaC >= 30.0) { // umbral de temperatura 19 digitalWrite(pinLED, HIGH); 20 } else { 21 digitalWrite(pinLED, LOW); 22 } 23 24 delay(1000); 25}