« python i2c sample code 4 RPi | トップページ | python i2c sample code 4 RPi ver.3 »

2017年1月14日 (土)

python i2c sample code 4 RPi ver.2

python  i2c sample code 4  RPi  改定版です。

============================================
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
import smbus    # sudo apt-get install python-smbus
import time
import os
import sys
import argparse
 
class i2cLPC1114:
    i2c = smbus.SMBus(1)    #  B, B+ 512MB ...2B,3B,Zero
#    i2c = smbus.SMBus(0)    #  B 256MB
    addr = 0x28
    def __init__(self):
        pass
    def led_off(self):
        self.i2c.write_i2c_block_data(self.addr, 0x20, [0x00, 0x00])   
    def led_on(self):
        self.i2c.write_i2c_block_data(self.addr, 0x20, [0x00, 0x01])   
    def led_flash(self):
        self.i2c.write_i2c_block_data(self.addr, 0x20, [0x00, 0x02])   
    def down(self, time):
        st=(time-60)/60
        os.system("/sbin/shutdown -h " "+" + str(st) )
 
        lt=[ord(c) for c in str(time)]
        lt.insert(0,0x00)   
        lt.insert(1,0x10)   
        lt.append(0x00)   
        self.i2c.write_i2c_block_data(self.addr, 0x11, lt)   
    def up(self, time):
        lt=[0x00, 0x10]   
        lt.extend([ord(c) for c in str(time)])
        lt.append(0x00)   
        self.i2c.write_i2c_block_data(self.addr, 0x10, lt)   
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('cmd', choices=('loff','lon','lb','down','up'))       
    parser.add_argument('-t', '--time', type=int, help="Specified units are minutes")
    parser.add_argument('--version', action='version', version='%(prog)s 0.1')
    args = parser.parse_args()
#    print(args)
#    print(args.cmd)
#    print(args.time)
    if args.cmd=="down" or args.cmd=="up":
       if not args.time:
          print "require -t [time(min)]"
          quit();
       else:
          mt=args.time * 60
    if args.cmd=="down":
       if args.time >=2:
          pass
       else:
          print "Please specify more than 2 minutes"
          quit();
    m = i2cLPC1114()
    if args.cmd=="loff":
       m.led_off()
    elif args.cmd=="lon":
       m.led_on()
    elif args.cmd=="lb":
       m.led_flash()
    elif args.cmd=="down":
       m.down(int(mt))
    elif args.cmd=="up":
       m.up(int(mt))
    else:
       pass
=======================================
[使い方]
# ./RPi1114_set2.py -h
usage: RPi1114_set2.py [-h] [-t TIME] [--version] {loff,lon,lb,down,up}
positional arguments:
  {loff,lon,lb,down,up}
optional arguments:
  -h, --help            show this help message and exit
  -t TIME, --time TIME  Specified units are minutes
  --version             show program's version number and exit
[使用例]
2分後に電源断(指定1分前にshutdownを実行)
# ./RPi1114_set2.py down -t 2

|

« python i2c sample code 4 RPi | トップページ | python i2c sample code 4 RPi ver.3 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1224983/69243761

この記事へのトラックバック一覧です: python i2c sample code 4 RPi ver.2:

« python i2c sample code 4 RPi | トップページ | python i2c sample code 4 RPi ver.3 »