예제 #1
0
def values():
  global frontright,frontmiddle,frontleft,right,left,back
  #Digital and analog readings
  #THESE NEED TO BE UPDATED CONSTANTLY
  right = RPL.analogRead(5)
  back = RPL.digitalRead(17)
  frontright = RPL.digitalRead(20)
  left = RPL.analogRead(6)
  #frontmiddle = RPL.digitalRead(19)
  frontmiddle = RPL.analogRead(7)
  frontleft = RPL.digitalRead(18)
  #print(values) to debug readings
  return "front right = %s\nfront middle = %s\nfront left = %s\nright = %s\nleft = %s\nback = %s" % (frontright,frontmiddle,frontleft,right,left,back)
예제 #2
0
def sensor():
    try:
        return RPL.analogRead(int(request.vars['pin']))
    except Exception as e:
        return (e)
    else:
        return ("OTHER ERROR")
예제 #3
0
def checkPin(x, y):
    global multiplier
    if (y == 0):
        RPL.servoWrite(x, 2000)
        print("Moving motor " + str(x) + "... ")
        time.sleep(1)
        RPL.servoWrite(x, 1500)
        RPL.servoWrite(x, 0)
        print("Done with motor " + str(x) + ".")
        x += 1
        print("Motor testing completed!")
    if (y == 1):
        RPL.pinMode(pinArraySensorset1[x], RPL.INPUT)
        initialTime = float(time.clock() * multiplier)
        while (float(time.clock() * multiplier) < (initialTime + 4)):
            displayTextClear()
            print("Pin " + str(pinArraySensorset1[x]) + " output: " +
                  str(RPL.digitalRead(pinArraySensorset1[x])))
            time.sleep(0.2)
        print("Digital sensor testing complete!")
    if (y == 2):
        initialTime = float(time.clock() * multiplier)
        while (float(time.clock() * multiplier) < (initialTime + 4)):
            displayTextClear()
            print("Pin " + str(pinArraySensorset2[x]) + " output: " +
                  str(RPL.analogRead(pinArraySensorset2[x])))
            time.sleep(0.2)
        print("Analog sensor testing complete!")
예제 #4
0
def navigation():
    #Pulls respective values of the hedge for x and y from the position array
    MobileX = float(hedge.position()[1])
    MobileY = float(hedge.position()[2])

    while True:
        MobileX = hedge.position()[1]
        MobileY = hedge.position()[2]
        if RPL.analogRead(1) > 500:  # front left
            RPL.pwmWrite(ServoR, 1250, 3000)
            RPL.pwmWrite(ServoL, 1000, 3000)
            print "1"
        elif RPL.analogRead(2) > 500:  # front right
            RPL.pwmWrite(ServoR, 2000, 3000)
            RPL.pwmWrite(ServoL, 1750, 3000)
            print "2"
        elif RPL.analogRead(3) > 500:   # left side
            RPL.pwmWrite(ServoR, 1550, 3000)
            RPL.pwmWrite(ServoL, 1000, 3000)
            print "3"
        elif RPL.analogRead(4) > 500:   # right side
            RPL.pwmWrite(ServoR, 2000, 3000)
            RPL.pwmWrite(ServoL, 1450, 3000)
            print "4"
        elif 0 > MobileX and 0 > MobileY:
            RPL.pwmWrite(ServoR, 1750, 3000)  # drive straight
            RPL.pwmWrite(ServoL, 1250, 3000)
            print "a"
        elif MobileX < 0 and MobileY > 0:
            RPL.pwmWrite(ServoR, 1550, 3000)  # turn right
            RPL.pwmWrite(ServoL, 1250, 3000)
            print "b"
        elif MobileX > 0 and MobileY < 0:
            RPL.pwmWrite(ServoR, 1750, 3000)   # turn left
            RPL.pwmWrite(ServoR, 1450, 3000)
            print "c"
        elif MobileX == 0 and MobileY == 0:
            RPL.pwmWrite(ServoR, 1500, 3000)         # stop
            RPL.pwmWrite(ServoL, 1500, 3000)
            print "d"
        elif MobileX > 0 and MobileY > 0:
            RPL.pwmWrite(ServoR, 1450, 3000)    # backwards
            RPL.pwmWrite(ServoR, 1550, 3000)
           print "e"
        print MobileX
        print MobileY
        hedge.print_position()
