电子森林推文 700个字节的代码在ATtiny10里跑一个游戏[1] 介绍了一个 开源小游戏RunTiny[2] .

用了:

  • 一个AVR单片机ATtiny10微控制器(只有6个脚,Digikey上0.3美元一颗)

  • 一个128*32的OLED显示屏

  • 一个按键

  • 一个电池 - 3.3V~4.5V都可以,可以用1S 150mAh的Lipo,乃至一颗CR2032的纽扣电池

小小的单片机ATtiny10只有6个脚:

  • 1个电源

  • 1个地

  • 1个Reset

  • 3个可用的I/O:

    • PB0: 用于连接OLED的I2C的SDA

    • PB1: 用于连接OLED的I2C的SCL

    • PB2: 按键(INT0)

原理图长这样(在面包板上就可以实现,5块钱打块板也可以啊):

▲ 极简的电路图

▲ 面包板上搭建的电路

代码也超级简单,为了能够塞到1KB的Flash存储器里面,作者做了优化,用汇编语言写成,最终的代码只有778个字节,不仅实现了游戏的功能,还能处理微控制器的I/O以及显示的通信

是不是很酷?在Github上有开源的资源。[2]

“到底应该是先剪短绿色电线?还是红色的呢?”,这也许是很多动作片中的扮演大英雄的主人公在面对能够拯救百万人性命的拆弹时刻经常要说的台词。

下面这个电子游戏就是带有两个倒计时七段数码管,并且有四种不同颜色电线需要你将其按顺序移开来阻止炸弹爆炸的电路原理图。

▲ 拆炸弹电子游戏电路图

原理图中的器件参数可以从网络上下载相关的说明。[3] 如果使用PCB来制作相应电路可以做到非常小巧精致,不过在面包板上DIY这个游戏电路则更有手感。

▲ 在面包板上搭建的电路游戏

电路上电后,数码管显示“S1”,此时需要将四根不同颜色线(红、蓝、绿、白)接入电路,然后按动按钮”K1”,游戏便开始了,数码管显示15秒的倒计时。单片机程序自动随机设定四根线移除结果:触发炸弹、加快计时速度、解除炸弹以及无结果。

电路中16F88单片机程序 BGame.hex[3] 也可以从网站下载。

▲ 视频游戏控制板电路原理图

下面是一款基于ATTiny3的俄罗斯方块游戏,它是由 Owen在2011年[4] 开发的电子游戏,被称为TinyCopter,其中LCD是Nokia3310手机液晶屏幕。它模拟在Apple-II电脑上一款电脑老游戏,使用空格键来控制直升飞机起飞来穿越崎岖的通道。

为了能够在1k字节的FLASH, 64字节RAM中实现这款小游戏,作者使用汇编语言,用尽了单片机内每一位可用的空间。

▲ 俄罗斯方块游戏

也许汇编语言是很多程序员的噩梦,但如果开发时间充裕,Owen愿意永远使用汇编语言。它可以让程序员把单片机按倒在地上使劲的摩擦,榨出所有可用的资源。

如果前面的单片机电子游戏机只能在微小液晶显示器上玩,不太过瘾,那么下面这款基于ATMEGA328的8位单片机的 Hackvision[5] 则可以直接利用它的IO口来产生NTSC(或者PAL)电视信号来驱动大屏幕电视机来显示游戏画面。有两条IO口组成的2bitAD所产生的音效也很神奇。

▲ Hackvision游戏板

向Arduino一样,这款电路设计中的单片机可以让你通过它的BootLoader将你自己开发的程序进行上载。利用单片机额外的外设资源可以增加更多的游戏控制杆。

基于这款硬件可以玩太空入侵者,乒乓球或者小行星等游戏。

▲ 太空入侵者游戏

这款Hackvision相关的 硬件开发和软件编程[6] 可以在网上找到相应的开发资源和编程指导资料。

▲ Hackvision硬件电路设计

参考资料

[1]

700个字节的代码在ATtiny10里跑一个游戏: https://mp.weixin.qq.com/s/gcqykDVyC8Vx_yztekMNSQ

[2]

开源小游戏RunTiny: https://github.com/ridoluc/RunTiny

[3]

原理图中的器件参数可以从网络上下载相关的说明。: https://www.electronics-lab.com/project/bomb-game/

[4]

Owen在2011年: http://hackedgadgets.com/category/game-hacks/page/7/

[5]

Hackvision: https://nootropicdesign.com/hackvision/

[6]

硬件开发和软件编程: https://easyeda.com/tomatos/hackvision



推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

