Quiero detectar el grifo / sonido, estoy usando un transductor piezoeléctrico (circular) y lo conecté a la frambuesa pi mediante ADC (MCP3008, comunicación SPI). Cuando toco en el transductor, el valor de salida debería aumentar en algún lugar entre 0 y 1023 dependiendo de las vibraciones de la toma. Pero estoy obteniendo valores de salida inversos, el valor de salida leído es 1023 cuando no hago tapping y cuando lo toco continuamente, el valor de salida llega a 0 (cero). ¿Alguien podría decirme la razón de esto? He conectado el cable rojo (+ ve) del transductor al CH0 (canal 0) del ADC y el cable negro del transductor a la GND de la frambuesa pi. Creo que la conexión es perfecta. ¿Es esa característica del transductor piezoeléctrico, enviar una señal de salida baja cuando se detecta una toma y una señal alta cuando no hay una toma? A continuación se muestra el código
#!/usr/bin/python
import spidev
import time
import os
# Open SPI bus
spi = spidev.SpiDev()
spi.open(0,0)
# Function to read SPI data from MCP3008 chip
# Channel must be an integer 0-7
def ReadChannel(channel):
adc = spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data
# Function to convert data to voltage level,
# rounded to specified number of decimal places.
def ConvertVolts(data,places):
volts = (data * 3.3) / float(1023)
volts = round(volts,places)
return volts
# Define sensor channels
piezo_channel = 0
piezo_level = ReadChannel(light_channel)
piezo_volts = ConvertVolts(light_level,2)
# Print out results
print "--------------------------------------------"
print("Light: {} ({}V)".format(piezo_level ,piezo_volts ))
# Wait before repeating loop
time.sleep(delay)'