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

93082f9df99db3c66487664f4782810c.png

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

8903ae4377de23b3ef73ec4a5447b754.gif

用了:

  • 一个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块钱打块板也可以啊):

78c38a8289898bcae95620746906d571.png
▲ 极简的电路图
7e805cd567aaddd8c120af8800429a6e.png
▲ 面包板上搭建的电路

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

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

e3b293aa03ae778ce6916422b0676e71.png

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

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

ce161be5db3214df9561509f6b0fb479.png
▲ 拆炸弹电子游戏电路图

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

83579590f81f4e952874bdb1fefce008.png
▲ 在面包板上搭建的电路游戏

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

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

24214430368cae73674c09c2a62fcbcc.png
▲ 视频游戏控制板电路原理图

ff4363e1ab5dbbaccac3de881bd847c8.png

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

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

cc4236171af39c02b616783168f70185.png
▲ 俄罗斯方块游戏

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

e48f9264e5bb749789057b6e6bf0f8d7.png

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

79bff71ab31a9b6543545b1a556dc2de.png
▲ Hackvision游戏板

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

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

8e4250ac3efae4febc44ef61f01c83c5.gif
▲ 太空入侵者游戏

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

825f768c8e0eec3d56182486fddeab5c.png
▲ 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


5b63f1cde65b38e3d9660008140ab32a.png


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux kernel 中模块化的平台驱动代码介绍

介绍在linux kernel中通过module_platform_driver来实现模块化平台驱动。大量的设备驱动程序都基于该种方式来实现,使用频次非常的高,在linux kernel 5.4.124的代码中搜索module_platform_driver共有2356次引用。这个宏的使用方式大相径庭,有…

这样给数组初始化,你肯定没有见过

今天在朋友圈看到一个朋友发的图片是给数组初始化的代码截图如下:我看到这个代码,也让我着实惊了一下,写代码这么久,也没有见过这样子初始化的。这个代码是出自海思的SDK里面的,华为的大牛还是很多啊,学习C…

CP命令引发的思考

转自:OSC开源社区今天同事用 cp 命令,把他给惊到了!背景是这样的:他用 cp 拷贝了一个 100 G的文件,竟然一秒不到就拷贝完成了!用 ls 看一把文件,显示文件确实是 100 G。sh-4.4# ls -lh -rw-r-…

C宏定义注意事项

1、带参数的宏与函数的优缺点 2、宏定义一个函数时&#xff0c;需要注意每个参数都需要用括号括起来。 如&#xff1a;#define Min(a,b) ((a)<(b)?(a):(b)) 3、宏定义一年中的秒数 #define SECONDE_OF_YEAR 606024365UL &#xff08;√&#xff09; #define SECONDE_OF_YE…

不要再来北上广深了

大家好&#xff0c;我是写代码的篮球球痴最近我们的一个离职群里面讨论一个问题&#xff0c;就是在北上广深工作的性价比问题&#xff0c;我有几个同事这样描述。一线城市确实会遇到一些机会&#xff0c;也有可能会遇到一些改变命运的机会。不过对于生活来说&#xff0c;一线城…

稚晖君教你制作全球最迷你的自平衡机器人

摘要&#xff1a;Nano是一个小巧可爱的机器人&#xff0c;身高大约10公分&#xff0c;特点是平衡感好&#xff0c;长得很白以及善于卖萌。作为全球最迷你的自平衡机器人&#xff0c;Nano身材虽小&#xff0c;但配置有丰富的传感器—陀螺仪&#xff0c;超声波&#xff0c;Motion…

ARM不同位数系统int字节数区别

32位和64位系统区别及int字节数 一&#xff09;64位系统和32位有什么区别&#xff1f; 1、64bit CPU拥有更大的寻址能力&#xff0c;最大支持到16GB内存&#xff0c;而32bit只支持4G内存 2、64位CPU一次可提取64位数据&#xff0c;比32位提高了一倍&#xff0c;理论上性能会…

VUE 入坑系列 一 双向绑定

html代码<div id"app"><p>{{message}}</p><span>message1</span> <input v-model"message"><span>message2</span> <input v-model"message"></div> View Codejavascript代码var …

semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机

