コード例 #1
0
ファイル: main.py プロジェクト: MrTaco9001/PyScilloscope
def main():
    """
    The method that controls everything.

    Initialization procedure:
    1: Wait for bytes from PC are specifically 'start'
        1a: Dim the indicator light
    2: Write the array of pins, `pin_strings`, so that the PC knows what it's working with
    """
    # Objects
    usb = VCP()

    # Initial
    while True:
        read = usb.read_timeout(inf)
        if read == 'start':
            usb.write_encode('start')
            break

    # Object manipulation
    indicator_light.intensity(32)  # dim the indicator light
    # Writes
    usb.write_encode(pin_strings)
    # Reads
    timer_frequency = int(usb.verify_read(inf))
    # Post init variables
    pins = tuple(Pin(i) for i in pin_strings)
    adc_pins = tuple(ADC(p) for p in pins)
    adc_arrays = tuple(array('H', [0]) for j in adc_pins)
    timer = Timer(8, freq=timer_frequency)
    # Loop
    while True:
        start_time = millis()
        ADC.read_timed_multi(adc_pins, adc_arrays, timer)

        if usb.read_timeout(1) == 'kill':
            hard_reset()

        write_table = {}
        usb.write_encode('newset\n')
        for i, v in enumerate(adc_arrays):
            usb.write_encode('\'{pin}\': {value}\n'.format(pin=pin_strings[i],
                                                           value=v[0]))
            #write_table[pin_strings[i]] = v[0]
        usb.write_encode('endset\n')

        write_table['duration'] = elapsed_millis(start_time)
コード例 #2
0
ファイル: adc.py プロジェクト: Netzvamp/micropython_m5stack
arv = array.array('h', 25 * [0x7fff])
adcv.read_timed(arv, tim)
print(len(arv))
for i in arv:
    assert i > 1000 and i < 2000

arv = array.array('i', 30 * [-1])
adcv.read_timed(arv, tim)
print(len(arv))
for i in arv:
    assert i > 1000 and i < 2000

# Test read_timed_multi
arv = bytearray(b'\xff'*50)
art = bytearray(b'\xff'*50)
ADC.read_timed_multi((adcv, adct), (arv, art), tim)
for i in arv:
    assert i > 60 and i < 125
# Wide range: unsure of accuracy of temp sensor.
for i in art:
    assert i > 15 and i < 200

arv = array.array('i', 25 * [-1])
art = array.array('i', 25 * [-1])
ADC.read_timed_multi((adcv, adct), (arv, art), tim)
for i in arv:
    assert i > 1000 and i < 2000
# Wide range: unsure of accuracy of temp sensor.
for i in art:
    assert i > 50 and i < 2000
コード例 #3
0
from time import sleep
import os,gc

#initialise pins
adc0 = ADC(Pin.board.Y12)
adc1 = ADC(Pin.board.Y11)
tim = Timer(4, freq=5000) #create 5KHz timer

sleep(1)#wait for the board to flush some data and don't get mad when copying/paste the code
rx0_0 = array('H', (0 for i in range(5000)))
rx0_1 = array('H', (0 for i in range(5000)))
rx1_0 = array('H', (0 for i in range(5000)))
rx1_1 = array('H', (0 for i in range(5000)))
rx2_0 = array('H', (0 for i in range(5000)))
rx2_1 = array('H', (0 for i in range(5000)))
rx3_0 = array('H', (0 for i in range(5000)))
sleep(1)
rx3_1 = array('H', (0 for i in range(5000)))

#timeout of 5s before the acquisition, 
sleep(5)

#4s acquisition:
ADC.read_timed_multi((adc0,adc1), (rx0_0,rx0_1), tim)
ADC.read_timed_multi((adc0,adc1), (rx1_0,rx1_1), tim)
ADC.read_timed_multi((adc0,adc1), (rx2_0,rx2_1), tim)
ADC.read_timed_multi((adc0,adc1), (rx3_0,rx3_1), tim)
gc.collect()
#main("/sd/write.py") # script to execute next to save the data
#Note: Y11 Vertical, Y12 Horizontal for the conf used