예제 #5
0
def init():
  print "Initializing co2 sensor"
  co2readings = []
  for x in range(0,20):
    co2readings.append(RPL.analogRead(4))
    time.sleep(0.05)
  print "Initialized"
  return co2readings
예제 #6
0
def receive():
    r = str(random.random())
    try:
        if int(request.vars['key']) in keys:
            log.debug("TRY START" + r + " " + str(random.random()))
            command_dictionary[int(request.vars['key'])](
                request.vars['command'])
            log.debug("TRY FINISH" + r + " " + str(random.random()))
        return RPL.analogRead(0)
    except Exception as e:
        log.debug("EXCEPT START" + " " + e)
        forward('stop')
        return RPL.analogRead(0)
    else:
        log.debug("ELSE START" + r + " " + str(random.random()))
        forward('stop')
        log.debug("ELSE START" + r + " " + str(random.random()))
        return RPL.analogRead(0)
예제 #7
0
def detectHuman():
  average = sum(co2Readings) / len(co2Readings)
  co2 = RPL.analogRead(4)
  if average - co2 >= 20:
    print "Human Dectected"
  else:
    pass
  co2Readings.pop(0)
  co2Readings.append(co2)
예제 #8
0
def checkPinsAnalog():
    x = 0
    global multiplier
    while (x < len(pinArraySensorset2)):
        initialTime = float(time.clock() * multiplier)
        while (float(time.clock() * multiplier) < (initialTime + 4)):
            displayTextClear()
            print("Pin " + str(pinArraySensorset2[x]) + " output: " +
                  str(RPL.analogRead(pinArraySensorset2[x])))
            time.sleep(0.2)
        x += 1
    print("Analog sensor testing complete!")
예제 #9
0
def values():
    global left, right, leftwheel, rightwheel, frontleft, frontright, top
    left = RPL.analogRead(0)
    leftwheel = RPL.analogRead(1)
    frontleft = RPL.analogRead(2)
    top = RPL.analogRead(3)
    frontright = RPL.analogRead(4)
    rightwheel = RPL.analogRead(5)
    right = RPL.analogRead(6)
    return "Top: %s\nFront left: %s\nFront right: %s\n\nLeft: %s\nRight: %s\n\nRight wheel: %s\nLeft wheel: %s" % (
        top, frontleft, frontright, left, right, rightwheel, leftwheel)
예제 #10
0
right = 19
front = 16
left = 17
analogL = 1

rgo = 2000
lgo = 1000

# ^ setup

RPL.servoWrite(motorR, rgo)
RPL.servoWrite(motorL, lgo) # turn on both motors going straight

while True:
    RPL.servoWrite(motorR, rgo)
    RPL.servoWrite(motorL, lgo)

    while RPL.analogRead(analogL) >= 400: # middle range, can go straight
        RPL.servoWrite(motorR, rgo)
        RPL.servoWrite(motorL, lgo)

    while RPL.analogRead(analogL) < 400: # no longer middle
        if RPL.digitalRead(left) == 0: # digital also sense, so close
            RPL.servoWrite(motorR, 0) # turn away from wall
            RPL.servoWrite(motorL, lgo)

        if RPL.digitalRead(left) == 1: # digital doesn't sense, far
            RPL.servoWrite(motorR, rgo) # turn towards wall
            RPL.servoWrite(motorL, 0)
예제 #11
0
# CO2 sensor

# comands:
# ssh [email protected]
# password: Engineering!1
# python co2reading.py

# go to GUI: nav > config ip adress > data should be ssh number

import RoboPiLib as RPL
RPL.RoboPiInit("/dev/ttyAMA0", 115200)
import post_to_web as PTW
import time

co = 1
print RPL.analogRead(co)
average = []
base = 0
CO2detect = 0
content = 0
PTW.state['CO2detect'] = 1

# ^ setup