使用ITM机制实现调试stm32单片机&#xff0c;实现printf与scanf。 ITM简介 ITM机制是一种调试机制&#xff0c;是新一代调试方式&#xff0c;在这之前&#xff0c;有一种比较出名的调试方式&#xff0c;称为半主机&#xff08;semihosting&#xff09;方式。 在pc上编写过C语…

5毛钱搞一个2.4GHz射频信号探测器

射频电子领域神秘而又朦胧&#xff0c;今天我们通过一个小小的射频检波电路来体验一下射频世界的魅力。实验目的制作一个 2.4 GHz 射频信号探测器&#xff0c;电路简单总成本不到 5 毛钱。该电路在靠近 2.4 GHz 无线信号时 LED 灯会闪烁。这是我用制作好的 2.4 GHz 射频信号靠近…

华为宣布:免费培养8000名嵌入式开发者!学习免费!实践免费!辅导免费!

真正的5G时代&#xff0c;万物互联各行各业都离不开智能物联网技术物联网 (IoT) 设备会生成海量数据通过分析这些数据可以提供业务洞察力优化业务决策&#xff0c;实现流程自动化也由于物联网的迅速兴起&#xff0c;专业性人才稀缺各阶层课程层出不穷&#xff0c;开发者眼花缭乱…

现在不要着急买房

我写这篇文章&#xff0c;是因为确实最近有人向我咨询买房的事&#xff0c;今天抽空想聊下这方面的事&#xff0c;如果观点不正确&#xff0c;欢迎评论说出你的想法。是前天&#xff0c;我一个同学咨询我买房的事情。我也直接说了&#xff0c;最近两年&#xff0c;把钱放在口袋…

解决vlc-android播放http视频退出问题

之前用vlc-android播放http视频,程序就自动退出了,尝试用ndk-gdb调试,但是一调试,就报 /home/administrator/code/vlc-android/extras/package/android/vlc-android/obj/local/armeabi/gdb.setup:4: Error in sourced command file:Remote communication error: Connection res…

受保护的属性无法直接读取

转载于:https://www.cnblogs.com/xiaobiaomei/p/9645795.html

MDK530编译出现ARM版本不符问题

1、用最新版的MDK530编译原来的代码出现问题&#xff1a;错误&#xff1a;“35; pragma import”是ARM编译器5的扩展&#xff0c;ARM编译器6不支持它[-Warmcc pragma import] 在仙女棒里面将ARM6修改为ARM5&#xff1a; 与此同时&#xff0c;在sys.c里面__asm void MSR_MSP(u3…

存储器Flash页、扇区、块的区别

作者 | strongerHuang微信公众号 | 嵌入式专栏大家都知道Flash是用于存储数据的存储器&#xff0c;但很多读者看到页(Page)、扇区(Sector)、块(Block)等这些单位时一脸懵逼&#xff0c;这到底是什么&#xff0c;有什么区别&#xff1f;下面就来讲讲关于Flash内部结构组织以及相…

volatile用法

许多程序员无法正确的理解C语言关键字volatile。这并不奇怪&#xff0c;大多数C原因书籍不过一两句一带而过。本文将告诉你如何正确使用它。 在C/C嵌入式代码中&#xff0c;你是否经历过下面的情况&#xff1a; ● 代码执行正常–直到你打开了编译器优化 ● 代码执行正常–直…

Linux 终端(TTY)

TTY 是 Teletype 或 Teletypewriter 的缩写&#xff0c;原来是指电传打字机&#xff0c;后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器&#xff0c;都是作为计算机的终端设备存在的&#xff0c;所以 TTY 也泛指计算机的终端(terminal)设备。为了支持这些 …

印象笔记 MAC安装使用旧版本

印象笔记终于支持markdown了&#xff0c;赞&#xff01;第一个beta版用起来非常不错。提示更新安装新版本后保存markdown一直提示 “Note content is invalid.”&#xff0c;无法保存&#xff0c;无奈下只能安装旧版本印象笔记markdown 密码:wa23安装旧版本后&#xff0c;打开印…

你打开的那些网页,大概率是被监控了

你有没有这样的经历&#xff1a;当用手机搜索一件物品时&#xff0c;APP很快就会给你精准推荐这件物品。这并不是APP有多懂你&#xff0c;而是你的隐私已被APP监视了。哪怕你用的是“清理历史记录切换无痕模式”&#xff0c;后台依然可以记录你的搜索……还有&#xff0c;长夜漫…