|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Raspberry Pi

Tutorial de Rapberry Pi en español.
- Juan Antonio Villalpando -

Volver al índice del tutorial

____________________________

6E.- Pantalla LCD con bus I2C. Sensor de ultrasonido HC-SR04.

GPIO2 es SDA
GPIO3 es SCL

______________________________
1.- Sensor de ultrasonido. Conexión.

- Al crear un impulso de disparo en el Trigger, se envía 8 pulsos de 40 kHz.

- Esos pulsos rebotan. El Echo saca un pulso desde que se envío los 8 pulsos hasta que llega.

- El Echo es salida. Esa salida la toma el código y analiza el tiempo del pulso.

- El Trigger es entrada. El Raspberry envía el pulso de arranque al Trigger del sensor.

- Alimentamos el HC-SR04 con 5V.

- El HC-SR05 envía los pulsos a 5V. El Raspberry trabaja con 3,3V. Ponemos un divisor de tensión para bajar de los 5 V a los 3,3V.

- El Raspberry envía los pulsos a 3,3V. El HC-SR04 puede reconocer ese nivel de voltios, lo podemos conectar directamente.

- Conectamos el Echo al terminal 38 y el Trigger al terminal 40.

______________________________
2.- Código.

- Mide distancias desde 5 cm hasta 20 cm.

ultrasonido.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)

TRIG = 40
ECHO = 38
i=0

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG, False)
print ("Calibrando.....")
time.sleep(2)

print ("Objeto muy alejado......")

try:
    while True:
       GPIO.output(TRIG, True)
       time.sleep(0.00001)
       GPIO.output(TRIG, False)

       while GPIO.input(ECHO)==0:
          inicio_pulso = time.time()

       while GPIO.input(ECHO)==1:
          fin_pulso = time.time()

       duracion_pulso = fin_pulso - inicio_pulso
       distancia = duracion_pulso * 17150
       distancia = round(distancia+1.15, 2)
  
       if distancia<=20 and distancia>=5:
          print ("distancia:",distancia,"cm")
          i=1
          
       if distancia>20 and i==1:
          print ("Objeto muy alejado....")
          i=0
       time.sleep(2)

except KeyboardInterrupt:
     GPIO.cleanup()

- KeyboardInterrupt, al pulsar Ctrl C, se interrumpe el bucle While.

______________________________
3.- Pantalla LCD y
Sensor de ultrasonido HC-SR04.

- Vamos a añadir una pantalla LCD con bus I2C.

- El archivo de librería I2C_LCD_driver, debe estar en la misma carpeta que el tecladoLCD.py

- El archivo I2C_LCD_driver.py lo puedes obtener en el tutorial anterior sobre LCD. En ese archivo es donde se establece la dirección de la LCD, en nuestro caso la 0x27

ultrasonido_lcd.py

# Juan A. Villalpando
# kio4.com

import RPi.GPIO as GPIO
import time
import I2C_LCD_driver
mylcd = I2C_LCD_driver.lcd()

GPIO.setmode(GPIO.BOARD)

TRIG = 40
ECHO = 38
i=0

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG, False)

try:
    while True:
       GPIO.output(TRIG, True)
       time.sleep(0.00001)
       GPIO.output(TRIG, False)

       while GPIO.input(ECHO)==0:
          inicio_pulso = time.time()

       while GPIO.input(ECHO)==1:
          fin_pulso = time.time()

       duracion_pulso = fin_pulso - inicio_pulso
       distancia = duracion_pulso * 17150
       distancia = round(distancia+1.15, 1)
  
       if distancia<=20 and distancia>=5:
          print ("distancia:",distancia,"cm")
          mylcd.lcd_display_string(str(distancia)+" cm          ", 1)
          i=1
          
       if distancia>20 and i==1:
          print ("Objeto muy alejado....")
          mylcd.lcd_display_string("Objeto muy lejos", 1) 
          i=0
       time.sleep(1)

except KeyboardInterrupt:
     GPIO.cleanup()

___________________________________________

- Otros códigos.

ultrasonido.py

import time
from subprocess import call # Interrupción del teclado para poder pulsar Ctrl C
import RPi.GPIO as GPIO
 
GPIO.setmode(GPIO.BOARD)
Trig = 40
Echo = 38

GPIO.setup(Trig, GPIO.OUT)
GPIO.setup(Echo, GPIO.IN)
 
def distancia():
 
   GPIO.output(Trig, False) # Trigger en 0
   time.sleep(2*10**-6) # Espera 2 microsegundos
   GPIO.output(Trig, True) # Trigger en 1
   time.sleep(10*10**-6) # Espera 2 microsegundos
   GPIO.output(Trig, False) # Trigger en 0
 
  # Cuando Echo es 1 comienza la cuenta.
   while GPIO.input(Echo) == 0:
      start = time.time()
 
   while GPIO.input(Echo) == 1:
      end = time.time()
 
   # Duración del pulso del Echo
   duracion = end-start
 
   medida = (duracion*10**6)/58 # Distancia en cm
 
   print ("%.2f" %medida)
 
while True:
   try:
      distancia()
   except KeyboardInterrupt: # Ctrl C para salir del bucle
      break

 

___________________________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información