Explicación de los códigos y funcionamiento en proteus
1. BIT INPUT – LED prende si presionas un botón
void setup() {
pinMode(13, OUTPUT); // El pin 13 será usado para encender un LED
pinMode(7, INPUT); // El pin 7 será usado para leer si el botón está presionado
void loop() {
digitalWrite(13, digitalRead(7)); // Si el botón está presionado (pin 7 en alto), el LED
(pin 13) se enciende
delay(1); // Espera muy poquito para que funcione sin errores
Resumen: Cuando presionas el botón, el LED se enciende. Cuando lo sueltas, se
apaga.
2. BIT OUTPUT – LED parpadea solo
void setup() {
pinMode(13, OUTPUT); // Preparamos el pin 13 para que controle el LED
void loop() {
digitalWrite(13, HIGH); // Encendemos el LED
delay(500); // Esperamos medio segundo
digitalWrite(13, LOW); // Apagamos el LED
delay(500); // Esperamos medio segundo
Resumen: El LED parpadea cada medio segundo sin necesidad de presionar nada.
3. BYTE INPUT – Leer muchos botones y mostrar en LEDs
void setup() {
PORTD = 0x00; // Apagamos todos los LEDs
DDRD = 0xFF; // Preparamos los pines del puerto D para los LEDs (salida)
DDRB = 0x00; // Preparamos los pines del puerto B para los botones (entrada)
void loop() {
PORTD = PINB; // Lo que presionemos en los botones, se refleja en los LEDs
Resumen: Cada botón enciende o apaga un LED, como si fueran espejos.
4. BYTE OUTPUT – Encender grupos de LEDs
void setup() {
DDRD = 0xFF; // Preparamos los LEDs como salidas
PORTD = 0x00; // Apagamos todo al principio
}
void loop() {
PORTD = 15; // Encendemos los primeros 4 LEDs
delay(500); // Esperamos
PORTD = 240; // Encendemos los últimos 4 LEDs
delay(500); // Esperamos
Resumen: Enciende 4 LEDs de un lado y luego 4 del otro, cambiando cada medio
segundo.
5. FOR 240 a 255 – Mostrar todos los LEDs combinados
int i;
void setup() {
DDRD = 0xFF; // LEDs como salidas
PORTD = 0x00;
void loop() {
for(i = 240; i <= 255; i++) {
PORTD = i; // Muestra combinaciones raras en los LEDs
delay(500);
}
Resumen: Muestra diferentes patrones en los LEDs. Se ve como si jugaras con luces
en binario.
6. BARRIDO DE LEDS – Uno por uno a ida y vuelta
byte sec[] = {1,2,4,8,16,32,64,128};
byte i;
void setup() {
DDRD = 0xFF;
PORTD = 0x00;
void loop() {
for(i = 0; i <= 7; i++) {
PORTD = sec[i]; // Enciende un LED de izquierda a derecha
delay(500);
for(i = 7; i >= 0; i--) {
PORTD = sec[i]; // Enciende un LED de derecha a izquierda
delay(500);
}
Resumen: Se ve como una carrera de luces: de ida y de regreso.
7. PATRÓN PERSONALIZADO DE LEDS
byte sec[] = {129, 66, 36, 24};
int i;
void setup() {
DDRD = 0xFF;
PORTD = 0x00;
void loop() {
for(i = 0; i <= 3; i++) {
PORTD = sec[i]; // Muestra un diseño específico de luces
delay(500);
for(i = 3; i >= 0; i--) {
PORTD = sec[i]; // Muestra el diseño al revés
delay(500);
Resumen: Se encienden LEDs con patrones como si fueran flechas o formas.
8. BOTÓN Y DISPLAY – Avanza números al presionar
byte sec[] = {63,6,91,79,102,109,125,7,127,111}; // Cómo se ve cada número en el
display
int i = 0;
void setup() {
PORTD = sec[0]; // Mostramos el número 0 al principio
DDRD = 0xFF; // Display como salida
DDRB = 0xFE; // Pin 8 como entrada (botón)
void loop() {
if (digitalRead(8)) { // Si presionamos el botón
i++; // Vamos al siguiente número
if(i == 10) i = 0; // Si llegamos a 9, volvemos a 0
PORTD = sec[i]; // Mostramos el número en el display
while(digitalRead(8)) {
delay(10); // Esperamos que se suelte el botón
Resumen: Al presionar el botón, el número del display cambia. Sirve como contador.