创客社区

 找回密码
 立即注册
搜索
查看: 262|回复: 8

树莓派“瑞士军刀”扩展板 LED排灯问题

[复制链接]

1

主题

5

帖子

19

积分

积分
19
发表于 2018-11-20 19:42:50 | 显示全部楼层 |阅读模式
系统: Raspbain
语言: python3.5
SDK: SAKS-SDK(已经修改对应的包)

问题: LED 排灯打开后不能关闭。换为python2.7(SDK原文件下用2.7)也同样。改用GPIO编程时提示IO口已被占用(重启后不用SDK时,同样提示)。
求帮助!!!!~

100

主题

385

帖子

1986

积分

积分
1986
发表于 2018-11-20 23:12:18 | 显示全部楼层
GPIO编程时提示IO口已被占用这个是警告,可以忽略,也可以通过设置警告屏蔽关闭,并非程序问题。

请贴出你的代码看看。
SDK里面有代码示例,在没有修改的情况下是否可以正常运行呢?

另外你的SAKS是哪个版本?板子后面的年份和版本号能否提供一下?SAKS-SDK的版本又是哪个版本?V1.X还是V2.0?

1

主题

5

帖子

19

积分

积分
19
 楼主| 发表于 2018-11-21 09:49:52 | 显示全部楼层
SAKS板子 V2.1 Jul 2017

程序代码通过 git 下载。
对于python3.5环境只修改过导入的包 把 commands 修改成为 subprocess,其余的未做修改。
对于python2.7环境py文件未做任何修改。

同时,在关机后重启动后,在不使用SDK的情况下使用python3.5 + GPIO对DS SHCP STCP操作(按 树莓派 SAKS 扩展板上手把玩 之 绚丽的流水灯 http://shumeipai.nxez.com/saks-diy-tutorials-water-lights)。LED排灯只亮不灭。代码如下:
  1. import RPi.GPIO as GPIO
  2. import time
  3.   
  4. GPIO.setmode(GPIO.BCM)
  5.   
  6. DS = 6
  7. SHCP = 19
  8. STCP = 13
  9.   
  10. def init():
  11.     GPIO.setup(DS, GPIO.OUT)
  12.     GPIO.setup(SHCP, GPIO.OUT)
  13.     GPIO.setup(STCP, GPIO.OUT)
  14.   
  15.     GPIO.output(DS, GPIO.LOW)
  16.     GPIO.output(SHCP, GPIO.LOW)
  17.     GPIO.output(STCP, GPIO.LOW)
  18.   
  19. def writeBit(data):
  20.     GPIO.output(DS, data)
  21.   
  22.     GPIO.output(SHCP, GPIO.LOW)
  23.     GPIO.output(SHCP, GPIO.HIGH)
  24.   
  25. #写入8位LED的状态
  26. def writeByte(data):
  27.     for i in range (0, 8):
  28.         writeBit((data >> i) & 0x01)
  29.     #状态刷新信号
  30.     GPIO.output(STCP, GPIO.LOW)
  31.     GPIO.output(STCP, GPIO.HIGH)
  32.   
  33. try:
  34.     init()
  35.     while True:
  36.         #以下一组8个编码由一组二进制转换而成:
  37.         #00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000
  38.         #分别对应8个LED点亮状态
  39.         for i in [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80]:
  40.             writeByte(i)
  41.             time.sleep(1)
  42.             writeByte(0x00)       # 此处为增加关闭灯, 原代码无
  43.         #LED组全开
  44.         #writeByte(0xff)
  45.         #time.sleep(0.1)
  46.         

  47. except KeyboardInterrupt:
  48.     print("except")# 原来此处为 print "except"
  49.     #LED组全关
  50.     writeByte(0x00)
  51.     GPIO.cleanup()
复制代码

1

主题

5

帖子

19

积分

积分
19
 楼主| 发表于 2018-11-21 10:29:24 | 显示全部楼层
本帖最后由 22886100 于 2018-11-21 12:49 编辑

依照SDK提供的方法,自己写的关灯和关数位程序,仅数位关闭成功,LED灯还是没有被关闭
  1. from sakshat import SAKSHAT
  2. import time
  3. import subprocess

  4. #Declare the SAKS Board
  5. SAKS = SAKSHAT()

  6. if __name__ == "__main__":
  7.     SAKS.ledrow.off()
  8.     SAKS.digital_display.off()
复制代码

100

主题

385

帖子

1986

积分

积分
1986
发表于 2018-11-21 21:11:55 | 显示全部楼层
附件是一份出厂检测代码。除非是对python3语法不兼容,不要修改和添加任何程序逻辑。(更建议在python2.7下运行,这样和出厂检测环境一致)
运行之后,轻触SAKS上的RK轻触按钮。预期效果是LED从左到右依次点亮并熄灭。
烦请测试下,如果有问题请将结果告知本店淘宝客服,了解是否在换货政策期限内以便提供售后服务。谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1

主题

5

帖子

19

积分

积分
19
 楼主| 发表于 2018-11-22 16:43:12 | 显示全部楼层
@Spoony 谢谢! 你给我的检测程序我测试过了,使用python2.7 正常,我主要看了下程序,还是python3.5的兼容问题,这个我可以自己做下更改。十分谢谢!  

100

主题

385

帖子

1986

积分

积分
1986
发表于 2018-11-22 19:10:01 | 显示全部楼层
22886100 发表于 2018-11-22 16:43
@Spoony 谢谢! 你给我的检测程序我测试过了,使用python2.7 正常,我主要看了下程序,还是python3.5的兼容 ...

多谢反馈。
如可以修改完善兼容python3.5,欢迎反馈给我们。

1

主题

5

帖子

19

积分

积分
19
 楼主| 发表于 2018-11-22 22:18:03 | 显示全部楼层
目前并没有发现其他控制器有问题,仅仅是entities下led.py这个文件对3.5不兼容,所以我一直没有关掉过LED排灯。
这个文件修改后,便可在3.5下对LED排灯正常控制。
将 113行 和 118行 中的 xrange 改为 range 就可以在python3.5下正常对排灯操作了。

100

主题

385

帖子

1986

积分

积分
1986
发表于 2018-11-23 09:53:28 | 显示全部楼层
22886100 发表于 2018-11-22 22:18
目前并没有发现其他控制器有问题,仅仅是entities下led.py这个文件对3.5不兼容,所以我一直没有关掉过LED排 ...

好的。我们回头测试好了更新源码,多谢指教。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|NXEZ 创客社区  

GMT+8, 2019-4-26 11:59 , Processed in 0.048478 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表