shijinxianzhe 发表于 2020-3-17 10:33:16

树莓派之sense hat初体验

      Sense Hat是Raspberry Pi的附加板,它有一块8x8的led阵列,以RGB的模式显示字符,所以可以把它视为一个彩色像素屏。此外它还带有一个五个按钮的操纵杆,同时携带6个传感器,分别是陀螺仪传感器、加速度传感器、磁传感器、温度传感器、气压传感器、湿度传感器。使用时直接插到树莓派的针脚阵列上即可使用,十分方便。      2020年3月16日,在杭州电子科技大学余善恩教授的带领下,以图形化积木式编程和PYthon两种方式对Sense Hat进行了学习。
一、Sense Hat硬件及在古德微树莓派平台积木编程环境下包涵的指令:
二、以计数仪数值确定树莓派及Sense Hat平衡状态
1、案例效果:
https://v.youku.com/v_show/id_XNDU5MTE3NDI2MA==.html?spm=a2hbt.13141534.app.5~5!2~5!2~5~5~5!2~5~5!2~5!2~5!2~5~5!3~A
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('>',())
elif accX < -0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(0)
    self.robot_get_sense_hat_obj().sense.show_letter('<',())
elif accY > 0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(90)
    self.robot_get_sense_hat_obj().sense.show_letter('>',())
elif accY < -0.3:
    self.robot_get_sense_hat_obj().sense.set_rotation(90)
    self.robot_get_sense_hat_obj().sense.show_letter('<',())
else:

   self.robot_get_sense_hat_obj().sense.show_letter('+',())
3、图形化编程:


三、出现问题
1、利用Thonny Python IDE进行语句编程,效果运行正常;

2、在古德微编程平台中利用图形化编程,却出现”箭头“滚动”的效果:
https://v.youku.com/v_show/id_XNDU5MTE4MDA1Ng==.html?spm=a2hbt.13141534.app.5~5!2~5!2~5~5~5!2~5~5!2~5!2~5!2~5~5!2~A
我知道,如果语句实现了,那么一点是我在图形化积木式编程过程中哪里弄错了,哪里错的呢?周建忠老师提示我“一屏显示不下”,经过一晚反思,我知道自已错在了哪里:箭头显示用的是显示“字符”,而我一时大意,用到的是显示“字符串”——失之毫厘,谬以千里。

四、授之以鱼,不若授之以渔
1、学习方法:
      因为不懂英语,此前对语句编程,特别是PYthon编程,一直是“知道应该学,不愿主动学”,甚至直接屏蔽的状态,在老师讲课过程中,我注意到这样一个问题,就是老师对语句编程及积木式编程的转换非常快,老师是怎么的呢?看老师的操作,应当就在古德微树莓派的编程平台上,认真一找,发现就在指令模块的上方,赫然显示着“积木”,如若单击,则出现“代码”状态,而我因为一直排斥,竟然渐渐忘记平台编程环境的转换功能。如此一来,通过对照方法,代码编程学习起来就变得简单多了。知道了方法,我就借助添加注释的方法,将代码与积木一一对应起来,鼠标悬浮还会出现指令功能的文字说明!

2、优化程序
   由于SenseHat是8*8=64点阵,“→”中的“竖”不能处在中间位置,而中国文化观念中讲求“对称美”,为了让程序更符合自已心意,我决定自己“画”箭头。
    (1)积木设计“箭头”

    (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,())
      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,())
      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,())
      if(self.stopFlag):
      break
    if(self.stopFlag):
      break

(3)效果
https://v.youku.com/v_show/id_XNDU5MTE4NTQwMA==.html?spm=a2hbt.13141534.app.5~5!2~5!2~5~5~5!2~5~5!2~5!2~5!2~5~5~A
       今天的学习给了我学习代码的更大的信心,同时也给自已一个内心的关照:此前郎老师、花老师、周老师等诸位老师的课程均有代码与积木对照讲解的方式,自已却没有领悟怎样做到了,今天能够领悟到,完全是基于解决问题才做到了,看来,不怕慢,不怕一时学不会,只要坚持,总有开窍的时候!周丽,加油!


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

认真努力,值得学习

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

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

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

Sense HAT创意好
页: [1]
查看完整版本: 树莓派之sense hat初体验