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")
Exemple #2
0
    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!")
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
 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
Exemple #6
0
    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)
Exemple #9
0
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()
Exemple #10
0
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
Exemple #11
0
 def setupSensor(self):
     self._sensor = LineSensor(self.gpio_pin)
     self._sensor.when_activated = self.beginTray
     self._sensor.when_deactivated = self.endTray
Exemple #12
0
# 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")
Exemple #13
0
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()
Exemple #15
0
#!/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()
Exemple #17
0
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