Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
import time
import board
import digitalio
import busio
import adafruit_ssd1306
i2c = busio.I2C(board.SCL, board.SDA)
display = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)
#setup up trig and echo as list so they can be expanded on
trig=[]
trig.append(digitalio.DigitalInOut(board.D5))
for i in range(len(trig)):
trig[i].direction=digitalio.Direction.OUTPUT
trig[i].value=False
echo=[]
echo.append(digitalio.DigitalInOut(board.D6))
for i in range(len(echo)):
echo[i].direction=digitalio.Direction.INPUT
echo[i].pull=digitalio.Pull.UP
time.sleep(2)
#get distance function
def get_distance(trig_index,echo_index):
def_start=time.monotonic()
trig[trig_index].value=True
time.sleep(.00001)
trig[trig_index].value=False
while time.monotonic()-def_start<1 and echo[echo_index].value==False:
pulse_start=time.monotonic()
while time.monotonic()-def_start<1 and echo[echo_index].value==True:
pulse_end=time.monotonic()
try:
pulse_duration=(pulse_end-pulse_start)
dist=round(343000*pulse_duration/2.0)
except:
dist=-1
pass
return(dist)
#get distance and display on featherwing OLED
while True:
try:
dist_0=get_distance(0,0)
display.fill(0)
display.text(str(dist_0),0,0,1)
display.show()
except RuntimeError:
display.fill(0)
display.text('No Distance Reading',0,0,1)
display.show()
pass
time.sleep(0.1)
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
Re: Manually Control Multiple HC-SR04
On the library front, does creating two/five of the adafruit_hcsr04.HCSR04() not work? It uses PulseIn() to get an accurate measurement.
On the fan front, I can't see if you have a diodes across each fan? If these are not present (worth checking the fan specification to see if they are integrated) then you'll need them for back emf protection. See Arduino Lesson 13. DC Motors for an example, orientation of diode is very important.
Re: Manually Control Multiple HC-SR04
pin=digitalio.DigitalInOut(board.D5,INPUT,UP)
Re: Manually Control Multiple HC-SR04
lawrenceyy wrote:What? You can connect two different circuits like this?
lawrenceyy wrote:So the source pin on the mosfet would have to be connected to the ground of both power sources? What is this scenario called? I should read up on this.
Re: Manually Control Multiple HC-SR04
import time
import board
import digitalio
import busio
import adafruit_ssd1306
import adafruit_hcsr04
#setup
i2c = busio.I2C(board.SCL, board.SDA)
display = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)
sonar=[]
sonar.append(adafruit_hcsr04.HCSR04(trigger_pin=board.A4, echo_pin=board.A3))
sonar.append(adafruit_hcsr04.HCSR04(trigger_pin=board.SCK, echo_pin=board.A5))
sonar.append(adafruit_hcsr04.HCSR04(trigger_pin=board.D11, echo_pin=board.D12))
sonar.append(adafruit_hcsr04.HCSR04(trigger_pin=board.D9, echo_pin=board.D10))
sonar.append(adafruit_hcsr04.HCSR04(trigger_pin=board.D5, echo_pin=board.D6))
fan=[]
fan.append(digitalio.DigitalInOut(board.MOSI))
fan.append(digitalio.DigitalInOut(board.MISO))
fan.append(digitalio.DigitalInOut(board.A0))
fan.append(digitalio.DigitalInOut(board.A1))
fan.append(digitalio.DigitalInOut(board.A2))
for i in range(len(fan)):
fan[i].direction=digitalio.Direction.OUTPUT
Re: Manually Control Multiple HC-SR04