Play AiPi-S1 With PikaPython Ⅱ 一位数码管

[复制链接]
查看687 | 回复6 | 2023-8-28 23:52:05 | 显示全部楼层 |阅读模式
上一帖中我们用小安派点亮了流水灯,这次我们同样使用小安派,通过画的拓展板引出的IO口,点亮一个一位七段数码管依然是PikaPython

1.png
这种就是我们今天使用的一位数码管。它的内部也是LED,七个显示字段的LED和一个小数点,总共是八个LED
要注意的是数码管有共阴和共阳两种,要注意区分。
2.png
上图是共阴(Common Cathode)数码管,它们的负极都接到了地成为公共端。当我们给某一段一个高电平时,这一段就会点亮。
将每一段的引脚连接到小安派的IO口,就能够控制数码管显示的内容了。我使用的就是共阴数码管。
3.png
这张图是共阳(Common Anode)数码管。它们的正极都接到了电源+5V,当我们给对应段一个低电平(或者接到地)时,这一段LED就会点亮。当给一个高电平时这一段就会熄灭。在后面的编程中它的段码和共阴数码管是反过来的。
看完了原理,来看看怎么接线吧!
4.png
七段数码管有七个控制段的引脚,分别对应a,b,c,d,e,f,g段,还有一个小数点。中间两个公共端接一个到地就可以了。
5.JPG
注意每个段的引脚上要接限流电阻,我接的是510Ω的电阻。千万不能不接,会烧坏的。如果想偷懒的话,在公共端接一个限流电阻也不是不行。
  1. import PikaStdDevice
  2. import time

  3. a = PikaStdDevice.GPIO()
  4. b = PikaStdDevice.GPIO()
  5. c = PikaStdDevice.GPIO()
  6. d = PikaStdDevice.GPIO()
  7. e = PikaStdDevice.GPIO()
  8. f = PikaStdDevice.GPIO()
  9. g = PikaStdDevice.GPIO()
  10. dot = PikaStdDevice.GPIO()

  11. a.setPin('P3')
  12. b.setPin('P23')
  13. c.setPin('P24')
  14. d.setPin('P25')
  15. e.setPin('P26')
  16. f.setPin('P27')
  17. g.setPin('P28')
  18. dot.setPin('P29')

  19. a.setMode('out')
  20. b.setMode('out')
  21. c.setMode('out')
  22. d.setMode('out')
  23. e.setMode('out')
  24. f.setMode('out')
  25. g.setMode('out')
  26. dot.setMode('out')

  27. a.enable()
  28. b.enable()
  29. c.enable()
  30. d.enable()
  31. e.enable()
  32. f.enable()
  33. g.enable()
  34. dot.enable()

  35. number_led = [a, b, c, d, e, f, g, dot]

  36. number_dict = {
  37.     0: "11111100",
  38.     1: "01100000",
  39.     2: "11011010",
  40.     3: "11110010",
  41.     4: "01100110",
  42.     5: "10110110",
  43.     6: "10111110",
  44.     7: "11100000",
  45.     8: "11111110",
  46.     9: "11110110",
  47.     10:"01101110",
  48.     11:"10011110",
  49.     12:"00011100",
  50.     13:"00011100",
  51.     14:"11111100"
  52. }

  53. def show_number(number):
  54.     if number_dict.get(number):
  55.         i = 0
  56.         for bit in number_dict.get(number):
  57.             if bit == "1":
  58.                 number_led[i].high()
  59.             else:
  60.                 number_led[i].low()
  61.             i += 1

  62. while True:
  63.     for i in range (0,15):
  64.         show_number(i)
  65.         time.sleep(0.2)



复制代码
我们给每一段分配一个管脚,设置为输出模式。number_dict这个字典中的就是不同内容对应的段码了。第一位是a,最后一位是小数点。想让哪一段亮,就将那一位置为1,反之置为0。比如数字7,是a,b,c三段点亮,所以它的段码就是11100000。想要显示其他内容也可以通过这种方法编写段码来显示。
最后看看效果吧
Tube.GIF
好啦,到这就结束啦。下一帖我们玩玩四位数码管!

本帖被以下淘专辑推荐:

回复

使用道具 举报

爱笑 | 2023-8-29 08:35:39 | 显示全部楼层
肠粉哥给力~~
用心做好保姆工作
回复 支持 反对

使用道具 举报

Mr.Tail | 2023-8-29 09:05:38 | 显示全部楼层
肠粉哥 可以搞个拟辉光管时钟玩玩吗
回复 支持 反对

使用道具 举报

粉肠 | 2023-8-29 10:15:52 | 显示全部楼层
Mr.Tail 发表于 2023-8-29 09:05
肠粉哥 可以搞个拟辉光管时钟玩玩吗

呀,这是要我从骑自行车直接跃迁到开飞机呀
回复 支持 反对

使用道具 举报

Mr.Tail | 2023-8-29 11:09:56 | 显示全部楼层
粉肠 发表于 2023-8-29 10:15
呀,这是要我从骑自行车直接跃迁到开飞机呀

问题不大,你可以的~
回复 支持 反对

使用道具 举报

iiv | 2023-8-29 19:03:29 | 显示全部楼层
666
回复

使用道具 举报

粉肠 | 2023-8-29 20:56:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则