Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirte?

  • Soporte Experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Preestrenos Exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo!

1.1.1 LED Parpadeante

Introducción

En este proyecto, aprenderemos cómo hacer que un LED parpadee mediante programación. Con tus configuraciones, tu LED puede producir una serie de fenómenos interesantes. ¡Adelante!

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/blinking_led_list.png

Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Diagrama Esquemático

En este experimento, conecta una resistencia de 220Ω al ánodo (el pin largo del LED), luego la resistencia a 3.3 V, y conecta el cátodo (el pin corto) del LED al GPIO17 de la Raspberry Pi. Por lo tanto, para encender un LED, necesitamos poner el GPIO17 en nivel bajo (0V). Podemos lograr este fenómeno mediante programación.

Nota

Pin11 se refiere al pin 11 de la Raspberry Pi de izquierda a derecha, y sus números de pin correspondientes en wiringPi y BCM se muestran en la siguiente tabla.

En el contenido relacionado con el lenguaje C, hacemos que GPIO0 sea equivalente a 0 en wiringPi. Entre el contenido relacionado con el lenguaje Python, BCM 17 es 17 en la columna BCM de la siguiente tabla. Al mismo tiempo, son iguales al pin 11 en la Raspberry Pi, Pin 11.

Nombre

T-Board

wiringPi

BCM

GPIO17

Pin 11

0

17

../_images/image48.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image49.png

Paso 2: Ve a la carpeta del código.

  1. Si usas una pantalla, se recomienda seguir los siguientes pasos.

Ve a ~/ y encuentra la carpeta raphael-kit.

Encuentra C en la carpeta, haz clic derecho sobre ella y selecciona Abrir en Terminal.

../_images/image50.png

Luego aparecerá una ventana como se muestra a continuación. Ahora has ingresado a la ruta del código 1.1.1_BlinkingLed.c.

../_images/image51.png
En los siguientes proyectos, usaremos comandos para ingresar al archivo de código en lugar

de hacer clic derecho. Pero puedes elegir el método que prefieras.

  1. Si inicias sesión en la Raspberry Pi de forma remota, usa cd para cambiar de directorio:

cd ~/raphael-kit/c/1.1.1/

Nota

Cambia de directorio a la ruta del código en este experimento mediante cd.

De cualquier manera, ahora estás en la carpeta C. Los procedimientos subsecuentes basados

en estos dos métodos son los mismos. Continuemos.

Paso 3: Compila el código.

gcc 1.1.1_BlinkingLed.c -o BlinkingLed -lwiringPi

Nota

gcc es la Colección de Compiladores GNU. Aquí, funciona como compilador del archivo de lenguaje C 1.1.1_BlinkingLed.c y genera un archivo ejecutable.

En el comando, -o significa salida (el carácter inmediatamente posterior a -o es el nombre del archivo de salida después de la compilación, y aquí se generará un ejecutable llamado BlinkingLed) y -lwiringPi es para cargar la biblioteca wiringPi (l es la abreviatura de library).

Paso 4: Ejecuta el archivo ejecutable generado en el paso anterior.

sudo ./BlinkingLed

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", por favor consulta Instalar y verificar WiringPi.

Para controlar el GPIO, necesitas ejecutar el programa con el comando sudo (superuser do). El comando ./ indica el directorio actual. El comando completo es para ejecutar BlinkingLed en el directorio actual.

Después de ejecutar el código, verás el LED parpadeando.

Si deseas editar el archivo de código 1.1.1_BlinkingLed.c, detén el código y luego escribe el siguiente comando para abrirlo:

nano 1.1.1_BlinkingLed.c

Presiona Ctrl+X para salir. Si has modificado el código, aparecerá un mensaje preguntando si deseas guardar los cambios o no. Escribe Y (guardar) o N (no guardar). Luego presiona Enter para salir. Repite Paso 3 y Paso 4 para ver el efecto después de modificar.

../_images/image53.png

Código

El código del programa se muestra a continuación:

#include <wiringPi.h>
#include <stdio.h>
#define LedPin      0
int main(void)
{
   // When initialize wiring failed, print message to screen
   if(wiringPiSetup() == -1){
      printf("setup wiringPi failed !");
      return 1;
   }
   pinMode(LedPin, OUTPUT);// Set LedPin as output to write value to it.
   while(1){
      // LED on
      digitalWrite(LedPin, LOW);
      printf("...LED on\n");
      delay(500);
      // LED off
      digitalWrite(LedPin, HIGH);
      printf("LED off...\n");
      delay(500);
   }
   return 0;
}

Explicación del Código

#include <wiringPi.h>

La biblioteca de control de hardware está diseñada para el lenguaje C de Raspberry Pi. Agregar esta biblioteca es beneficioso para la inicialización del hardware y la salida de los puertos I/O, PWM, etc.

#include <stdio.h>

Biblioteca estándar de I/O. La función printf utilizada para imprimir los datos mostrados en la pantalla se realiza mediante esta biblioteca. Hay muchas otras funciones disponibles para explorar.

#define LedPin 0

El pin GPIO17 de la Placa de Extensión T corresponde al GPIO0 en wiringPi. Asigna GPIO0 a LedPin, LedPin representa GPIO0 en el código posterior.

if(wiringPiSetup() == -1){
   printf("setup wiringPi failed !");
   return 1;

Esto inicializa wiringPi y asume que el programa que llama va a usar el esquema de numeración de pines de wiringPi.

Esta función necesita ser llamada con privilegios de root. Cuando la inicialización de wiring falla, imprime un mensaje en la pantalla. La función return se utiliza para salir de la función actual. Usar return en la función main() finalizará el programa.

pinMode(LedPin, OUTPUT);

Configura LedPin como salida para escribir valores en él.

digitalWrite(LedPin, LOW);

Configura GPIO0 como 0V (nivel bajo). Dado que el cátodo del LED está conectado a GPIO0, el LED se encenderá si GPIO0 se configura en nivel bajo. Por el contrario, configura GPIO0 en nivel alto, el LED se apagará.

printf("...LED apagado\n");

La función printf es una función de biblioteca estándar y su prototipo de función está en el archivo de encabezado stdio.h.

La forma general de la llamada es: printf("cadena de control de formato", columnas de la tabla de salida). La cadena de control de formato se utiliza para especificar el formato de salida, que se divide en cadena de formato y cadena sin formato. La cadena de formato comienza con % seguida de caracteres de formato, como %d para salida de entero decimal. Las cadenas sin formato se imprimen tal como son. Aquí se utiliza una cadena sin formato, seguida de \n que es un carácter de nueva línea, representando un salto de línea automático después de imprimir una cadena.

delay(500);

Mantiene el estado HIGH o LOW actual durante 500 ms.

Esta es una función que suspende el programa por un período de tiempo. Y la velocidad del programa está determinada por nuestro hardware. Aquí encendemos o apagamos el LED. Si no hay función de retraso, el programa ejecutará todo el programa muy rápido y en un bucle continuo. Así que necesitamos la función de retraso para ayudarnos a escribir y depurar el programa.

return 0;

Generalmente, se coloca al final de la función principal, indicando que la función devuelve 0 al ejecutarse correctamente.

Imagen del Fenómeno

../_images/image54.jpeg