Problema 1: Encender y apagar un LED
Este programa hace parpadear un LED conectado al pin 13. Se enciende durante 1 segundo y se
apaga durante 1 segundo, repitiéndose en bucle.
Código:
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
Problema 2: Semáforo simple
Este programa controla tres LEDs simulando un semáforo: verde durante 5 segundos, amarillo 2
segundos y rojo 5 segundos.
Código:
int ledVerde = 8;
int ledAmarillo = 9;
int ledRojo = 10;
void setup() {
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledRojo, OUTPUT);
}
void loop() {
digitalWrite(ledVerde, HIGH);
delay(5000);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, HIGH);
delay(2000);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, HIGH);
delay(5000);
digitalWrite(ledRojo, LOW);
}
Problema 3: Botón que enciende un LED
Cuando se presiona un botón conectado al pin 2, un LED conectado al pin 13 se enciende. Si no
está presionado, el LED permanece apagado.
Código:
int led = 13;
int boton = 2;
void setup() {
pinMode(led, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
int estado = digitalRead(boton);
if (estado == HIGH) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
Problema 4: Botón con memoria (toggle)
Un botón cambia el estado de un LED cada vez que se presiona: si estaba apagado, se enciende;
si estaba encendido, se apaga.
Código:
int led = 13;
int boton = 2;
int estadoLed = LOW;
int ultimoEstadoBoton = LOW;
void setup() {
pinMode(led, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
int lectura = digitalRead(boton);
if (lectura == HIGH && ultimoEstadoBoton == LOW) {
estadoLed = !estadoLed;
digitalWrite(led, estadoLed);
delay(200); // antirrebote
}
ultimoEstadoBoton = lectura;
}
Problema 5: Sensor de luz (LDR)
Un LED se enciende automáticamente cuando la luz ambiental es baja, usando una
fotorresistencia (LDR) conectada a A0.
Código:
int ldr = A0;
int led = 13;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
int valor = analogRead(ldr);
Serial.println(valor);
if (valor < 500) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
delay(100);
}
Problema 6: Alarma con buzzer
Si un botón está presionado, un buzzer conectado al pin 8 emite sonido.
Código:
int buzzer = 8;
int boton = 2;
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(boton, INPUT);
}
void loop() {
if (digitalRead(boton) == HIGH) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
}
Problema 7: Control de brillo con potenciómetro
El valor leído de un potenciómetro en A0 se usa para controlar el brillo de un LED mediante PWM.
Código:
int led = 9;
int pot = A0;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
int valor = analogRead(pot);
int brillo = map(valor, 0, 1023, 0, 255);
analogWrite(led, brillo);
delay(10);
}
Problema 8: Minisensor de temperatura (LM35)
Se lee la temperatura de un sensor LM35 conectado a A0 y se muestra en el monitor serial en
grados Celsius.
Código:
int lm35 = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int valor = analogRead(lm35);
float voltaje = valor * (5.0 / 1023.0);
float tempC = voltaje * 100;
Serial.print("Temperatura: ");
Serial.print(tempC);
Serial.println(" C");
delay(1000);
}
Problema 9: Servo controlado por potenciómetro
Un potenciómetro conectado a A0 controla la posición de un servo entre 0° y 180°.
Código:
#include <Servo.h>
Servo servo;
int pot = A0;
void setup() {
servo.attach(9);
}
void loop() {
int valor = analogRead(pot);
int angulo = map(valor, 0, 1023, 0, 180);
servo.write(angulo);
delay(15);
}
Problema 10: Detector de movimiento PIR
Si el sensor PIR detecta movimiento, se enciende un LED y un buzzer.
Código:
int pir = 2;
int led = 13;
int buzzer = 8;
void setup() {
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
int estado = digitalRead(pir);
if (estado == HIGH) {
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(led, LOW);
digitalWrite(buzzer, LOW);
}
}