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)
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
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