# begins by averaging the first 1000 readings in order to get a base reading
base = RPL.analogRead(co)

while True:
    content = RPL.analogRead(co)
    if content <= 250 or base - content >= 30:
        CO2detect = 2
예제 #12
0
import setup
from setup import RPL
import RoboPiLib as RoboPi

RoboPi.RoboPiInit(“/dev/ttyAMA0”,115200)

RoboPi.pinMode(1,RoboPi.OUTPUT)
RoboPi.digitalWrite(16,1)
RoboPi.pinMode(17,RoboPi.PWM)
RoboPi.analogWrite(17,127) 
print RoboPi.analogRead(0)

#RPL.servoWrite(0,1000)
#RPL.servoWrite(1,1000)

#x = 1
#while x == 1:
 # RoboPi.analogRead(1)
 # AnalogRead = RoboPi.analogRead(1)
 # AnalogRead = int(AnalogRead)
 # print AnalogRead
  
  
 # Dist = (500 * AnalogRead)/1024
#  print Dist
  
#import RoboPiLib as RoboPi
예제 #13
0
import RoboPiLib as RPL
import setup
import post_to_web as PTW
import time

start = time.time()
now = time.time()

pin = 6
content = 0
i = 0
average = [ ]
base = RPL.analogRead(pin)

while len(average) < 50:
    content = RPL.analogRead(pin)
    average.append(content)

base = sum(average) / len(average)


PTW.state['Start Time:'] = time.asctime(time.localtime())
# begins by averaging the first 1000 readings in order to get a base reading

while now - start < 1500:
    content = RPL.analogRead(pin)
    if base - content >= 3:
        PTW.state['CO2detect: '] = "Life possible - %i" % content
    elif base - content >= 15:
        PTW.state['CO2detect: '] = "Life certain - %i" % content
    else:
예제 #14
0
import RoboPiLib as RPL
import setup
import time
running = True
while running:

    print(RPL.analogRead(6))

##	time.sleep(1)
예제 #15
0
    RPL.servoWrite(motorL, motorL_forward)
    RPL.servoWrite(motorR, motorR_forward)


def reverse():
    RPL.servoWrite(motorL, motorL_backward)
    RPL.servoWrite(motorR, motorR_backward)


def stop():
    RPL.servoWrite(motorL, 0)
    RPL.servoWrite(motorR, 0)


while counter == 0:
    RPL.analogRead(0)
    RPL.analogRead(3)
    Fanalog = RPL.analogRead(0)
    Banalog = RPL.analogRead(3)

    straight = Fanalog - Banalog

    if straight > -2 and straight < 8:
        reverse()
#if the robot is angled away the wall- turn tiwards
    if straight < -2:
        RPL.servoWrite(motorL, 1550)
        RPL.servoWrite(motorR, motorR_backward)
#if the robot is towards  the wall
    if straight > 8:
        RPL.servoWrite(motorL, motorL_backward)
예제 #16
0
import RoboPiLib as RPL
import setup
def brake()
  x = RPL.analogRead(4)
  speed0 = - 0.000885 * x ** 2 + 0.558286 * x + 1481.5
  speed1 = - 0.000885 * x ** 2 + 0.558286 * x + 1481.5
  print('this is the speed0', speed0)
  print('this is the speed1', speed1)

  if speed0 and speed1 >= 0:
    RPL.servoWrite(0,int(speed0)) 
    RPL.servoWrite(1,int(speed1))
brake()
예제 #17
0
    RPL.servoWrite(motorR, lgo)


def forward():
    RPL.servoWrite(motorL, lgo)
    RPL.servoWrite(motorR, rgo)


def stop():
    RPL.servoWrite(motorL, 0)
    RPL.servoWrite(motorR, 0)


while True:
    while True:  # forward
        RPL.analogRead(fana)
        RPL.analogRead(back)
        Fanalog = RPL.analogRead(fana)
        Banalog = RPL.analogRead(bana)
        frontsensor = RPL.digitalRead(16)
        straight = Fanalog - Banalog

        #if there is something in front it will turn left
        if frontsensor == 0:
            RPL.servoWrite(motorL, lgo)
            RPL.servoWrite(motorR, 0)

        # calibrating the distance off the wall:
        if Fanalog <= closedist and Banalog <= closedist:
            RPL.servoWrite(motorL, lslow)
            RPL.servoWrite(motorR, rgo)
