前提・実現したいこと
リアルタイムで音データをADしraspberry piにSPI通信ch0~7まで取り込んだ際の各チャンネルの出力にHP、LPフィルターをかけるプログラムを作ろうとしています。しかし下記コードでAD変換までは出来たもののフィルターをかけるための各チャンネルの出力の取り出し方が分からず困っています。
例)①音データをAD変換→②mpc3208のch7のADした値に50HzのLPフィルターをかける→③ch7に50Hz以下の信号が入ったら「エラー」と画面に表示させる
の②段階でつまづいています。
該当のソースコード
import sys
import time
import RPi.GPIO as GPIO
spi_clk = 11
spi_mosi = 10
spi_miso = 9
spi_ss = 8
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(spi_mosi, GPIO.OUT)
GPIO.setup(spi_miso, GPIO.IN)
GPIO.setup(spi_clk, GPIO.OUT)
GPIO.setup(spi_ss, GPIO.OUT)
while True:
time.sleep(0.1)
for ch in range(8): GPIO.output(spi_ss, False) GPIO.output(spi_clk, False) GPIO.output(spi_mosi, False) GPIO.output(spi_clk, True) GPIO.output(spi_clk, False) cmd = (ch | 0x18) << 3 for i in range(5): if (cmd & 0x80): GPIO.output(spi_mosi, True) else: GPIO.output(spi_mosi, False) cmd <<= 1 GPIO.output(spi_clk, True) GPIO.output(spi_clk, False) GPIO.output(spi_clk, True) GPIO.output(spi_clk, False) GPIO.output(spi_clk, True) GPIO.output(spi_clk, False) value = 0 for i in range(12): value <<= 1 GPIO.output(spi_clk, True) if (GPIO.input(spi_miso)): value |= 0x1 GPIO.output(spi_clk, False) if ch > 0: sys.stdout.write(" ") GPIO.output(spi_ss, True) sys.stdout.write(str(value)) sys.stdout.write("\n")
このソースコードからfs=ch7のような書き方で各チャンネルの出力を抜き出す事は可能でしょうか?アドバイスよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー