4137| 3
|
树莓派之sense hat初体验 |
Sense Hat是Raspberry Pi的附加板,它有一块8x8的led阵列,以RGB的模式显示字符,所以可以把它视为一个彩色像素屏。此外它还带有一个五个按钮的操纵杆,同时携带6个传感器,分别是陀螺仪传感器、加速度传感器、磁传感器、温度传感器、气压传感器、湿度传感器。使用时直接插到树莓派的针脚阵列上即可使用,十分方便。 2020年3月16日,在杭州电子科技大学余善恩教授的带领下,以图形化积木式编程和PYthon两种方式对Sense Hat进行了学习。 一、Sense Hat硬件及在古德微树莓派平台积木编程环境下包涵的指令: 二、以计数仪数值确定树莓派及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、图形化编程: 三、出现问题 1、利用Thonny Python IDE进行语句编程,效果运行正常; 2、在古德微编程平台中利用图形化编程,却出现”箭头“滚动”的效果: 我知道,如果语句实现了,那么一点是我在图形化积木式编程过程中哪里弄错了,哪里错的呢?周建忠老师提示我“一屏显示不下”,经过一晚反思,我知道自已错在了哪里:箭头显示用的是显示“字符”,而我一时大意,用到的是显示“字符串”——失之毫厘,谬以千里。 四、授之以鱼,不若授之以渔 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,([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)效果 今天的学习给了我学习代码的更大的信心,同时也给自已一个内心的关照:此前郎老师、花老师、周老师等诸位老师的课程均有代码与积木对照讲解的方式,自已却没有领悟怎样做到了,今天能够领悟到,完全是基于解决问题才做到了,看来,不怕慢,不怕一时学不会,只要坚持,总有开窍的时候!周丽,加油! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed