Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
encoder_b = DigitalInputDevice(pin_b)
encoder_b.when_activated = self._increment
encoder_b.when_deactivated = self._increment
def reset(self):
self._value = 0
def _increment(self):
self._value += 1
@property
def value(self):
return self._value
#test encoder
r = Robot((19,21), (24,26))
e1 = Encoder(16)
e2 = Encoder(17)
#start the robot
r.value = (1,1)
#find a sample rate
while True:
print("e1 {} e2 {}".format(e1.value, e2.value))
sleep(1)
self._value += 1
@property
def value(self):
return self._value
def clamp(value):
return max(min(1, value), 0)
SAMPLETIME = 0.5
TARGET = 20
KP = 0.02
KD = 0.01
KI = 0.005
r = Robot((10,9), (8,7))
e1 = Encoder(17)
e2 = Encoder(18)
m1_speed = 1
m2_speed = 1
r.value = (m1_speed, m2_speed)
e1_prev_error = 0
e2_prev_error = 0
e1_sum_error = 0
e2_sum_error = 0
while True:
e1_error = TARGET - e1.value
import curses
from gpiozero import Robot
robot = Robot(left=(4, 14), right=(17, 18))
actions = {
curses.KEY_UP: robot.forward,
curses.KEY_DOWN: robot.backward,
curses.KEY_LEFT: robot.left,
curses.KEY_RIGHT: robot.right,
}
def main(window):
next_key = None
while True:
curses.halfdelay(1)
if next_key is None:
key = window.getch()
else:
key = next_key
import cv2
import numpy as np
import gpiozero
camera = PiCamera()
image_width = 640
image_height = 480
camera.resolution = (image_width, image_height)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(image_width, image_height))
center_image_x = image_width / 2
center_image_y = image_height / 2
minimum_area = 250
maximum_area = 100000
robot = gpiozero.Robot(left=(17,18), right=(27,22))
forward_speed = 0.3
turn_speed = 0.25
HUE_VAL = 28
lower_color = np.array([HUE_VAL-10,100,100])
upper_color = np.array([HUE_VAL+10, 255, 255])
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
image = frame.array
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
color_mask = cv2.inRange(hsv, lower_color, upper_color)
image2, contours, hierarchy = cv2.findContours(color_mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
right = y if x < 0 else y - x
return (clamped(left), clamped(right))
def clamped(v):
return max(-1, min(1, v))
def drive():
while True:
if bd.is_pressed:
x, y = bd.position.x, bd.position.y
yield pos_to_values(x, y)
else:
yield (0, 0)
if __name__ == '__main__':
robot = Robot(left=(10, 9), right=(8, 7))
bd = BlueDot()
robot.source = drive()
pause()
from gpiozero import Robot, MotionSensor
from signal import pause
robot = Robot(left=(4, 14), right=(17, 18))
pir = MotionSensor(5)
robot.source = zip(pir.values, pir.values)
pause()
from bluedot import BlueDot
from gpiozero import Robot
from signal import pause
bd = BlueDot()
robot = Robot(left=(10, 9), right=(8, 7))
def move(pos):
if pos.top:
robot.forward()
elif pos.bottom:
robot.backward()
elif pos.left:
robot.left()
elif pos.right:
robot.right()
def stop():
robot.stop()
bd.when_pressed = move
bd.when_moved = move
def reset(self):
self._value = 0
def _increment(self):
self._value += 1
@property
def value(self):
return self._value
SAMPLETIME = 1
TARGET = 45
KP = 0.02
r = Robot((10,9), (8,7))
e1 = Encoder(17)
e2 = Encoder(18)
m1_speed = 1
m2_speed = 1
r.value = (m1_speed, m2_speed)
while True:
e1_error = TARGET - e1.value
e2_error = TARGET - e2.value
m1_speed += e1_error * KP
m2_speed += e2_error * KP
m1_speed = max(min(1, m1_speed), 0)
def reset(self):
self._value = 0
def _increment(self):
self._value += 1
@property
def value(self):
return self._value
SAMPLETIME = 0.5
TARGET = 20
KP = 0.02
KD = 0.01
r = Robot((10,9), (8,7))
e1 = Encoder(17)
e2 = Encoder(18)
m1_speed = 1
m2_speed = 1
r.value = (m1_speed, m2_speed)
e1_prev_error = 0
e2_prev_error = 0
while True:
e1_error = TARGET - e1.value
e2_error = TARGET - e2.value
m1_speed += (e1_error * KP) + (e1_prev_error * KD)
encoder.when_activated = self._increment
encoder.when_deactivated = self._increment
def reset(self):
self._value = 0
def _increment(self):
self._value += 1
@property
def value(self):
return self._value
SAMPLETIME = 1
r = Robot((10,9), (8,7))
e1 = Encoder(17)
e2 = Encoder(18)
#start the robot
m1_speed = 1.0
m2_speed = 1.0
r.value = (m1_speed, m2_speed)
#find a sample rate
while True:
print("e1 {} e2 {}".format(e1.value, e2.value))
sleep(SAMPLETIME)