我與樹莓派的通信

import RPi.GPIO as GPIO
import time
import sys

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(4,GPIO.OUT)
pwm=GPIO.PWM(2,80)
pwm.start(20)
GPIO.output(3,True)
GPIO.output(4,False)
file=open("/sys/class/thermal/thermal_zone0/temp")
Real_T=float(file.read())/1000
file.close()
Ideal_T=sys.argv[2]
Delta=[0.6]
Kp=sys.argv[1]
Ti=10000
Td=0
Output_PWM=20
# times=0
def All_of_List(a):
    s=0
    for i in range(len(a)):
        s=s+a[i]
    return s

def Real_Temp():
    file=open("/sys/class/thermal/thermal_zone0/temp")
    global Real_T
    Real_T=float(file.read())/1000
    file.close()

def Init(): 
    Real_Temp()
    global Ideal_T
    Ideal_T=33
    global Delta
    Delta=[0]
    global Kp
    Kp=8
    global Ti
    Ti=1
    global Output_PWM
    Output_PWM=20

def update_Output(Time_Gap):
    global Ideal_T
    global Delta
    global Kp
    global Ti
    global Td
    global Output_PWM
    global Real_T
    P=Kp
    I=Time_Gap/Ti
    D=Td/Time_Gap
    Increase=0
    Real_Temp()
    Delta.append(Real_T-Ideal_T)
    # if Delta[-1]>-0.5 and Delta[-1]<0.5:
    Increase=P*(Delta[-1] + I * All_of_List(Delta) + D * (Delta[-1]-Delta[-2]))
    Output_PWM=Output_PWM+Increase
    if Output_PWM>100:
        Output_PWM=100
    elif Output_PWM<20:
        Output_PWM=20

Usage_time=[]
# times=0

def Find_Kp():
    times=0
    while True:
        times=times+1
        # if(times>100):
        # times=0
        # Init()
        Time_Gap=1
        time.sleep(Time_Gap)
        if Delta[-1]<0.2 and Delta[-1]>-0.2 and times>100:
            Usage_time.append(times)
            print times
            break
        update_Output(Time_Gap)
        global Output_PWM
        pwm.ChangeDutyCycle(Output_PWM)
        print "%d:%0.3f "%(times,Real_T)
    pwm.ChangeDutyCycle(5)
    delay=0
    while Real_T<32:
        Real_Temp()
        time.sleep(1)
        delay=delay+1
        print delay
        print Real_T 
    # pwm.ChangeDutyCycle(0)

Find_Kp()
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(4,GPIO.OUT)
pwm=GPIO.PWM(2,80)
pwm.start(20)
GPIO.output(3,True)
GPIO.output(4,False)
file=open("/sys/class/thermal/thermal_zone0/temp")
Real_T=float(file.read())/1000
file.close()
Ideal_T=26
Delta=[0.6]
Kp=8
Ti=10000
Td=0
Output_PWM=20
# times=0

def All_of_List(a[]):
    s=0
    for i in range(len(a)):
        s=s+a[i]
    return s

def Real_Temp():
    file=open("/sys/class/thermal/thermal_zone0/temp")
    global Real_T
    Real_T=float(file.read())/1000
    file.close()

def Init():   
    Real_Temp()
    global Ideal_T
    Ideal_T=33
    global Delta
    Delta=[0]
    global Kp
    Kp=8
    global Ti
    Ti=1
    global Output_PWM
    Output_PWM=20

def update_Output(Time_Gap):
    global Ideal_T
    global Delta
    global Kp
    global Ti
    global Td
    global Output_PWM
    global Real_T
    P=Kp
    I=Time_Gap/Ti
    D=Td/Time_Gap
    Increase=0
    Real_Temp()
    Delta.append(Real_T-Ideal_T)
    # if Delta[-1]>-0.5 and  Delta[-1]<0.5:
    Increase=P*(Delta[-1] + I * All_of_List(Delta) + D * (Delta[-1]-Delta[-2]))
    Output_PWM=Output_PWM+Increase
    if Output_PWM>100:
        Output_PWM=100
    elif Output_PWM<20:
        Output_PWM=20


Usage_time=[]
# times=0

def Find_Kp():
    global Ideal_T
    global Usage_time
    global Delta
    global Kp
    global Ti
    global Td
    global Output_PWM
    global Real_T
    times=0
    while True:
        times=times+1
        # if(times>100):
        #     times=0
        #     Init()
        Time_Gap=1
        time.sleep(Time_Gap)
        if(Delta[-1]<0.2 and Delta[-1]>-0.2)
            Usage_time.append(times)
            break
        update_Output(Time_Gap)
        global Output_PWM
        pwm.ChangeDutyCycle(Output_PWM)
        print "%d:%0.3f "%(times,Real_T)
    time.sleep(30)


x=10
while x>0:
    Find_Kp()
    x=x-1
for i in range(len(Usage_time)):
    print Usage_time[i]

=========

import RPi.GPIO as GPIO  
import time  
   
