Encender y apagar un LED con python y un sensor LDR

Vamos a continuar con esta serie de introducción a este blog, en el día de hoy os traigo un ejemplo muy similar al anterior pero esta vez vamos a añadirle un sensor a nuestro circuito electrónico.

En mi caso usaré una resistencia dependiente de la luz o LDR que controlará el estado de un LED, como en la entrada anterior todo el proceso de control del circuito electrónico vendrá dado por un script en python al que comunicaremos con nuestro arduino.

Lista de materiales

  • Una resistencia LDR
  • Un diodo LED
  • Un microcontrolador en mi caso el arduino UNO
  • Una resistencia de 220Ω
  • Una resistencia de 1kΩ

Comunicar sensores con python

El objetivo de este proyecto es el poder conectar diferentes sensores electrónicos, tales como detectores luminosidad, presencia, humo con nuestro ordenador, para ello escribiremos un script en python que nos permita recibir los datos provenientes de nuestro arduino y mandar una respuesta al mismo, en este caso usaremos una resistencia LDR , el valor analógico medido por nuestro controlador será enviado a nuestro PC y este actuará sobre la salida del LED cambiando su estado.

Esquema electrónico

A continuación te dejo el circuito esquemático que usaremos en este proyecto:

Esquema del proyecto
Esquema del proyecto

Código a ejecutar

'''
  Script en python para controlar un LED mediante una resistencia LDR.

  Este programa nos permite controlar el estado de un LED mediante la lectura
  e interpretación de los valores recibidos por una LDR, esto es un ejemplo
  básico donde el pricipal objetivo es el de poder enviar y recibir datos 
  del arduino a través del puerto serie

  Autor: Alexdevrep
  Fecha: 10/03/2024
  Más contenido interesante en:
    -Github: https://github.com/alexdevrep
    -Instagram: https://www.instagram.com/alexdevrep/
    -Mi blog de WordPress: https://eltallerdealexdevrep.000webhostapp.com/
'''





#Importamos las librerías necesarias
import serial
import time

# Iniciamos la conexión serial con el Arduino
arduino = serial.Serial('/dev/ttyACM0', 9600)  

# Esperamos para que el Arduino se inicialice
time.sleep(2)


#Definimos la estructura de control de nuestro programa
while True:
    #Declaramos la función que se encargará de enviar los datos al arduino
    def sensor(value):
        if value <20:
            arduino.write(b'1')
        elif value>20:
            arduino.write(b'0')
    
    # Esperamos a recibir datos del Arduino
    if arduino.in_waiting > 0:
        value = arduino.readline().decode('utf-8').strip()
        value=int(value)
        sensor(value) # Llamamos a la función previamente definida

    time.sleep(1)  # Esperamos un segundo antes de enviar el próximo dato

    #Definimos la condición de salida del bloque
    if value == 0:
        print("No hay datos sufiencientes, cerrando el programa")
        break

Y este es el código a compilar en nuestro IDE de Arduino:

/*
  Script en python para controlar un LED mediante una resistencia LDR.

  Este programa nos permite controlar el estado de un LED mediante la lectura
  e interpretación de los valores recibidos por una LDR, esto es un ejemplo
  básico donde el pricipal objetivo es el de poder enviar y recibir datos
  del arduino a través del puerto serie

  Autor: Alexdevrep
  Fecha: 10/03/2024
  Más contenido interesante en:
    -Github: https://github.com/alexdevrep
    -Instagram: https://www.instagram.com/alexdevrep/
    -Mi blog de WordPress: https://eltallerdealexdevrep.com/

*/

// Definimos el pin de entrada e inicialñizamos su valor
int sensorLDR = A0;
int sensorValue = 0;

void setup()
{
  // Inicializamos la comunicación serial
  Serial.begin(9600);
  // Declaramos el pin 2 como salida
  pinMode(2, OUTPUT);
}

void loop()
{
  // Leemos los datos del sensor y los guardamos en una variable
  sensorValue = analogRead(sensorLDR);
  // Imprimimos esos datos en el monitor serie y son enviados al script de python
  Serial.println(sensorValue);
  delay(1000);
  // Comprobamos si hay datos disponibles para leer
  if (Serial.available() > 0)
  {
    char receivedChar = Serial.read(); // Leemos el dato recibido

    if (receivedChar == '1')
    {
      digitalWrite(2, HIGH);
    }
    else if (receivedChar == '0')
    {
      digitalWrite(2, LOW);
    }
  }
}

Vídeo del funcionamiento

A continuación te muestro un vídeo del funcionamiento de este proyecto:

Vídeo del proyecto

Hasta aquí la entrada de hoy, ¿Qué te ha parecido? ¿Encuentras útil la posibilidad de comunicar sensores con el lenguaje Python? Para mí sin duda es genial, ya te mostraré los motivos en una entrada futura.Por el momento puedes consultar en mi blog la parte uno de arduino y python pinchando aquí. Recuerda que tienes más proyectos interesantes en mi perfil de GitHub. No olvides que puedes escribirme un comentario con todas tus dudas, estaré encantado de leerte 😀 Un saludo y hasta otra.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio