def __init__(self): self.sensor = [0, 0, 0, 0, 0] try: self.sensor[0] = LineSensor(5) self.sensor[1] = LineSensor(6) self.sensor[2] = LineSensor(13) self.sensor[3] = LineSensor(19) self.sensor[4] = LineSensor(26) except: print("Sensores não conectados corretamente")
def __init__(self, remote_address): # set PINs on BOARD log.debug("Initializing Track...") log.debug("> track 1: " + str(_conf['track_1_pin'])) log.debug("> track 2: " + str(_conf['track_2_pin'])) # using LineSensor rem_pi = PiGPIOFactory(host=remote_address) self.track1 = LineSensor(_conf['track_1_pin'], pin_factory=rem_pi) self.track2 = LineSensor(_conf['track_2_pin'], pin_factory=rem_pi) log.debug("...init done!")
def __init__(self, motorhat_addr=0x6f): # Setup the motorhat with the passed in address self._mh = Raspi_MotorHAT(addr=motorhat_addr) # get local variable for each motor self.left_motor = self._mh.getMotor(1) self.right_motor = self._mh.getMotor(2) # ensure the motors get stopped when the code exits atexit.register(self.stop_all) # Setup the line sensors self.left_line_sensor = LineSensor(23, queue_len=3, pull_up=True) self.right_line_sensor = LineSensor(16, queue_len=3, pull_up=True)
def __init__(self, motorhat_addr=0x6f): self._mh = Raspi_MotorHAT(addr=motorhat_addr) self.left_motor = self._mh.getMotor(1) self.right_motor = self._mh.getMotor(2) atexit.register(self.stop_motors) # Setup the line sensors self.right_line_sensor = LineSensor(23, queue_len=3, pull_up=True) self.left_line_sensor = LineSensor(16, queue_len=3, pull_up=True) self.right_line_sensor_stuck = "" self.left_line_sensor_stuck = "" self.servos = Servos(addr=motorhat_addr)
def __init__(self, config: dict): super().__init__("linesensors") self.sensors = {} for name, sensor_config in config['linesensors'].items(): sensor = LineSensor(sensor_config['pin']) sensor.when_line = sensor.when_no_line = self._when_line_changed self.sensors[name] = sensor
def __init__(self,mh_addr=0x60): #使用给定的地址设置motorHAT self._mh=MotorHAT(addr=mh_addr) #设置两个马达 self.left_motor=self._mh.getMotor(1) self.right_motor=self._mh.getMotor(2) # recommended for auto-disabling motors on shutdown! atexit.register(self.stop_all) #设置两个巡线传感器 self.left_line_sensor=LineSensor(23) self.right_line_sensor=LineSensor(16) #设置全彩LED self.leds=neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)
from time import sleep from gpiozero import Robot, LineSensor robot = Robot(left=(7, 8), right=(9, 10)) left_sensor = LineSensor(17) right_sensor = LineSensor(4) front_sensor = LineSensor(27) speed = 0.5 def motor_speed(): while True: left_detect = int(left_sensor.value) right_detect = int(right_sensor.value) front_detect = int(front_sensor.value) left_mot = 0 right_mot = 0 if left_detect == 0 and right_detect == 1: left_mot = 1 elif left_detect == 1 and right_detect == 0: right_mot = -1 elif front_detect == 0: right_mot, left_mot = 0, 0 else: left_mot = -1 right_mot = 0.9 yield right_mot, left_mot
from Robot import Motor from gpiozero import LineSensor from time import sleep import numpy as np import cv2 speed = 32 #defining line sensors left_sensor = LineSensor(21) right_sensor = LineSensor(26) #defining left and right motors right_motor = Motor(17, 27, 22) left_motor = Motor(23, 24, 25) left_motor.set_speed(speed) right_motor.set_speed(speed) video_capture = cv2.VideoCapture(-1) video_capture.set(3, 160) video_capture.set(4, 120) while (True): ret, frame = video_capture.read() crop_img = frame[60:120, 0:160] gray = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY) blur = cv2.GaussianBlur(gray, (5, 5), 0) ret, thresh = cv2.threshold(blur, 60, 255, cv2.THRESH_BINARY_INV)
from gpiozero import Robot, LineSensor from time import sleep robot = Robot(left=(7, 8), right=(9, 10)) left_sensor = LineSensor(17) right_sensor = LineSensor(27) speed = 0.65 def motor_speed(): while True: left_detect = int(left_sensor.value) right_detect = int(right_sensor.value) ## المرحلة 1 if left_detect == 0 and right_detect == 0: left_mot = 1 right_mot = 1 ## المرحلة 2 if left_detect == 0 and right_detect == 1: left_mot = -1 if left_detect == 1 and right_detect == 0: right_mot = -1 #print(r, l) yield (right_mot * speed, left_mot * speed) robot.source = motor_speed() sleep(60) robot.stop()
from gpiozero import LineSensor, LED import paho.mqtt.client as mqtt from time import sleep import json import os mqtt_user = os.environ["MQTT_USER"] mqtt_passwd = os.environ["MQTT_PASSWD"] mqtt_host = os.environ["MQTT_HOST"] sensor_north = LineSensor(12, pull_up=True, queue_len=50) sensor_south = LineSensor(16, pull_up=True, queue_len=50) # Use LED to utilize blink() to pulse the relay relay_north = LED(5, active_high=False) relay_south = LED(6, active_high=False) client = mqtt.Client() client.username_pw_set(mqtt_user, password=mqtt_passwd) client.connect(mqtt_host) # Required to allow the state of the doors to be learned upon startup state_north = None state_south = None # Home Assistant defaults payload_open = "OPEN" payload_close = "CLOSE" # Report the state of the door via MQTT
def setupSensor(self): self._sensor = LineSensor(self.gpio_pin) self._sensor.when_activated = self.beginTray self._sensor.when_deactivated = self.endTray
# CamJam EduKit 3 - Robotics # Worksheet 5 - Line Detection import time # Import the Time library from gpiozero import LineSensor # Import the GPIO Zero Library # Set variables for the GPIO pins pinLineFollowerFront = 11 pinLineFollowerBack = 9 sensorFront = LineSensor(pinLineFollowerFront) sensorBack = LineSensor(pinLineFollowerBack) # Define the functions that will be called when the line is # detected or not detected def lineseenfront(): print("Line seen front") def linenotseenfront(): print("No line seen front") def lineseenback(): print("Line seen back") def linenotseenback(): print("No line seen back")
from robot import Robot from time import sleep from gpiozero import LineSensor r = Robot() lsensor = LineSensor(23, pull_up=True) rsensor = LineSensor(16, pull_up=True) lsensor.when_line = r.stop_motors rsensor.when_line = r.stop_motors r.set_left(60) r.set_right(60) while True: sleep(0.02)
from gpiozero import LineSensor from signal import pause sensor = LineSensor(21) sensor.when_line = lambda: print('Object Detected') sensor.when_no_line = lambda: print('Object Not Detected') pause()
#!/usr/bin/python3 import os from gpiozero import LineSensor from signal import pause # script that uses gpiozero library with the LineSensor 'drivers' and # functions # when IR sensor detect somethig between the sensor and her range we save the # time in line.log # when IR sensor no detect something between the sensor and her range we save # the time in noline.log # este programa usa la libreria gpiozero que usa unas funciones especificas # para el sensor IR # cuando el sensor IR detecta que hay algo entre el y su rango de deteccion # guarda la fecha en line.log # cuando el sensor detecta que ha dejado de haber algo entre el sensor # y su rango de alcance guarda la fecha en noline.log directorio = "/tmp/miriadax/" sensor = LineSensor(26) sensor.when_line = lambda: os.system('date +"%s" > ' + directorio + '/line.log' ) sensor.when_no_line = lambda: os.system('date +"%s" >' + directorio + '/noline.log') pause( ) # it wait for another signal from sensor // se mantiene a la espera de otra señal del sensor
mqtt_update(0.5, mqtt_topic) except: logging.warn("Failed to update influxdb") meter_lastupdate = now logging.info("Updated water meter") def call1(): logging.debug("Line detected - {}".format(meter_sensor._queue.queue)) update() def call2(): logging.debug("No line detected - {}".format(meter_sensor._queue.queue)) update() # Initiate line sensor from GPIO. We use 20Hz and a queue length of 5, such # that we have an effective sample rate of 5 Hz (supersampled 5x). Default # is 100 Hz but this takes more CPU than needed for this slow meter logging.debug("Initiating linesensor, queue_len 10, sample @ 40Hz") meter_sensor = LineSensor(4, queue_len=10, sample_rate=40) meter_sensor.when_line = call1 meter_sensor.when_no_line = call2 # Start waiting loop logging.info("Starting waiting loop forever") pause()
from gpiozero import LineSensor, Robot from time import sleep, time robot = Robot(left=(7, 8), right=(9, 10)) line = LineSensor(18) speed = 0.8 def on_line(): print('running on') robot.forward(speed) def find_line(): print('running find') robot.stop() sleep(0.2) period = 0.05 while True: start = time() robot.right(speed + 0.1) while time() < (start + period): print('Searching right with period,', period) if line.line_detected: robot.stop() print('line detected') return 1 pass period += 0.05