-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
153 lines (150 loc) · 4.23 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
from flask import Flask, render_template, Response, request
from Raspi_PWM_Servo_Driver import PWM
from camera import VideoCamera
from hatmotor import hatmotor
import json
import subprocess
import time
import sys
pi_camera = VideoCamera(flip=False)
servoMin = 192 # Min pulse length out of 4096
servo45 = 225
servoMid = 400
servo135 = 535
servoMax = 641
servoHorizontalAngle = 400
servoVerticalAngle = 400
robby = hatmotor(0x6f, 1, 2)
pwm = PWM(0x6F)
pwm.setPWMFreq(60)
pwm.setPWM(0, 0, servoMid)
pwm.setPWM(1, 0, servoMid)
pwm.setPWM(14, 0, servoMid)
pwm.setPWM(15, 0, servoMid)
ma = 400
moving=None
def motorforward():
if moving!="forward":
robby.forward(200)
def motorbackward():
if moving !="backward":
robby.backward(200)
def motorleft():
global ma
if ma==400:
pwm.setPWM(0, 0, servo135)
pwm.setPWM(1, 0, servo135)
ma=535
def motorright():
global ma
if ma==400:
pwm.setPWM(0, 0, servo45)
pwm.setPWM(1, 0, servo45)
ma = 225
def motorreset():
global ma
pwm.setPWM(0, 0, servoMid)
pwm.setPWM(1, 0, servoMid)
ma=400
def dcmotorreset():
robby.stop()
moving=None
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/Index.js')
def Index():
return render_template("Index.js")
@app.route('/button', methods=["POST"])
def button():
global data
global servoHorizontalAngle
global result
data=json.loads(request.get_data())
if "direction" in data.keys():
if data['direction']=='forward':
motorforward()
elif data['direction']=='backward':
motorbackward()
elif data['direction']=='stopped':
dcmotorreset()
if "steering" in data.keys():
if data['steering']=='left':
motorleft()
elif data['steering']=='right':
motorright()
elif data['steering']=='straight':
motorreset()
return " "
@app.route('/cameraHorizontal', methods=["POST"])
def cameraHorizontal():
global data
global servoHorizontalAngle
global result
data=json.loads(request.get_data())
while data['CameraHorizontal']=='Left':
servoHorizontalAngle+=1
if servoHorizontalAngle>servoMax:
servoHorizontalAngle=servoMax+1
pwm.setPWM(14, 0, servoHorizontalAngle)
time.sleep(0.0001)
while data['CameraHorizontal']=='Right':
servoHorizontalAngle-=1
if servoHorizontalAngle<servoMin:
servoHorizontalAngle=servoMin+1
pwm.setPWM(14, 0, servoHorizontalAngle)
time.sleep(0.0001)
return" "
@app.route('/cameraVertical', methods=["POST"])
def cameraVertical():
global data
global servoVerticalAngle
global result
data=json.loads(request.get_data())
while data['CameraVertical']=='Up':
servoVerticalAngle+=1
if servoVerticalAngle>servoMax-108:
servoVerticalAngle=servoMax-108
pwm.setPWM(15, 0, servoVerticalAngle)
time.sleep(0.0001)
while data['CameraVertical']=='Down':
servoVerticalAngle-=1
if servoVerticalAngle<servoMin:
servoVerticalAngle=servoMin+1
pwm.setPWM(15, 0, servoVerticalAngle)
time.sleep(0.0001)
return" "
@app.route("/cameraReset", methods=["POST"])
def cameraReset():
global data
global servoHorizontalAngle
global servoVerticalAngle
global result
servoHorizontalAngle=servoMid
servoVerticalAngle=servoMid
pwm.setPWM(14, 0, servoMid)
pwm.setPWM(15, 0, servoMid)
return " "
def gen(camera):
"""generate camera frame"""
while True:
frame = camera.get_frame()
yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(pi_camera), mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route("/datentime")
def datentime():
return render_template("datentime.html")
@app.errorhandler(404)
def page_not_found(a):
return render_template('404.html')
@app.errorhandler(500)
def server_error(a):
return render_template("500.html")
@app.errorhandler(405)
def not_allowed(a):
return render_template("405.html")
if __name__=="__main__":
app.run(host="10.0.0.78")