Contador de pulsos mediante Raspberrypi

El foto-interruptor utilizado es el siguiente:

https://www.sparkfun.com/products/9299


Es un dispositivo formado por un diodo emisor y otro receptor separados por una pequeña distancia que es la que cortaremos. Es ampliamente utilizado como sensor de posición o final de carrera en por ejemplo impresoras.
El datasheet se encuentra en:

https://www.sparkfun.com/datasheets/Components/GP1A57HRJ00F.pdf


El cirduito es el sigiente:

https://www.sparkfun.com/datasheets/Sensors/Infrared/PhotoInterrupter-Breakout-v20.pdf


Montaje del circuito

Programa que realiza un polling para testear el circuito

#!/usr/bin/python
# -*- coding: utf-8 -*- 
import time
import RPi.GPIO as GPIO

def main():
	contador = 0
	GPIO.setmode(GPIO.BCM)
	GPIO.setup(23,GPIO.IN)
	while True:
		if GPIO.input(23):
			contador =contador
		else:
			contador = contador +1
		print contador
		#time.sleep(0.1)
	GPIO.cleanup()

if __name__=="__main__":
	main()

La librería RPi.GPIO soporta también la gestión de las entradas del la Raspberry mediante el uso de interrupciones. El siguiente script es un ejemplo de un simple contador.

#!/usr/bin/env python2.7  
# script by Alex Eames http://RasPi.tv  
  
import RPi.GPIO as GPIO  
import sys
GPIO.setmode(GPIO.BCM)  
  
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

contador = 0

def my_callback(channel):
	global contador
	contador = contador +1
	import time
	import sys
	#Se imprime el nº de pulsos y después se retorna a la posición para que salga todo en la misma linea sin retorno de carro.\b-> tira pá tras un caracter
	sys.stdout.write('%d' % contador)
	sys.stdout.flush()
	i=1
	while i<=len(str(contador)):
		sys.stdout.write('\b')
		i = i+1;
	
GPIO.add_event_detect(23, GPIO.RISING, callback=my_callback)  
  
raw_input("Press Enter Para salir del programa \n") 
GPIO.cleanup()         


Fuentes:
Gestión de las interrupciones de la Raspberry mediante python

http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio

Tagged with: ,
Posted in Programación, Sistemas