4137浏览
查看: 4137|回复: 3

树莓派之sense hat初体验

[复制链接]
      Sense Hat是Raspberry Pi的附加板,它有一块8x8的led阵列,以RGB的模式显示字符,所以可以把它视为一个彩色像素屏。此外它还带有一个五个按钮的操纵杆,同时携带6个传感器,分别是陀螺仪传感器、加速度传感器、磁传感器、温度传感器、气压传感器、湿度传感器。使用时直接插到树莓派的针脚阵列上即可使用,十分方便。      2020年3月16日,在杭州电子科技大学余善恩教授的带领下,以图形化积木式编程和PYthon两种方式对Sense Hat进行了学习。
一、Sense Hat硬件及在古德微树莓派平台积木编程环境下包涵的指令:树莓派之sense hat初体验图3树莓派之sense hat初体验图2树莓派之sense hat初体验图1
  二、以计数仪数值确定树莓派及Sense Hat平衡状态
1、案例效果:

2、PYthon程序:
global i
i = 0
global accY
accY = 0
global accX
accX = 0


self.robot_get_sense_hat_obj().sense.clear()
self.robot_get_sense_hat_obj().set_imu_config(False,False,True)
while True:
  accX = self.robot_get_sense_hat_obj().get_accelerometer_x()
  accY = self.robot_get_sense_hat_obj().get_accelerometer_y()
  if accX > 0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(0)
    self.robot_get_sense_hat_obj().sense.show_letter('>',([50,0,0]))
  elif accX < -0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(0)
    self.robot_get_sense_hat_obj().sense.show_letter('<',([0,50,0]))
  elif accY > 0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(90)
    self.robot_get_sense_hat_obj().sense.show_letter('>',([0,0,50]))
  elif accY < -0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(90)
    self.robot_get_sense_hat_obj().sense.show_letter('<',([50,50,0]))
  else:

   self.robot_get_sense_hat_obj().sense.show_letter('+',([50,50,0]))
3、图形化编程:
树莓派之sense hat初体验图6树莓派之sense hat初体验图7

三、出现问题
1、利用Thonny Python IDE进行语句编程,效果运行正常;
树莓派之sense hat初体验图8
2、在古德微编程平台中利用图形化编程,却出现”箭头“滚动”的效果:

我知道,如果语句实现了,那么一点是我在图形化积木式编程过程中哪里弄错了,哪里错的呢?周建忠老师提示我“一屏显示不下”,经过一晚反思,我知道自已错在了哪里:箭头显示用的是显示“字符”,而我一时大意,用到的是显示“字符串”——失之毫厘,谬以千里。
树莓派之sense hat初体验图5树莓派之sense hat初体验图4
四、授之以鱼,不若授之以渔
1、学习方法:
      因为不懂英语,此前对语句编程,特别是PYthon编程,一直是“知道应该学,不愿主动学”,甚至直接屏蔽的状态,在老师讲课过程中,我注意到这样一个问题,就是老师对语句编程及积木式编程的转换非常快,老师是怎么的呢?看老师的操作,应当就在古德微树莓派的编程平台上,认真一找,发现就在指令模块的上方,赫然显示着“积木”,如若单击,则出现“代码”状态,而我因为一直排斥,竟然渐渐忘记平台编程环境的转换功能。如此一来,通过对照方法,代码编程学习起来就变得简单多了。知道了方法,我就借助添加注释的方法,将代码与积木一一对应起来,鼠标悬浮还会出现指令功能的文字说明!
树莓派之sense hat初体验图11树莓派之sense hat初体验图10树莓派之sense hat初体验图9
2、优化程序
     由于SenseHat是8*8=64点阵,“→”中的“竖”不能处在中间位置,而中国文化观念中讲求“对称美”,为了让程序更符合自已心意,我决定自己“画”箭头。
    (1)积木设计“箭头”
树莓派之sense hat初体验图12
    (2)代码设计“箭头”
global i
i = 0
global j
j = 0
global accY
accY = 0
global accX
accX = 0
##
"""“向上箭头,方向为90度.
"""
def shang():
  global i, j, accY, accX
  self.robot_get_sense_hat_obj().sense.set_rotation(90)
  self.robot_get_sense_hat_obj().sense.clear()
  # 制作“”箭头“的”竖“
  for i in range(8):
    for j in range(3, 5):
      self.robot_get_sense_hat_obj().sense.set_pixel(j,i,([0,50,0]))
      if(self.stopFlag):
        break
    if(self.stopFlag):
      break
  # 制作”箭头“的一侧斜线
  for i in range(4):
    for j in range(3, 5):
      self.robot_get_sense_hat_obj().sense.set_pixel((j + i),i,([0,50,0]))
      if(self.stopFlag):
        break
    if(self.stopFlag):
      break
  # 制作“箭头”另一侧斜线
  for i in range(4):
    for j in range(3, 5):
      self.robot_get_sense_hat_obj().sense.set_pixel((j - i),i,([0,50,0]))
      if(self.stopFlag):
        break
    if(self.stopFlag):
      break

(3)效果

       今天的学习给了我学习代码的更大的信心,同时也给自已一个内心的关照:此前郎老师、花老师、周老师等诸位老师的课程均有代码与积木对照讲解的方式,自已却没有领悟怎样做到了,今天能够领悟到,完全是基于解决问题才做到了,看来,不怕慢,不怕一时学不会,只要坚持,总有开窍的时候!周丽,加油!


指令图解:获取加速计X轴位置.png
指令图解:获取当前指南针角度.png

DFrJ5KYVQaH  中级技匠

发表于 2020-3-17 13:56:44

认真努力,值得学习
回复

使用道具 举报

shijinxianzhe  高级技匠
 楼主|

发表于 2020-3-22 06:23:09

谢谢您的认可!我会继续加油!
回复

使用道具 举报

rzegkly  版主

发表于 2020-3-23 11:07:49

  Sense HAT创意好
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail