今天的内容主要是I2C的学习和使用
很多地方不太专业,全凭个人胡乱理解
Python异常处理
老规矩还是先讲了会python
这部分没怎么听,虽然不太记得了但感觉可能用处不大
课上讲了个os和给程序传args比较有用
7位数码管的使用
简介
一开始就只有7段,所以叫7位数码管,后来右下角加了个.
成了8段了,但已经叫习惯了
如何接线
老师课上画的图
用4根两头孔的线连接,2根电源,1根SDA,1根SCL
VCC接5V/3.3V(5V会好一点
GND接地(树莓派上的GND
SDA->SDA1
SCL->SCL1
树莓派引脚
尽量不要使用GPIO14和GPIO15,为什么我也不知道
VCC尽量选5V的
终端使用注意(写代码前先检测下驱动
1 2 3 4 5 6 7
| modprobe i2c-dev modprobe i2c-bcm2835 ls /dev/i2c-1
i2cdetect -y 1
|
控制寄存器和对应设备
24所在行就是下一行设备对应的控制器
1.使用方法就是先向控制寄存器输入写入一些内容,就将其开启(或者关闭,还能控制显示亮度)
具体如下:
2.然后就可以向下面他对应的控制的设备写入内容来控制显示什么内容了
代码
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
| from smbus2 import SMBus import time
inputNumber = 0
def getInputNumber(): global inputNumber inputNumber = int(input("Please input a number: "))
my_table = dict() my_table['0'] = 0x3f my_table['1'] = 0x06 my_table['2'] = 0x5b my_table['3'] = 0x4f my_table['4'] = 0x66 my_table['5'] = 0x6d my_table['6'] = 0x7d my_table['7'] = 0x07 my_table['8'] = 0x7f my_table['9'] = 0x6f
led = SMBus(bus=1)
led.write_byte(0x24, 0x01) led.write_byte(0x25, 0x11) led.write_byte(0x26, 0x21) led.write_byte(0x27, 0x31)
led.write_byte(0x34, my_table['0']) led.write_byte(0x35, my_table['5']) led.write_byte(0x36, my_table['2']) led.write_byte(0x37, my_table['0'])
getInputNumber()
seconds_left = inputNumber while True: min = seconds_left // 60 sec = seconds_left % 60 min_str1 = str(min) min_str2 = min_str1.zfill(2)
sec_str1 = str(sec) sec_str2 = sec_str1.zfill(2)
led.write_byte(0x34, my_table[min_str2[0]]) led.write_byte(0x35, my_table[min_str2[1]]) led.write_byte(0x36, my_table[sec_str2[0]]) led.write_byte(0x37, my_table[sec_str2[1]])
time.sleep(1) seconds_left -= 1
|