# gravity_led_matrix **Repository Path**: mad_world/gravity_led_matrix ## Basic Information - **Project Name**: gravity_led_matrix - **Description**: zynq powed gravity_led_matrix - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 22 - **Forks**: 3 - **Created**: 2021-11-04 - **Last Updated**: 2024-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 重力感应的点阵屏 本着和大家分享的原则,将当年的代码放上来,当时也是学习者,写的不好的代码还请见谅。下面我会从原理和diy两个角度给大家分享一下 ## 视频效果 [抖音视频链接(点我)](https://www.douyin.com/video/7026340078075071747?previous_page=app_code_link) ## 原理 1.硬件上是zynq作为控制器,输入是加速度计(mpu9250)作为输入,驱动一个64*64的点阵屏 2.zynq作为赛灵思的一块中低档soc平台,集成了fpga和双核arm,当时正好借这个机会学习一下fpga和cpu配合开发,点阵屏的驱动可以由fpga硬件驱动,传感器的采集和粒子的运动等计算使用cpu,发挥各自的优点 3.mpu9250贴在点阵屏背面,采集由于点阵屏倾斜在两个方向上g的分量,作为外力给到每个粒子 4.每个粒子之间考虑弹性碰撞,还有和墙壁的碰撞,并加上阻尼 5.将粒子的坐标给到fpga,fpga实时显示即可 ## 粒子移动方案探讨 1.我的方案是碰撞方案,也就是每个粒子含有位置,速度信息,需要和其他每个点做碰撞检测,当然这可以使用KD-tree做加速,甚至使用一些物理引擎,达到优化的效果,感兴趣的小伙伴可以做一做 2.别人的方案则比较简单,只需要逐点做填充即可,每个粒子不用包含速度信息,运动时是需要考虑附近的8个空间是否有其他粒子,所以也就无法反弹,运算量也较小 ## 关于diy 我的方案成本比较高,上手难度有点大,小白的话光代码下载就要研究半天,如果是不反弹的方案,使用stm32这类mcu就可以做到,上手也比较简单,不过我这个工程也只能提供参考 成本 点阵屏:85元(18年的价格) zynq:800元(我用的zedboard,你们可以用7010) mpu9250:20元 ## 附件 有一个pdf,里面有用的信息是引脚图,可以对照我的代码,得到时序,当然网上也有驱动点阵屏的c代码,也是可以参考的