View difference between Paste ID: ST8h5s71 and 7UFHp1Hw
SHOW: | | - or go back to the newest paste.
1
# w/ help from #beagle on Freenode
2
# and w/ help from Prabakar on his book "BeagleBone by Example."
3
4
from flask import Flask, render_template
5
import Adafruit_BBIO.GPIO as GPIO
6
import Adafruit_BBIO.PWM as PWM
7
import time
8
from rangeI import Range
9
import serial
10
11
sonar = Range("/dev/ttyS2")
12
13
class Motor:
14
    def __init__(self, dir_pin, pwm_pin, pwm_freq):
15
        self.dir_pin = dir_pin
16
        self.pwm_pin = pwm_pin
17
        self.value = 0
18
19
        PWM.start(pwm_pin, 0, pwm_freq)
20
        GPIO.setup(dir_pin, GPIO.OUT)
21
22
    def set(self, value):
23
        assert -100 <= value <= 100
24
        if (value < 0) != (self.value < 0):
25
26
            # changing direction
27
            PWM.set_duty_cycle(self.pwm_pin, 0)
28
            GPIO.output(self.dir_pin, value < 0)
29
30
        PWM.set_duty_cycle(self.pwm_pin, abs(value))
31
        self.value = value
32
33
motor1 = Motor(dir_pin="P8_18", pwm_pin="P9_16", pwm_freq=2000)
34
motor2 = Motor(dir_pin="P8_16", pwm_pin="P9_14", pwm_freq=2000)
35
motor3 = Motor(dir_pin="P8_14", pwm_pin="P8_13", pwm_freq=2000)
36
motor4 = Motor(dir_pin="P8_26", pwm_pin="P8_19", pwm_freq=2000)
37
38
app = Flask(__name__)
39
@app.route("/")
40
# @app.route("/<state>")
41
@app.route("/<take>")
42
43
def Distance(take=None):
44
45
    distance = sonar.measure()
46
    print("distance =", distance, "inch")
47
    time.sleep(2)
48
49
    if take == distance >= 8:
50
        motor1.set(0)
51
        motor2.set(0)
52
        motor3.set(0)
53
        motor4.set(0)
54
        print("Stopping Motors!")
55
        time.sleep(0.2)
56
57
    template_data = {
58
        "title" : take,
59
    }
60
    return render_template("Boot.html", **template_data)
61
62
@app.route("/<state>")
63
64
def updates(state=None):
65
66
    if state == "F":
67
        motor1.set(100)
68
        motor2.set(100)
69
        motor3.set(100)
70
        motor4.set(100)
71
        time.sleep(0.2)
72
73
    if state == "L":
74
        motor1.set(15)
75
        motor2.set(85)
76
        motor3.set(15)
77
        motor4.set(85)
78
        time.sleep(0.2)
79
80
    if state == "R":
81
        motor1.set(85)
82
        motor2.set(15)
83
        motor3.set(85)
84
        motor4.set(15)
85
        time.sleep(0.2)
86
87
    if state == "S":
88
        motor1.set(0)
89
        motor2.set(0)
90
        motor3.set(0)
91
        motor4.set(0)
92
        time.sleep(0.2)
93
94
    if state == "REV":
95
        motor1.set(-75)
96
        motor2.set(-75)
97
        motor3.set(-75)
98
        motor4.set(-75)
99
        time.sleep(0.2)
100
101
    if state == "REV_L":
102
        motor1.set(-75)
103
        motor2.set(-25)
104
        motor3.set(-75)
105
        motor4.set(-25)
106
        time.sleep(0.2)
107
108
    if state == "REV_R":
109
        motor1.set(-25)
110
        motor2.set(-75)
111
        motor3.set(-25)
112
        motor4.set(-75)
113
        time.sleep(0.2)
114
115
    if state == "SPIN_LEFT":
116
        motor1.set(100)
117
        motor2.set(-100)
118
        motor3.set(100)
119
        motor4.set(-100)
120
        time.sleep(0.2)
121
122
    if state == "SPIN_RIGHT":
123
        motor1.set(-100)
124
        motor2.set(100)
125
        motor3.set(-100)
126
        motor4.set(100)
127
        time.sleep(0.2)
128
129
    template_data = {
130
        "title" : state,
131
    }
132
    return render_template("Boot.html", **template_data)
133
134
if __name__ == "__main__":
135
    app.run(host="0.0.0.0", port=5000, debug=False)