예제 #18
0
def start_camera():
    os.system(
        '/usr/src/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -o "output_http.so -w /usr/src/mjpg-streamer/mjpg-streamer-experimental/www -p 8080" -i "input_raspicam.so -x 640 -y 480 -fps 10 -rot 180"'
    )
    return RPL.analogRead(0)
예제 #19
0
import setup
import RoboPiLib as RPL

((500 * RPL.analogRead(0)) / 1024)
print RPL.analogRead(1)
예제 #20
0
import RoboPiLib as RPL
import time
RPL.RoboPiInit("/dev/ttyAMA0",115200)

sensor_2 = RPL.analogRead(1)

def forward():
    RPL.servoWrite(6, 1400)
    RPL.servoWrite(7, 1600)
    print "Forward"

while True: 
  if sensor_2 > 300:
    forward()

예제 #21
0
    RPL.servoWrite(motorR,back)

def forward():
    RPL.servoWrite(motorL,lgo)
    RPL.servoWrite(motorR,rgo)

def stop():
    RPL.servoWrite(motorL, 1500)
    RPL.servoWrite(motorR, 1500)



while x != "no": # big loop

    while True: # forward
        Fanalog = RPL.analogRead(fana)
        Banalog = RPL.analogRead(bana)
        Lanalog = RPL.analogRead(lana)
        fsensor = RPL.digitalRead(fdig)
        bsensor = RPL.digitalRead(bdig)
        straight = Banalog - Fanalog
        PTW.state['Fanalog'] = Fanalog
        PTW.state['Banalog'] = Banalog
        PTW.state['Lanalog'] = Lanalog
        PTW.state['fsensor'] = fsensor
        PTW.state['bsensor'] = bsensor
        PTW.state['straight'] = straight
        forward()


예제 #22
0
rgo = 2000
rslow = 1500
lgo = 100
lslow = 600

RPL.servoWrite(motorR, rgo)
RPL.servoWrite(motorR, rgo)
RPL.servoWrite(motorL, lgo)
RPL.servoWrite(motorL, lgo)

while True:
    RPL.servoWrite(motorR, rgo)
    RPL.servoWrite(motorL, lgo)

    while RPL.analogRead(analogR) >= 300:  # middle range, can go straight
        print "we good"
        RPL.servoWrite(motorR, rgo)
        RPL.servoWrite(motorL, lgo)

    while RPL.analogRead(analogR) < 300:  # no longer middle
        while RPL.digitalRead(19) == 0:  # digital also sense, so close
            print "close"
            print RPL.analogRead(analogR)
            RPL.servoWrite(motorR, rslow)
            RPL.servoWrite(motorL, lgo)

        while RPL.digitalRead(19) == 1:  # digital doesn't sense, far
            print "far"
            print RPL.analogRead(analogR)
            RPL.servoWrite(motorR, rgo)
예제 #23
0
import setup
import RoboPiLib as RPL

while True:
    print RPL.analogRead(1)

#    elif content - base <= -3:
#        x = 0
#        y = y + 1
#        if y >= 3:
#            average = [ ]
#            while len(average) < 1000:
#                content = RPL.analogRead(co)
#                average.append(content)
#                if len(average) == 1000:
#                    base = sum(average) / len(average)
#                    print "NEW BASE"
#                    print base
예제 #24
0

def small_correct():
    RPL.servoWrite(7, 1550)
    RPL.servoWrite(6, 1420)
    print "RIGHT correction"


def large_correct():
    RPL.servoWrite(6, 1460)
    RPL.servoWrite(7, 1570)
    print "LEFT correction"


