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}