Esempio n. 1
0
async def motor():
	global motorON
	global motor
	global previousMotorON
	# Adjust the pulse values to set rotation range
	min_pulse = 0.000544    # Library default = 1/1000
	max_pulse = 0.0024              # Library default = 2/1000
	# Initial servo position
	pos =  1
	test = 0
	servo = Servo(17, pos, min_pulse, max_pulse, 20/1000, None)
	

	while True:
		await asyncio.sleep(0.2)
		if motorON == True:
			pos=pos*(-1)
			servo.value=pos
			await asyncio.sleep(2)
		else :
                        #put back in original position
                        servo.value=0
                        #detach the motor to avoid glitches and save energy
                        servo.detach()
                        previousMotorON = False
 def FaceForward(self):
     s = Servo(self.pin,
               min_pulse_width=0.5 / 1000,
               max_pulse_width=10 / 1000,
               frame_width=20 / 1000)
     s.max()
     time.sleep(0.3)
     s.detach()
 def FaceRight(self):
     s = Servo(self.pin,
               min_pulse_width=1.1 / 1000,
               max_pulse_width=10 / 1000,
               frame_width=20 / 1000)
     s.min()
     time.sleep(0.3)
     s.detach()
 def FaceLeft(self):
     s = Servo(self.pin,
               min_pulse_width=1 / 1000,
               max_pulse_width=10.6 / 1000,
               frame_width=20 / 1000)
     s.max()
     time.sleep(0.3)
     s.detach()
Esempio n. 5
0
class PowerSelector:
    pulse = FS5106S

    _min_level = 1
    _max_level = 9

    _min_pos = -1.0
    _max_pos = 1.0
    _delta = (_max_pos - _min_pos) / (_max_level - _min_level)

    _level = (_max_level - _min_level + 1) // 2

    def __init__(self, pin):
        self._servo = Servo(pin,
                            self._pos,
                            self.pulse[0],
                            self.pulse[1],
                            20 / 1000,
                            pin_factory=factory)
        self.set_level(self._level)

    @property
    def _pos(self):
        # level 1 = 1
        # level 9 = -1

        # the servo is installed reversed,
        # so -1 - is max power, 1 - is min
        pos = self._max_pos - \
            (self._level - self._min_level) * self._delta

        if pos > self._max_pos:
            pos = self._max_pos

        if pos < self._min_pos:
            pos = self._min_pos
        return pos

    def set_level(self, new_level):
        if new_level < self._min_level:
            new_level = self._min_level

        if new_level > self._max_level:
            new_level = self._max_level

        self._level = new_level

        logger.info(f"Setting power level to {new_level}")
        pos = self._pos
        logger.debug(f"Servo pos is set to {pos}")
        self._servo.value = self._pos
        sleep(3)
        self._servo.detach()

    def detach(self):
        self._servo.detach()
Esempio n. 6
0
    def feed(self, feed_size):
        if not is_gpio_capable:
            logging.getLogger('petfeedd').info(
                "This device is not GPIO capable. Simulating a feed.")
            return

        feed_size_time = float(
            self.config["gpio"]["servo_feed_time"]) * float(feed_size)
        servo = Servo(int(self.config["gpio"]["servo_pin"]))
        servo.max()
        time.sleep(feed_size_time)
        servo.detach()
Esempio n. 7
0
class Motor(Servo):
    def __init__(self, servoPin):
        "Initializes the servo and has basic drive functions"
        self.servo = Servo(servoPin)

    def forward(self):
        "Function that drives the servos forward"
        self.servo.max()
        time.sleep(0.05)

    def backward(self):
        "Function that drives the servos backward"
        self.servo.min()
        time.sleep(0.05)

    def stop(self):
        "Stops motor movement"
        self.servo.detach()
