注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

不懂风情,承蒙错爱。

Making love to Raspberry Pi

 
 
 

日志

 
 
关于我

我爱如莲的少男少女,他们笑容纯真,不说假话。

网易考拉推荐

Raspberry PI上操作GPIO(GPIO编程)  

2013-04-24 12:02:12|  分类: 嵌入式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Raspberry PI上编程操作GPIO

(1) 安装环境
a.下载控制GPIO的python库:http://pypi.python.org/pypi/RPi.GPIO/0.3.1a#downloads
b. 在Pi上安装python-dev: sudo apt-get install python-dev
c. 解压并安装python库

          tar xvzf RPi.GPIO-0.x.xx.tar.gz

          cd RPi.GPIO-0.x.xx

          sudo python setup.py install
 (2)测试程序

    说明:led灯闪烁(分别接pi-01 和pi-11,11作为输出)

import RPi.GPIO as GPIO
import time
 
def blink(times, delay):
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(11, GPIO.OUT)
 
    while times>0:
        if 0==times%2:
            GPIO.output(11, GPIO.HIGH) #or output(11, GPIO.True)
        else:
            GPIO.output(11, GPIO.LOW)
        time.sleep(delay)
        times-=1
    return
 
 
if __name__ == '__main__':
    blink(20, 1)

  (3)测试程序2——远程点亮/关闭相应的led灯

  说明:和上个例子不同的就是a)用到了远程控制,即socket通信;b)操作多个led;
  究其本质是一样。当然本人之所以要远程控制,只不过是为了以后远程管理更多的外设做个铺垫。
  
文件1:remoIO.py

import socket
import time
g_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def init(ip, port):
    g_sock.connect((ip, port))
    time.sleep(2)
    return

def send(data):
    g_sock.send(data)
    return

def read():
    data = g_sock.recv(1024)
    return data

def end():
    g_sock.close()
    return

def _test(ip, port):
    sock = init(ip, port)
    send("I am Raspberry Pi\r\n!");
    print read(1024);
    sock.close()
    return

if __name__=='__main__':
    #_test('192.168.2.1', 9999)
    import sys
    if len(sys.argv) == 3:
        _test(sys.argv[1], int(sys.argv[2]))
    else:
        print 'usage:'+sys.argv[0]+' ip  port\r\n'
文件2:blink.py

import RPi.GPIO as GPIO
import time
import remoIO
 
 
ip = '192.168.2.12'
port = 8888
def blink(times, delay):
 
    R=11
    Y=12
    W=15
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(R, GPIO.OUT)
    GPIO.setup(Y, GPIO.OUT)
    GPIO.setup(W, GPIO.OUT)
 
    remoIO.init(ip, port)
    remoIO.send('Now, you can input 1,2 or 3 to turnon  the right led:')
    #in order to initial a communication protocol, add code here
    #....
    command = ''
    while 1:
        command = remoIO.read()
        if command=='1\n':
            GPIO.output(R, GPIO.LOW)
            time.sleep(2)
            GPIO.output(R, GPIO.HIGH)
            remoIO.send('ok for 1\t')
        elif command=='2\n':
            GPIO.output(Y, GPIO.LOW)
            time.sleep(2)
            GPIO.output(Y, GPIO.HIGH)
            remoIO.send('ok for 2\t')
        elif command=='3\n':
            GPIO.output(W, GPIO.LOW)
            time.sleep(2)
            GPIO.output(W, GPIO.HIGH)
            remoIO.send('ok or 3\t')
        elif command=='quit\n':
            remoIO.send('end remote control!\r\n')
            remoIO.end()
            break
        else:
            remoIO.send('eroor input!\r\n')
 
    while times>0:
        if 0==times%2:
            GPIO.output(R, GPIO.HIGH) #or output(R, GPIO.True)
        else:
            GPIO.output(R, GPIO.LOW)
        time.sleep(delay)
        times-=1
    return
 
 
if __name__ == '__main__':
    blink(10, 0.5)

  评论这张
 
阅读(1863)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017