欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
python 智能小車源碼
[打印本頁]
作者:
的為、ff
時間:
2018-11-13 14:43
標題:
python 智能小車源碼
#coding:utf-8 #設置中文編碼
import
RPi.GPIO
as
GPIO
#導入樹莓派GPIO模塊
import
sys,time
#導入時間模塊
from
threading
import
*
#導入thread模塊所有函數
dc
=
0
#速度
mmd
=
'r'
#上一次的行駛狀態
num
=
1
#尋跡狀態標志
thread_num
=
0
#尋跡線程個數
thread_bi
=
0
#避障線程個數
num_bi
=
1
#避障狀態標志
#定義控制馬達的兩個引腳
m1
=
23
m2
=
22
m3
=
24
m4
=
27
m5
=
19
m6
=
13
m7
=
20
m8
=
16
GPIO.setwarnings(
False
)
#設置屏蔽警告信息
GPIO.setmode(GPIO.BCM)
#設置引腳為BCM編碼模式
GPIO.setup(m1,GPIO.OUT)
#設置m1方向為輸出
GPIO.setup(m2,GPIO.OUT)
#設置m2方向為輸出
GPIO.setup(m3,GPIO.OUT)
GPIO.setup(m4,GPIO.OUT)
GPIO.setup(m5,GPIO.OUT)
GPIO.setup(m6,GPIO.OUT)
GPIO.setup(m7,GPIO.OUT)
GPIO.setup(m8,GPIO.OUT)
'''
#定義燈的引腳
g1 = 5
g2 = 6
g3 = 21
g4 = 12
#左邊
GPIO.setup(g1,GPIO.OUT) #紅色
GPIO.setup(g2,GPIO.OUT) #綠色
#右邊
GPIO.setup(g3,GPIO.OUT) #紅色
GPIO.setup(g4,GPIO.OUT) #綠色
'''
#定義尋跡引腳
LineR
=
26
LineL
=
17
LineM1
=
25
LineM2
=
18
GPIO.setup(LineR,GPIO.IN,GPIO.PUD_UP)
#設置引腳為輸入
GPIO.setup(LineL,GPIO.IN,GPIO.PUD_UP)
#設置引腳為輸入
GPIO.setup(LineM1,GPIO.IN,GPIO.PUD_UP)
#設置引腳為輸入
GPIO.setup(LineM2,GPIO.IN,GPIO.PUD_UP)
#設置引腳為輸入
#加減速
PW1
=
GPIO.PWM(m1,
500
)
#設置PWM脈沖頻率
PW2
=
GPIO.PWM(m2,
500
)
PW3
=
GPIO.PWM(m3,
500
)
PW4
=
GPIO.PWM(m4,
500
)
PW5
=
GPIO.PWM(m5,
500
)
PW6
=
GPIO.PWM(m6,
500
)
PW7
=
GPIO.PWM(m7,
500
)
PW8
=
GPIO.PWM(m8,
500
)
PW1.start(
0
)
PW2.start(
0
)
PW3.start(
0
)
PW4.start(
0
)
PW5.start(
0
)
PW6.start(
0
)
PW7.start(
0
)
PW8.start(
0
)
PW1.ChangeDutyCycle(dc)
#設置PW1停止
PW2.ChangeDutyCycle(dc)
PW3.ChangeDutyCycle(dc)
PW4.ChangeDutyCycle(dc)
PW5.ChangeDutyCycle(dc)
PW6.ChangeDutyCycle(dc)
PW7.ChangeDutyCycle(dc)
PW8.ChangeDutyCycle(dc)
def
thread_xunji
():
#子線程實現函數
sum
=
0
global
num
#聲明全局變量
global
thread_num
#聲明全局變量
while
num:
if
(GPIO.input(LineL)
==
0
and
GPIO.input(LineR)
==
0
and
GPIO.input(LineM1)
==
0
and
GPIO.input(LineM2)
==
0
):
sum
=
sum
+
1
print
"地板"
if
(
sum
>
100
):
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
elif
(GPIO.input(LineL)
==
1
and
GPIO.input(LineR)
==
1
and
GPIO.input(LineM1)
==
1
and
GPIO.input(LineM2)
==
1
):
print
"懸空"
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#左邊碰到黑帶左轉
elif
(GPIO.input(LineL)
==
1
and
GPIO.input(LineR)
==
0
and
GPIO.input(LineM1)
==
0
and
GPIO.input(LineM2)
==
0
):
print
"左轉"
sum
=
0
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
60
)
PW7.ChangeDutyCycle(
60
)
elif
(GPIO.input(LineL)
==
0
and
GPIO.input(LineR)
==
1
and
GPIO.input(LineM1)
==
0
and
GPIO.input(LineM2)
==
0
):
print
"右轉"
sum
=
0
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
PW1.ChangeDutyCycle(
60
)
PW5.ChangeDutyCycle(
60
)
elif
(GPIO.input(LineL)
==
0
and
GPIO.input(LineR)
==
0
and
GPIO.input(LineM1)
==
1
or
GPIO.input(LineM2)
==
1
):
print
"前進"
sum
=
0
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#前進全綠
PW1.ChangeDutyCycle(
60
)
#加速
PW3.ChangeDutyCycle(
60
)
#加速
PW5.ChangeDutyCycle(
60
)
#加速
PW7.ChangeDutyCycle(
60
)
#加速
time.sleep(
0.01
)
print
"children I daied!"
num
=
1
thread_num
=
0
print
'thread_num = '
,thread_num
from
socket
import
*
#導入模塊中所有函數,可以直接使用函數名,不需要帶模塊名
#第一步:創建套接字
server
=
socket()
#創建一個套接字 TCP,IPV4
print
server
#第二步:綁定IP地址和端口號
server.bind((
'172.27.35.3'
,
9996
))
#綁定本地IP地址,端口號為8989
#第三步:監聽
server.listen(
5
)
#監聽客戶端鏈接,隊列長度為5
#第四步:接收客戶端鏈接
try
:
#捕捉while中是否有ctrl + C按下
while
1
:
print
'accept...'
client,addr
=
server.accept()
#接受鏈接到服務器的客戶端,得到客戶端元組
print
client,addr
client.send(
'welcome...'
)
while
1
:
cmd
=
client.recv(
100
)
#從客戶端接收100個數據存放到服務器buff
print
'客戶端發來消息:'
,cmd
print
"正在運行"
#前進
if
cmd
==
'w'
:
print
"mmd = "
,mmd
if
mmd
==
'w'
:
#維持現狀
pass
elif
mmd
==
'r'
:
#設置PW腳脈沖為0
PW2.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#dc = 60
#啟動時60碼
for
dc
in
range
(
0
,
100
,
50
):
PW1.ChangeDutyCycle(dc)
#加速
PW3.ChangeDutyCycle(dc)
#加速
PW5.ChangeDutyCycle(dc)
#加速
PW7.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
elif
mmd
==
's'
:
#先減速
#設置PW腳脈沖為0
PW1.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
for
ac
in
range
(dc,
0
,
-
50
):
PW2.ChangeDutyCycle(ac)
#減速
PW4.ChangeDutyCycle(ac)
#減速
PW6.ChangeDutyCycle(ac)
#減速
PW8.ChangeDutyCycle(ac)
#減速
time.sleep(
1
)
#再加速
#設置PW腳脈沖為0
PW2.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#dc = 60
#啟動時60碼
for
dc
in
range
(
0
,
100
,
50
):
PW1.ChangeDutyCycle(dc)
#加速
PW3.ChangeDutyCycle(dc)
#加速
PW5.ChangeDutyCycle(dc)
#加速
PW7.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
else
:
#先暫停
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#設置PW腳脈沖為0
PW2.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#dc = 60
#啟動時60碼
for
dc
in
range
(
0
,
100
,
50
):
PW1.ChangeDutyCycle(dc)
#加速
PW3.ChangeDutyCycle(dc)
#加速
PW5.ChangeDutyCycle(dc)
#加速
PW7.ChangeDutyCycle(dc)
#加速
time.sleep(
0.5
)
#記錄狀態
mmd
=
'w'
#后退
elif
cmd
==
's'
:
print
"mmd = "
,mmd
if
mmd
==
's'
:
#維持現狀
pass
elif
mmd
==
'w'
:
#先減速
#設置PW腳脈沖為0
PW2.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
for
ac
in
range
(dc,
0
,
-
50
):
PW1.ChangeDutyCycle(ac)
#減速
PW3.ChangeDutyCycle(ac)
#減速
PW5.ChangeDutyCycle(ac)
#減速
PW7.ChangeDutyCycle(ac)
#減速
time.sleep(
1
)
#再加速
#設置PW腳脈沖為0
PW1.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
#dc = 60
#啟動時60碼
for
dc
in
range
(
0
,
100
,
50
):
PW2.ChangeDutyCycle(dc)
#加速
PW4.ChangeDutyCycle(dc)
#加速
PW6.ChangeDutyCycle(dc)
#加速
PW8.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
elif
mmd
==
'r'
:
#加速
#設置PW腳脈沖為0
PW1.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
#啟動時60碼
for
dc
in
range
(
0
,
100
,
50
):
PW2.ChangeDutyCycle(dc)
#加速
PW4.ChangeDutyCycle(dc)
#加速
PW6.ChangeDutyCycle(dc)
#加速
PW8.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
else
:
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#加速
#設置PW腳脈沖為0
PW1.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
#dc = 60
#啟動時60碼
for
dc
in
range
(
0
,
100
,
50
):
PW2.ChangeDutyCycle(dc)
#加速
PW4.ChangeDutyCycle(dc)
#加速
PW6.ChangeDutyCycle(dc)
#加速
PW8.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
#記錄狀態:后退
mmd
=
's'
#停止
elif
cmd
==
'r'
:
mmd
=
'r'
num
=
0
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#右轉
elif
cmd
==
'e'
:
print
"mmd = "
,mmd
if
mmd
==
'w'
:
mmd
=
'd'
#前進右轉右綠
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
elif
mmd
==
's'
:
mmd
=
'c'
#后退右轉右紅
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
elif
mmd
==
'r'
:
mmd
=
'd'
#停車右轉右綠
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
for
dc
in
range
(
0
,
100
,
50
):
PW1.ChangeDutyCycle(dc)
#加速
PW5.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
elif
mmd
==
'd'
:
pass
elif
mmd
==
'c'
:
pass
elif
mmd
==
'a'
:
mmd
=
'd'
#停止
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#前進右轉右綠
for
dc
in
range
(
0
,
100
,
50
):
PW1.ChangeDutyCycle(dc)
#加速
PW5.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
elif
mmd
==
'z'
:
mmd
=
'c'
#停止
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#后退右轉右紅
for
dc
in
range
(
0
,
100
,
50
):
PW4.ChangeDutyCycle(dc)
#加速
PW8.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
#左轉
elif
cmd
==
'q'
:
print
"mmd = "
,mmd
if
mmd
==
'w'
:
mmd
=
'a'
#前進左轉左綠
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
elif
mmd
==
's'
:
mmd
=
'z'
#后退左轉左紅
PW1.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
elif
mmd
==
'r'
:
mmd
=
'a'
#前進左轉左綠
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
for
dc
in
range
(
0
,
100
,
50
):
PW3.ChangeDutyCycle(dc)
#加速
PW7.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
elif
mmd
==
'a'
:
pass
elif
mmd
==
'z'
:
pass
elif
mmd
==
'd'
:
mmd
=
'a'
#停止
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#前進左轉左綠
for
dc
in
range
(
0
,
100
,
50
):
PW3.ChangeDutyCycle(dc)
#加速
PW7.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
elif
mmd
==
'c'
:
mmd
=
'z'
#停止
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
#后退左轉左紅
for
dc
in
range
(
0
,
100
,
50
):
PW2.ChangeDutyCycle(dc)
#加速
PW6.ChangeDutyCycle(dc)
#加速
time.sleep(
1
)
#尋跡
elif
cmd
==
'xun'
:
print
"xun"
if
(thread_num
==
0
):
t
=
Thread(
target
=
thread_xunji)
t.start()
thread_num
=
1
else
:
print
"thread"
client.send(
'Thread is working...'
)
#t.join()
#避障
elif
cmd
==
'bi'
:
print
"bi"
if
(thread_bi
==
0
):
t
=
Thread(
target
=
thread_bizhang)
t.start()
thread_bi
=
1
else
:
num_bi
=
0
elif
cmd
==
'end'
:
break
client.close()
#關閉對應客戶端
#捕捉到ctrl + c后停止電機
except
KeyboardInterrupt
:
PW1.ChangeDutyCycle(
0
)
PW2.ChangeDutyCycle(
0
)
PW3.ChangeDutyCycle(
0
)
PW4.ChangeDutyCycle(
0
)
PW5.ChangeDutyCycle(
0
)
PW6.ChangeDutyCycle(
0
)
PW7.ChangeDutyCycle(
0
)
PW8.ChangeDutyCycle(
0
)
作者:
roottan
時間:
2018-11-18 02:27
喜歡,我機會我也搞臺來試試
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1