durt=[1,1,1,1,1,1,1,1,1,1,1,1,1+0.5,0.5,1+1,1,1,1,1,1,1,1,1,1,1,1,1,1+0.5,0.5,1+1,1,1,1,1,1,0.5,0.5,1,1,1,0.5,0.5,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5,0.5,1,1,1,1,1+0.5,0.5,1+1]
tune=[330,330,393,441,
  441,393,330,330,
  294,294,330,330,
  330,330,330,
  330,330,393,441,
  441,393,330,330,
  294,294,330,330,
  330,294,294,
  330,330,330,294,
  330,330,393,330,294,
  330,330,393,330,330,
  294,330,221,-1,
  330,330,393,441,
  441,393,330,393,330,
  294,294,330,330,
  330,294,294]

PIN_NO = 7   
   
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(PIN_NO, GPIO.OUT)  
 
def beep(seconds):  
        GPIO.output(PIN_NO, GPIO.HIGH)  
        time.sleep(seconds)  
        GPIO.output(PIN_NO, GPIO.LOW)  
   
while True:
        for i in range(len(tune)):  
            beep(tune[i]/1000000)  
            time.sleep(durt[i]/2000)  
### dianji ###
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(4,GPIO.OUT)

pwm=GPIO.PWM(2,80)

pwm.start(20)

GPIO.output(3,True)
GPIO.output(4,False)
s=4
while True:
pwm.ChangeDutyCycle(s*5)
s=s+1
if s==21:
s=4
time.sleep(1)
#   pwm.ChangeDutyCycle(20)
time.sleep(2)
####  PID.py####
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(4,GPIO.OUT)
pwm=GPIO.PWM(2,80)
pwm.start(20)
GPIO.output(3,True)
GPIO.output(4,False)
file=open("/sys/class/thermal/thermal_zone0/temp")
Real_T=float(file.read())/1000
file.close()
Ideal_T=24
Delta=[0]
Kp=8
Ti=10000
Td=0
Output_PWM=20
# times=0

def All_of_List(a[]):
    s=0
    for i in range(len(a)):
        s=s+a[i]
    return s

def Real_Temp():
    file=open("/sys/class/thermal/thermal_zone0/temp")
    global Real_T
    Real_T=float(file.read())/1000
    file.close()

def Init():   
    Real_Temp()
    global Ideal_T
    Ideal_T=33
    global Delta
    Delta=[0]
    global Kp
    Kp=8
    global Ti
    Ti=1
    global Output_PWM
    Output_PWM=20

def update_Output(Time_Gap):
    global Ideal_T
    global Delta
    global Kp
    global Ti
    global Td
    global Output_PWM
    global Real_T
    P=Kp
    I=Time_Gap/Ti
    D=Td/Time_Gap
    Increase=0
    Real_Temp()
    Delta.append(Real_T-Ideal_T)
    # if Delta[-1]>-0.5 and  Delta[-1]<0.5:
    Increase=P*(Delta[-1] + I * All_of_List(Delta) + D * (Delta[-1]-Delta[-2]))
    Output_PWM=Output_PWM+Increase
    if Output_PWM>100:
        Output_PWM=100
    elif Output_PWM<20:
        Output_PWM=20



times=0
while True:
    times=times+1
    if(times>100):
        times=0
        Init()
    Time_Gap=1
    time.sleep(Time_Gap)
    if(Delta[-1]<0.5)
        break
    update_Output(Time_Gap)
    global Output_PWM
    pwm.ChangeDutyCycle(Output_PWM)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鞋屈,隨后出現(xiàn)的幾起案子汰现,更是在濱河造成了極大的恐慌,老刑警劉巖掏觉,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異值漫,居然都是意外死亡澳腹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門惭嚣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遵湖,“玉大人,你說我怎么就攤上這事晚吞⊙泳桑” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵槽地,是天一觀的道長迁沫。 經(jīng)常有香客問我,道長捌蚊,這世上最難降的妖魔是什么集畅? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮缅糟,結(jié)果婚禮上挺智,老公的妹妹穿的比我還像新娘。我一直安慰自己窗宦,他們只是感情好赦颇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赴涵,像睡著了一般媒怯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上髓窜,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天扇苞,我揣著相機(jī)與錄音,去河邊找鬼寄纵。 笑死鳖敷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的程拭。 我是一名探鬼主播哄陶,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哺壶!你這毒婦竟也來了屋吨?” 一聲冷哼從身側(cè)響起蜒谤,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎至扰,沒想到半個月后鳍徽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敢课,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年阶祭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片直秆。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡濒募,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出圾结,到底是詐尸還是另有隱情瑰剃,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布筝野,位于F島的核電站晌姚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歇竟。R本人自食惡果不足惜挥唠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望焕议。 院中可真熱鬧宝磨,春花似錦、人聲如沸盅安。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宽堆。三九已至腌紧,卻和暖如春茸习,著一層夾襖步出監(jiān)牢的瞬間畜隶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工号胚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留籽慢,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓猫胁,卻偏偏與公主長得像箱亿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弃秆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容