while True:
    sensor_1 = RPL.analogRead(0)
    sensor_2 = RPL.analogRead(1)
    move_forward = False
    move_left = False
    move_right = False
    stop = False
    right = False
    left = False

    if sensor_1 > 400:
        move_right = True
    elif sensor_1 > 50:
        move_forward = True
    elif sensor_1 - sensor_2 > 80:
        right = True
    elif sensor_2 - sensor_1 > 80:
예제 #25
0
import RoboPiLib as RPL
import setup
import time
from time import sleep
sensor_pinF = 5
sensor_pinL = 6
sensor_pinR = 7
RPL.pinMode(sensor_pinF, RPL.INPUT)
RPL.pinMode(sensor_pinL, RPL.INPUT)
RPL.pinMode(sensor_pinR, RPL.INPUT)
R = 1
L = 0
startDistanceLeft = RPL.analogRead(sensor_pinL)
startDistanceRight = RPL.analogRead(sensor_pinR)
startDistanceForward = RPL.analogRead(sensor_pinF)

while True:
    currentDistanceForward = RPL.analogRead(sensor_pinF)
    currentDistanceLeft = RPL.analogRead(sensor_pinL)
    currentDistanceRight = RPL.analogRead(sensor_pinR)

    if currentDistanceLeft <= 15:
        sleep(1.0)
        if currentDistanceLeft <= 15:
            RPL.servoWrite(L, 1500)
            RPL.servoWrite(R, 1600)
            sleep(1.30)

    if currentDistanceForward >= 315:
        if currentDistanceRight < currentDistanceLeft:
            RPL.servoWrite(L, 1400)
예제 #26
0
import RoboPiLib as RPL
import setup
import post_to_web as PTW

sensor_pin = 16
mSpeed = 1400
mSpeed2 = 1600
Asensor_pin = 6
Fdistance = 100

running = True
while running:
    distance = RPL.analogRead(Asensor_pin)
    RPL.servoWrite(1, mSpeed2)
    RPL.servoWrite(0, mSpeed)

    if distance > Fdistance:
        mSpeed = 1600
        mSpeed2 = 1600
        print("Left Turn")
    elif distance < Fdistance:
        mSpeed = 1400
        mSpeed2 = 1400
        print("right turn")

    else:
        mSpeed = 1400
        mSpeed2 = 1600
        print("straight")

def wall_left():
    motors.wall_left()
    print "wall_left"


def wall_right():
    motors.wall_right()
    print "wall_right"


##Analog
while 1:

    left_sensor = RoboPi.analogRead(LEFT_GO)

    L_VOLTS = 1000 / (RoboPi.analogRead(LEFT_GO) + 0.0000000001)
    L_CM = RoboPi.analogRead(LEFT_GO)

    go_forward = False
    go_clockwise = False
    go_counterclockwise = False
    go_stop = False
    go_wall_left = False
    go_wall_right = False

    print RoboPi.analogRead(LEFT_GO)

    if L_CM > 400:
        go_wall_left = True
예제 #28
0
import direction
import time
import RoboPiLib as RPL
pause = TIME HERE
speed = SPEED HERE
apin = 7

while True:
  analog = RPL.analogRead(apin)
  if analog <= 650: #EDIT THIS
    direction.touch(analog)
  else:
    direction.frontraw(speed)
    time.sleep(pause)
    direction.stop()
    break
예제 #29
0
import RoboPiLib as RPL
import setup
import time
from time import sleep
sensor_pinF = 0
sensor_pinL = 2
sensor_pinR = 3
RPL.pinMode(sensor_pinF, RPL.INPUT)
RPL.pinMode(sensor_pinL, RPL.INPUT)
RPL.pinMode(sensor_pinR, RPL.INPUT)
R = 1
L = 0


values = []


for i in range(0,100):
   values.append(RPL.analogRead(sensor_pinF))
print(sum(values) / 100)

예제 #30
0
import RoboPiLib as RPL
import setup
import time

L = 1
R = 0
x = 1

while x == 1:
    reading = RPL.analogRead(7)
    if reading < 500:
        RPL.servoWrite(0, 1590)
        RPL.servoWrite(1, 1410)
    else:
        RPL.servoWrite(0, 1500)
        time.sleep(1.5)
        RPL.servoWrite(0, 1590)