example with auto + cleaning
This commit is contained in:
@@ -4,6 +4,8 @@ __javascript__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
|
||||
*.wav
|
||||
.idea/
|
||||
|
||||
# C extensions
|
||||
|
||||
+31
-32
@@ -1,36 +1,35 @@
|
||||
#!/bin/env python3
|
||||
import gex
|
||||
|
||||
client = gex.Client(port='/dev/ttyACM0')
|
||||
|
||||
# Neopixel strip
|
||||
strip = gex.Neopixel(client, 'npx')
|
||||
# Load RGB to the strip
|
||||
strip.load([0xFF0000, 0x00FF00, 0x0000FF, 0xFF00FF])
|
||||
|
||||
# I2C bus
|
||||
i2c = gex.I2C(client, 'i2c')
|
||||
# Read device register
|
||||
print(i2c.read_reg(address=0x76, reg=0xD0))
|
||||
# Write value to a register
|
||||
i2c.write_reg(address=0x76, reg=0xF4, value=0xFA)
|
||||
|
||||
# SPI
|
||||
spi = gex.SPI(client, 'spi')
|
||||
# Query slave 0
|
||||
print(spi.query(0, [0xAA, 0xBB, 0xCC, 0xDD], rlen=2, rskip=4))
|
||||
# Write slaves 0 and 2
|
||||
spi.multicast(0b101, [0xDE, 0xAD, 0xBE, 0xEF])
|
||||
|
||||
# USART
|
||||
usart = gex.USART(client, 'serial')
|
||||
# Handle received data
|
||||
usart.listen(lambda x: print(x, end='', flush=True))
|
||||
# Write a string
|
||||
usart.write("AHOJ\r\n")
|
||||
|
||||
# Digital output (8 pins)
|
||||
display = gex.DOut(client, 'display')
|
||||
display.write(0b10110011)
|
||||
display.toggle(0b00010010)
|
||||
with gex.Client(gex.TrxRawUSB()) as client:
|
||||
# Neopixel strip
|
||||
strip = gex.Neopixel(client, 'npx')
|
||||
# Load RGB to the strip
|
||||
strip.load([0xFF0000, 0x00FF00, 0x0000FF, 0xFF00FF])
|
||||
#
|
||||
# # I2C bus
|
||||
# i2c = gex.I2C(client, 'i2c')
|
||||
# # Read device register
|
||||
# print(i2c.read_reg(address=0x76, reg=0xD0))
|
||||
# # Write value to a register
|
||||
# i2c.write_reg(address=0x76, reg=0xF4, value=0xFA)
|
||||
#
|
||||
# # SPI
|
||||
# spi = gex.SPI(client, 'spi')
|
||||
# # Query slave 0
|
||||
# print(spi.query(0, [0xAA, 0xBB, 0xCC, 0xDD], rlen=2, rskip=4))
|
||||
# # Write slaves 0 and 2
|
||||
# spi.multicast(0b101, [0xDE, 0xAD, 0xBE, 0xEF])
|
||||
#
|
||||
# # USART
|
||||
# usart = gex.USART(client, 'serial')
|
||||
# # Handle received data
|
||||
# usart.listen(lambda x: print(x, end='', flush=True))
|
||||
# # Write a string
|
||||
# usart.write("AHOJ\r\n")
|
||||
#
|
||||
# # Digital output (8 pins)
|
||||
# display = gex.DOut(client, 'display')
|
||||
# display.write(0b10110011)
|
||||
# display.toggle(0b00010010)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class PayloadParser:
|
||||
def _slice(self, n:int) -> bytearray:
|
||||
""" Extract a slice and advance the read pointer for the next slice """
|
||||
if self.ptr + n > len(self.buf):
|
||||
raise Exception("Payload parser underrun")
|
||||
raise Exception("Payload parser underrun - frame: %s" % str(self.buf))
|
||||
|
||||
slice = self.buf[self.ptr:self.ptr + n]
|
||||
self.ptr += n
|
||||
|
||||
+8
-7
@@ -361,15 +361,16 @@ class ADC(gex.Unit):
|
||||
def lst(frame):
|
||||
pp = gex.PayloadParser(frame.data)
|
||||
|
||||
index = pp.u8()
|
||||
if index != self._bcap_next_id:
|
||||
self._bcap_done = True
|
||||
raise Exception("Lost capture data frame! Expected %d, got %d" % (self._bcap_next_id, index))
|
||||
#return TF.CLOSE XXX
|
||||
if frame.type == EVT_CAPT_MORE or len(frame.data) != 0:
|
||||
index = pp.u8()
|
||||
if index != self._bcap_next_id:
|
||||
self._bcap_done = True
|
||||
raise Exception("Lost capture data frame! Expected %d, got %d" % (self._bcap_next_id, index))
|
||||
#return TF.CLOSE XXX
|
||||
|
||||
self._bcap_next_id = (self._bcap_next_id + 1) % 256
|
||||
self._bcap_next_id = (self._bcap_next_id + 1) % 256
|
||||
|
||||
buffer.extend(pp.tail())
|
||||
buffer.extend(pp.tail())
|
||||
|
||||
if frame.type == EVT_CAPT_DONE:
|
||||
self._bcap_done = True
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
#!/bin/env python3
|
||||
import time
|
||||
|
||||
import gex
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from scipy.io import wavfile
|
||||
|
||||
with gex.Client(gex.TrxRawUSB()) as client:
|
||||
adc = gex.ADC(client, 'a')
|
||||
|
||||
adc.set_active_channels([3])
|
||||
rate=44000
|
||||
fs = adc.set_sample_rate(rate)
|
||||
|
||||
count = 44000*2
|
||||
data = np.add(adc.capture(count) / 4096, -0.5)
|
||||
|
||||
if data is not None:
|
||||
# wavfile.write('file.wav', rate, data)
|
||||
# print("Ok")
|
||||
|
||||
plt.plot(data, 'r-', lw=1)
|
||||
plt.show()
|
||||
else:
|
||||
print("Nothing rx")
|
||||
|
||||
@@ -15,9 +15,24 @@ with gex.Client(gex.TrxRawUSB()) as client:
|
||||
pp = gex.PayloadParser(data)
|
||||
return pp.i16() * 0.0625
|
||||
|
||||
def meas2(addr, addr2):
|
||||
ow.write([0x44], addr=addr)
|
||||
ow.write([0x44], addr=addr2)
|
||||
ow.wait_ready()
|
||||
|
||||
data = ow.query([0xBE], 9, addr=addr)
|
||||
pp = gex.PayloadParser(data)
|
||||
a = pp.i16() * 0.0625
|
||||
|
||||
data = ow.query([0xBE], 9, addr=addr2)
|
||||
pp = gex.PayloadParser(data)
|
||||
b = pp.i16() * 0.0625
|
||||
return a, b
|
||||
|
||||
while True:
|
||||
a = meas(6558392391241695016)
|
||||
b = meas(1802309978572980008)
|
||||
(a, b) = meas2(6558392391241695016, 1802309978572980008)
|
||||
# a = meas(6558392391241695016)
|
||||
# b = meas(1802309978572980008)
|
||||
print("in: %.2f °C, out: %f °C" % (a, b))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user