Esempio n. 8
0
class WeatherDashboard:
    servo_pin = 17
    led_pin = 14

    def __init__(self, servo_position=0, led_status=0):
        self.servo = Servo(self.servo_pin)
        self.led = LED(self.led_pin)
        self.move_servo(servo_position)
        self.set_led_status(led_status)

    def move_servo(self, servo_position=0):
        self.servo.value = self.convert_percentage_to_integer(servo_position)
        self.servo.detach()

    def set_led_status(self, led_status=0):
        if led_status == 0:
            self.led.off()
        elif led_status == 1:
            self.led.on()
        else:
            self.led.blink()

    def convert_percentage_to_integer(self, percentage_amount):
        return (percentage_amount * .02) - 1
Esempio n. 9
0
from time import sleep
from slow import sweep

#pins 23 and 24 connect to servos w signal wire
tilt = Servo(24)
pan = Servo(23)
l_led = LED(22)
r_led = LED(17)

#initial tilt to minimum pos (horizontal)
#inital pan to middle pos (straight)
tilt.value = -1
pan.value = 0
#after any position adjustment allow small wait for servo to respond before detachment
sleep(0.3)
tilt.detach()
pan.detach()
sleep(1)
print('Left LED On')
l_led.on()
sleep(2)
print('Left LED Off')
l_led.off()
sleep(1)
print('Right LED On')
r_led.on()
sleep(2)
print('Right LED Off')
r_led.off()
sleep(1)
print(3)
def gen_graph():
    volumes = []
    times = []
    for i in range(25):
        volumes.append(sample_half())
        times.append(time())
        print(volumes[-1])
        if volumes[-1] > 0.04:
            print('NOISE')
    plt.plot(times, volumes)
    plt.show()


s = Servo(17)
s.detach()


def go():
    multiplier = 10
    while True:
        vol = sample_half()
        if vol < 0.01 or vol > 0.1:
            s.detach()
        else:
            s.value = vol * multiplier
            multiplier = -multiplier
            sleep(0.2)
            s.mid()

        print(vol)
Esempio n. 11
0
class ServoDevice:
    servo_pin = 17

    def __init__(self, servo_position=-1):
        self.servo = Servo(self.servo_pin)

    # self.move_servo(servo_position)

    def validator(self, pPos):
        #print("run validator")
        if (pPos < -1):
            print("Value is below minimum range for servo!")
            print(pPos)
            pPos = -1


#            return pPos
        elif (pPos > 1):
            print("Value is above maximum range for servo!")
            print(pPos)
            pPos = 1

        return pPos

    def move_servo(self, servo_position):
        #self.servo.value=self.convert_percentage_to_integer(servo_position)
        servo_position = self.validator(servo_position)
        self.servo.value = servo_position

    def convert_percentage_to_integer(self, percentage_amount):
        return (percentage_amount * 0.02) - 1

    def calculatePosFromTemp(self, data):
        maxPos = -1  #value is in degrees
        minPos = 1
        totalRange = abs(maxPos) + abs(minPos)
        maxTemp = 50  # value is in Celcius
        conversionVal = totalRange / maxTemp
        currentTemp = data
        nextPos = 0
        if (float(currentTemp) > 25):
            nextPos = minPos
        elif (float(currentTemp) < 18.5):
            nextPos = maxPos
        else:
            nextPos = float(currentTemp) * conversionVal

        print(nextPos)
        self.move_servo(nextPos)
        time.sleep(1)
        self.servo.detach()
        return nextPos

    def sweep_motor(self):
        pos = 0
        speedRateLimiter = .02
        #(pos = 0 pos <= 171 pos += 1)
        for x in arange(-1, 1, 0.05):
            pos = x
            self.move_servo(pos)
            time.sleep(speedRateLimiter)
        #(pos = 172 pos >= 0 pos -= 1)
        for x in arange(1, -1, -0.05):
            pos = x
            self.move_servo(pos)
            time.sleep(speedRateLimiter)

    def test_range_of_motion(self):
        self.sweep_motor()
        self.servo.max()
        time.sleep(1)
        self.servo.mid()
        time.sleep(1)
        self.servo.min()
        time.sleep(1)
        self.servo.detach()

    def test_calculation(self, data):
        newPos = servo_device.calculatePosFromTemp(data)
        self.move_servo(newPos)
        time.sleep(1)
        self.servo.detach()
