微控制器,又称单片机,是一种非常简单的电脑。它不具备控制其它OC组件的能力,但却可以实现很多特有的功能。相比OC的电脑它更加灵活、便捷,相比机器人它工作起来更加稳定、高效。它并不是一个可有可无的存在。


  当把一个微控制器外壳放进机器人装配器时,就会出现以下界面:

OpenComputer中微控制器的使用(含范例)-第1张图片

  T1和T2的外壳在使用升级组件上区别仅在于能否使用T3级别的电池,在插卡上的区别仅在于能否使用无线网卡和二级数据卡。

  微控制器能够使用的组件非常有限:

  通过这些组件,微控制器可以实现与周边的设备、信号的交互,也可以接受主机的控制。


  选择组件的个人经验:

  • 外壳:T1 外壳足以满足大多数情况。

  • CPU:T1 CPU或APU都可以。因为微控制器没有显示能力,用CPU就好。

  • 内存:用一条T1.5的内存就可以。

  • 升级组件或插卡:根据使用目的添加,用不上的尽量不要加。不仅会增加复杂度,还会增加能耗。


  下面是重点:EEPROM的处理

  实测的结果表明:EEPROM被组装到微控制器中,内容就不能修改了,所以只能在电脑或服务器上写好再组装。如果组装成的微控制器工作有错误,要用分解机把微控制器拆成零件再重新写入程序。

  • 先组装一台电脑,如果要下载现成的程序请别忘了装因特网卡

  • 开机,键入 install 把系统装入硬盘。重启后硬盘就可以正常使用了

  • 使用命令 edit <程序名>或 pastebin 从网上下一个现成的。这里提供一个我练手写的程序,提取代码为 MjrFx8eE 。具体用处后面再细说。

  • 打开机箱,在电脑运行时拔掉引导EEPROM。注意不能关机拔,因为没有它电脑无法启动。然后插入一块空白的EEPROM(有数据的可以在合成台上直接合成为空的)

  • 找到目录:/dev/components/by-type/eeprom/0,这里就是EEPROM内的数据存放位置。修改这里的文件内容就是在向EEPROM写入数据。这里的文件可以修改、覆写,但是不能删除。我们要让微控制器运行的程序就是这里的文件:contents。用我们刚刚写好或下载的程序覆盖这个文件就行了,如果有小问题还可以直接修改它。

OpenComputer中微控制器的使用(含范例)-第2张图片


  把这个EEPROM从电脑中拿出,送到机器人装配器中与外壳一同合成微控制器成品。这个微控制器摆放后(别忘了连接能源),右键即可开机,同时自动执行我们写入的程序内容。正常运行时电源灯为绿色,如果为红色就是出错了,可以用分析器潜行+右键获得出错信息。


  附带说一下提供的范例程序的用处:

  这是用来控制星系MOD中压缩机自动生产的一个投料器。压缩机要实现自动生产,最麻烦的就是物品需要定位放入。由于它的GUI有11个格子,其中10个都可以接收物品,物品进入后还优先堆叠在一起,所以用管道或ME接口都没办法顺利放进原料。我以前是用GT的校准器来完成进料工作的,但是校准器的格子有限,仅能处理几个配方,不得不用多组设备来实现全自动生产。这个微控制器可以实现星系中所有致密板、1-3阶加重板的自动投料生产,如果有更多配方,在数组 items 里加几条数据就好。


这是微控制器用到的组件:

OpenComputer中微控制器的使用(含范例)-第3张图片

  基础外壳就够用。为了控制物品转移,使用了插件:换位器。


  全部设备摆放好后是这样的:

正面:

OpenComputer中微控制器的使用(含范例)-第4张图片

后面:

OpenComputer中微控制器的使用(含范例)-第5张图片


有几个细节说明一下:

  • 微控制器可以使用AE的能源,甚至它本身可以成为AE网络的一部分,因此和它相连的设备会进入AE网络。在正面图中,微控制器右边的ME接口仅作为一个容器使用,不能并入AE网络,因此微控制器与AE导线的所有接连都使用了石英纤维进行隔离,在阻断数据同时也能提供能源。用ME接口当容器是因为它格子数量比较合适:够用又不过多,过多的格子会让微控制器花大量时间去寻找。

  • 微控制器在启动后,自动查找周围的容器(包括有格子的设备)。如果容器的格子是11个,那么就认为是压缩机;如果是9格,就认为是原料容器(ME接口)。各位可以根据自己的设备进行调整,如果使用原版箱子,修改一下程序倒数第二行的 source=checkBox(source,27) 就好。如果使用电动压缩机,它内部的格子有12个,而且原料格子不是3~11而是4~12,那么程序中定义各个格子属性的数组 tSlot 数组也得修改。

  • 输出配方的ME接口请使用阻拦模式,避免多个配方混入。

  • 压缩机的燃料我选择了:木棍/GT木浆/各种原版树苗(都是2个烧一次,混合放入也没关系),还有无中生有的碎煤。因为我是个强迫症,燃料浪费是可耻的!各位根据自己喜好选择或修改。

  • 压缩机的成品只能从底面取出,而原料可以从底面以外的任何面送入,因此在压缩机的底部使用了一个ME输入总线来吸取成品。

  • 金属锭是用的GT金属锭的代码,没装GT的请改成自己模组对应的物品代码。每条数据后面我加了标签的,唯一用途就是看着方便。我还没找到用 lua 访问矿物辞典的方法,如果谁知道请教教我。