每个电子工程师都埋藏着一颗游戏的心相关推荐

  1. 电子工程师都去哪了?

    据Deloitte调查,大约有85%的芯片供应商都需要新的人才类型,其中有77%的业者都表示人才短缺,特别是电子工程师(EE)--EE是最难填补的位置,而且还有太多的公司都在寻找相同的人才--&quo ...

  2. 每个电子工程师都应该了解的关于示波器的几点

    在电子工程师和技术人员要用到的全部测试设备中,最有用的无疑就是示波器.示波器的功能强大,可以帮助电子工程师和技术人员快速.准确地捕获随时间变化的电压(或电流等其他参数)测量值,而实验室中的任何其他设备 ...

  3. 我敢打赌,99%的电子工程师都掉进过这29个坑!

    关注.星标公众号,直达精彩内容 有很多时候,工程师们并不觉得自己在犯错误,反而以为自己找到了更好的解决方式而窃喜呢!其实,面对林林总总的元器件和复杂的电路图,工程师们不时出现的小错误是难免的,而且说不 ...

  4. 电子工程师都在看什么?送你一份“修炼宝典”

    现如今,形形色色的公众号如繁星一般让人眼花缭乱. 近几年科技的飞速发展,让更多人开始关注科技,甚至成为极客. 然而学习是永无止境的,如何才能追赶如此高速的发展? 曾经,我也是不知道去看哪些,便一股脑关 ...

  5. 永不停息的红舞步一个电子工程师的心路历程(转载)

    转载自新浪微博 传说中有一对美丽的红舞鞋,穿上它,你将舞出最美丽的舞步-- 正式从事电子硬件设计工作四年多了,回忆起接触电子的这几年,感触很多--虽然经历了很多酸甜苦辣,但也给我的生活增添了很多色彩- ...

  6. 一个电子工程师的经验之谈!

    "工程师是科学家:工程师是艺术家:工程师也是思想家."一位伟大的工程师曾经提出过这样的一段感言.不错,工程师是利用自然科学来创造工程的人.工程既是物质的也是思想上的.许多不朽的工程 ...

  7. 如何做一名优秀的电子工程师[zz]

    如何做一名优秀的电子工程师 成为一个杰出工程师最重要的因素就是"热爱自己的职业".毕竟兴趣是最好的老师,许多优秀的电子工程师都是从小作为电子爱好者的.爱好不仅要体现在行动中 更要深 ...

  8. 【转载】怎样成为优秀的电子工程师?另外求本文出处

    "工程师是科学家:工程师是艺术家:工程师也是思想家."一位伟大的工程师曾经提出过这样的一段感言.不错,工程师是利用自然科学来创造工程的 人.工程既是物质的也是思想上的.许多不朽的工 ...

  9. 电子工程师的职业规划

    常见的职业病预防和治疗手段 由于工作的关系,很多时候我们不可避免的接触到一些东西,还有由于工作需要,所造成的一些不良生活习惯,这些都会让我们的身体不舒服.这一节的内容就是帮大家讲讲我们电子工程师常见的 ...

最新文章

  1. 什么是RSS订阅 Really Simple Syndication(聚合)
  2. 更新版vimrc(java自动补全)
  3. JQuery快速入门-选择器
  4. linux twm,linux 命令缩写解析
  5. 作者:陶克(1988-),男,博士,北京系统工程研究所助理研究员。
  6. 【MySQL】基于MySQL的SQL核心语法实战演练(二)
  7. Linux 下几款程序内存泄漏检查工具
  8. Linux下创建Django项目并访问
  9. 能否设计变容量发动机
  10. Matlab Robotic Toolbox工具箱学习笔记
  11. 外贸Newer必备外贸流程
  12. matlab怎么画map图,用MATLAB自带的worldmap及相关函数画地图
  13. 微软自动化神器playwright
  14. 用计算机弹起风了歌词,起风了歌词(买辣椒也用券演唱)
  15. 为什么说,百度SEO是经验主义?
  16. layui 搜索 重置 自动刷新
  17. for...in 和 for...of
  18. 仿qq email界面 登陆
  19. python罗马数字转换阿拉伯数字_Python将阿拉伯数字转换为罗马数字的方法
  20. kettle-创建资源库

热门文章

  1. 2.我攻破了美军海军网站 [1]
  2. linux kernel 培训,《Linux Kernel培训课件》.pdf
  3. LeetCode 45.跳跃游戏II
  4. Android全面解析之Activity生命周期
  5. 翻译:RxSwift的历史以及概念详细解析
  6. java基于微信小程序的智能停车场管理系统+ssm+uinapp+Mysql+计算机毕业设计
  7. Flex 父子窗口的数据交换
  8. Android动画屏保,Android Daydream 互动屏保
  9. win10 上安装 pytorch + cuda
  10. Android手游 “2048” 源码解析