11.2 Ultra-Sonic Sensors

import sys

import time

from contextlib import closing

from itertools import cycle

from time import sleep

import quick2wire.i2c as i2c

from quick2wire.parts.mcp23017 import MCP23017

from quick2wire.parts.mcp23x17 import In,Out

i2c_address = 0x20

pinbank2 = 1

pinbank1 = 0

with closing(i2c.I2CMaster()) as bus:

chip = MCP23017(bus, 0x20)

chip.reset()

trig = chip[pinbank2][7]

trig.direction = Out

trig.value=0

echo = {}

echo[0] = chip[pinbank1][0]

echo[1] = chip[pinbank1][1]

echo[2] = chip[pinbank1][2]

echo[3] = chip[pinbank1][3]

echo[4] = chip[pinbank1][4]

echo[5] = chip[pinbank1][5]

echo[6] = chip[pinbank1][6]

echo[7] = chip[pinbank1][7]

echo[0].direction = In

echo[1].direction = In

echo[2].direction = In

echo[3].direction = In

echo[4].direction = In

echo[5].direction = In

echo[6].direction = In

echo[7].direction = In

led1 = chip[pinbank2][0]

led2 = chip[pinbank2][1]

led3 = chip[pinbank2][2]

led4 = chip[pinbank2][3]

led1.direction = Out

led2.direction = Out

led3.direction = Out

led4.direction = Out

try:

while True:

trig.value = 1

time.sleep(0.00001)

trig.value = 0

for i in range (0,7):

while echo[i].value==0: pass

start = time.time()

while echo[i].value==1:

pass

stop = time.time() cm[i] = (stop-start)*17000 print (cm[i])

if (cm[0] or cm[1] < 60): led1.value = 1

print("Forward limit") if (cm[2] or cm[3] < 60):

led2.value = 1

print("Reverse limit" if (cm[4] or cm[5] < 30): led3.value = 1 print("Left limit")

if (cm[6] or cm[7] < 30):

led4.value = 1

print("Right limit")

finally:

chip.reset()

results matching ""

    No results matching ""