Esempio n. 12
0
from gpiozero import Servo
from time import sleep
servo = Servo(17)
counter = 0
while counter < 8:
    servo.value = 0.25
    sleep(1)
    counter += 1
    if counter >= 8:
        servo.detach()
        sleep(86392)
        counter = 0
        continue
Esempio n. 13
0
radio2.printDetails()

radio2.startListening()

#setup the servos
myCorrection = 0.045
maxPW = (2.0 + myCorrection) / 1000
minPW = (1.0 - myCorrection) / 1000

rudderServo = Servo(12, min_pulse_width=minPW, max_pulse_width=maxPW)
elevatorServo = Servo(13, min_pulse_width=minPW, max_pulse_width=maxPW)

rudderServoVal = 0.0
elevatorServoVal = 0.0

rudderServo.detach()
elevatorServo.detach()

#delay for allowing servos time to move
delay = 0.1

while True:
    pipe = [0]
    while not radio2.available(pipe):
        time.sleep(10000 / 1000000.0)

    recv_buffer = []
    radio2.read(recv_buffer, radio2.getDynamicPayloadSize())
    #print ("Received:") ,
    #print (recv_buffer)
Esempio n. 14
0
 class _Rover:
     def __init__(self):
         self.right = Servo(12)
         self.right.detach()
         self.left = Servo(13)
         self.left.detach()
 if (x == "+"):
     pwm0.value += 0.01
     pwm1.value += 0.01
     print(pwm0.value, pwm1.value, sep=" // ")
 elif (x == "-"):
     pwm0.value -= 0.01
     pwm1.value -= 0.01
     print(pwm0.value, pwm1.value, sep=" // ")
 elif (x == "value"):
     print(pwm0.value, pwm1.value, sep=" // ")
 elif (x == "pw"):
     print(pwm0.pulse_width, pwm1.pulse_width, sep=" // ")
 elif (x == "fw"):
     print(pwm0.frame_width, pwm1.frame_width, sep=" // ")
 elif (x == "isactive"):
     print(pwm0.is_active, pwm1.is_active, sep=" // ")
 elif (x == "min"):
     pwm0.min()  # actual min seems to be -0.27
     pwm1.min()  # actual min seems to be -0.27
 elif (x == "mid"):
     pwm0.mid()
     pwm1.mid()
 elif (x == "max"):
     pwm0.max()
     pwm1.max()
 elif (x == "detach" or x == "stop"):
     pwm0.detach()
     pwm1.detach()
 else:
     pwm0.value = float(x)
     pwm1.value = float(x)
Esempio n. 16
0
      tiltToPercentage(x)
      time.sleep(0.1)
    for x in range(100, -5, -5):
      panToPercentage(x)
      time.sleep(0.1)
    tiltToPercentage(50)
    panToPercentage(50)
    time.sleep(0.2)
    pan_servo.detach()
    tilt_servo.detach()

global tilt_servo
global pan_servo

if __name__ == '__main__':
    tilt_servo = Servo(TILT_PIN, min_pulse_width=PULSE_MIN, max_pulse_width=PULSE_MAX, frame_width=PULSE_WIDTH)
    pan_servo = Servo(PAN_PIN, min_pulse_width=PULSE_MIN, max_pulse_width=PULSE_MAX, frame_width=PULSE_WIDTH)
    logging.info("Starting demo loop")
    while True:
        try:
            demo()
            time.sleep(10)
            pan_servo.detach()
            tilt_servo.detach()
        except KeyboardInterrupt:
            logging.info("interrupted, exiting")
            break
    pan_servo.detach()
    tilt_servo.detach()
logging.debug("Done")
Esempio n. 17
0
from gpiozero import Servo

DIRECTION_SERVO_PIN = 2
directionServo = Servo(DIRECTION_SERVO_PIN)
directionServo.mid()

running = True
while running:
    response = input("Enter comand: ")
    if response.startswith("exit"):
        running = False
    else:
        try:
            value = float(response)
            directionServo.value = value
            print("Servo {}".format(value))
        except:
            print("Your expression doesn't match")

print("Closing application ...")
directionServo.detach()
exit(0)