Arduino单片机基础及开发应用 姜凯耀 13300200014 俄罗斯方块 Arduino单片机基础及开发应用 姜凯耀 13300200014
单片机与Arduino 单片机 Arduino 单片机(Microcontrollers)是一种 集成电路芯片,是采用超大规模集成 电路技术把具有数据处理能力的中央 处理器CPU、随机存储器RAM、只读 存储器ROM、多种I/O口和中断系统、 定时器/计数器等功能(可能还包括显 示驱动电路、脉宽调制电路、模拟多 路转换器、A/D转换器等电路)集成 到一块硅片上构成的一个小而完善的 微型计算机系统 Arduino是一款以单片机为核心的便 捷灵活、方便上手的开源电子原型平 台,包含硬件(各种型号的Arduino 板)和软件(Arduino IDE)。 跨平台、简单清晰、开放性、发展迅 速、物美价廉
Arduino扩展模块
俄罗斯方块 硬件支持 库文件支持 U8glib.h 优点: 一系列draw函数: drawPixel,drawLine,drawBox,drawCircle,drawXBMP,drawStr… 设置方便 setRot90/180/270… 蜂鸣器 LCD12864_ST7920
子函数base(4X4) void base(int x,int y) { u8g.drawLine(x,y,x+3,y); u8g.drawPixel(x+1,y+1); u8g.drawPixel(x+2,y+2); }
子函数shape O型方块x1 J型方块x4 L型方块x4 T型方块X4 Z型方块X2 S型方块X2 I型方块x2 共计19种
子函数 Score: drawStr (score) Next: Shape→Knext(random(1,20)) Level: drawBox(score→level)
10 20 子函数 子函数graph 边框 游戏区域(36,22)→(115,63) Dot【20】【10】() (x,y)→dot[x][y]
(x,y) 子函数down 子函数left、right 根据形状(k=?) 不触底则x+4 根据形状(k=?) 21<y<64 y+4或y-4
子函数rotate 根据形状(k=?) X=1 X=2、3、4、6、7、8、 10、11、12、14、16、 18 X=5、9、13 判断(x,y)!!!
子函数scan 子函数buzzer 识别按键 按键去抖动: 因为人手的机械动作使按键按下时会产生大概20ms左右的按键 抖动,如果arduino在这20ms内去检测IO口的电平很可能会检测出来 不稳定的信号,因此在程序中检测到低电平后延迟20ms再次检测可以 起到去除抖动的作用 蜂鸣器 子函数buzzer
主函数loop 速度 int unittime=1000-level*150; int a=millis();int t;(if(a-t<unittime)) u8g.firstPage(); do{ draw(); } while(u8g.nextPage());
主函数loop Scan有无输入: 有→执行输入→if(a-t<unittime)→下一格&buzzer 到底:x=112 ,x=36,y=34
主函数loop 消行: 从上至下扫描dot[ ][ ] 若dot[x][0]=1 &&……&& dot[x][9]=1 上一行等于下一行 scoretimes+1
改进空间 1、精简代码 2、红外、蓝牙遥控 3、暂停/开始 4、界面美化
谢谢!