最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电脑DIY > 手机数码 >

诺基亚5110液晶的游戏生活

时间:2017-05-16 21:30来源:未知 作者:admin 点击:
i大学宿舍一般不允许你有宠物的房间/i。即使你没有养宠物,你必须全身心地投入时间和金钱来喂它,维护它的环境。 然而,有时还是不错的除了你的室友的房间有另一个生命 给数字生活的尝试! 今天我要告诉我如何让考平的生命在Arduino纳米游戏,显示在诺基亚51
诺基亚5110液晶的游戏生活

<i>大学宿舍一般不允许你有宠物的房间</i>。即使你没有养宠物,你必须全身心地投入时间和金钱来喂它,维护它的环境。然而,有时还是不错的除了你的室友的房间有另一个生命…

给数字生活的尝试!

今天我要告诉我如何让考平的生命在Arduino纳米游戏,显示在诺基亚5110液晶屏。硬件设置也应该让你去探索其他的元胞自动机算法和游戏人生。

我喜欢看考平的生命游戏,一群细菌或微生物。通过一个随机生成的地图和一个简单的规则集,康威的生命游戏可以让你与不同的生命形态,结构和序列的显示。它就像一个数字的培养皿或鱼缸,你可以检查为牵引。

附加文件

我附上有关康威的生命游戏,你会发现一个有趣的几本书。

  • “元胞自动机的艺术。pdf”这有很多例子,其他算法和元胞自动机的模式,你可能会感兴趣的尝试
  • “图灵的生命游戏机的通用性。pdf”-考平的生命游戏可以使国家机器和电脑
  • “元胞自动机.pdf”混乱的数学的东西,我不明白

一个最有价值的外卖,我从读数是<em>复杂性来自相互作用的简单规则,随着时间的推移</em>,如果你仔细想想,事情似乎很复杂的近距离,可以从远处看起来很简单。但复杂/简单的系统并不重要,因为它是一个更加美丽和无限系统的重要组成部分。

其他注意事项

我想做一个物理平台尝试了元胞自动机的算法不同,最常见的是考平的游戏人生,所以我将步行通过代码。

这是Arduino纳米,与外部SRAM存储器,和一个诺基亚5110的屏幕。

它很慢。我在寻找一种更有效的方法。我不擅长的代码,但这是我迄今为止。

 
  • 诺基亚5110液晶的游戏生活细胞automata.pdf艺术
    下载
  • 诺基亚5110液晶的游戏生活图灵的life.pdf游戏机的通用性
    下载
  • 诺基亚5110液晶的游戏生活细胞automata.pdf
    下载

步骤1:部分

诺基亚5110液晶的游戏生活
  • 2个按钮
  • 1电位器
  • 1 Arduino
  • 1诺基亚5110的屏幕
  • 23k256 SRAM芯片

其他的东西如果你想跟随我的可怕的设置

  • 手机电池(从Galaxy S7不是最好)
  • 对于Arduino插入标题
  • 有一个开关(我用跳线)

步骤2:组装电路

诺基亚5110液晶的游戏生活

这里是一个原理图和线路板图如何连接一切!我焊接到一个约束板,所以我没有任何电路板跟随。附上的Fritzing文件。

关系不是功能太重要了,因为我们有很多的IO端口一个Arduino的工作。基本的SRAM连接到SPI,LCD屏幕连接但是你配置在PCD8544图书馆,和按钮和电位器连接到一些IO引脚。

 
  • 诺基亚5110液晶的游戏生活nokia_5110_lcd.fzpz
    下载
  • 诺基亚5110液晶的游戏生活康威platform.fzz
    下载

步骤3:概述代码

诺基亚5110液晶的游戏生活

本文将简要概述如何每一代在这段代码中计算。这绝对不是处理记忆或做计算的最有效的方法。<strong>请你们拿出让这个过程更有效</strong>!在这段代码中,生命都是一个字节的内存。它需要外部SRAM来存储所有的生命形式(除非你使用一个Arduino MEGA)。SPI通信速度慢,所以计算速度是有限的。

附上代码。

如果你想要<strong>更多的信息</strong>,你可以查看附件我有我的涂鸦。

生成初始的随机状态->一


		

/ *******************这个函数生成随机********************* / initialrandom() { void

为(int i = 0;i < 8064;i++){ SRAM。write_stream(我,pixoff,1);} 为(int i = 0;i <坐;i++){ int randx =随机(0,84); int兰迪=随机(0、48); 显示。drawpixel(randx、兰迪、黑); / / randx和兰迪写同一件事的nopixel矩阵 SRAM。write_stream((84×兰迪+ randx),Pixon,1); } 显示。打印(0);/ *************************可以禁用这里的代数******************* / 显示。设置鼠标指针(0、40);

这部分代码选择随机像素打开。该生物的密度取决于电位器阅读。该代码显示这些像素和他们也一部分的SRAM,我会打电话给“写道:”。

从A到B的计算


		

/ *********************计算产生从1到2 ******************* / void calcNextGen() { //goes from 1 to 2 // for (i = 4032; i<8064 ; i++) {SRAM.write_stream(i, pixoff, 1);} //clear 2 for (i = 0; i < 4032 ; i++) { numNeighbors = 0; //reset neighbors per pixel SRAM.read_stream(i, income, 1); x = (i) % 84; y = (i - x) / 84; findNeighbors(x, y); //[AxAy+BxBy+CxCy+DxDy+ExEy+FxFy+GxGy+HxHy] numNeighbors = countNeighbors(Ax, Ay) + countNeighbors(Bx, By) + countNeighbors(Cx, Cy) + countNeighbors(Dx, Dy) + countNeighbors(Ex, Ey) + countNeighbors(Fx, Fy) + countNeighbors(Gx, Gy) + countNeighbors(Hx, Hy); //<2||>3 DIE, =3 LIVE, =2 same if (numNeighbors == 2) { //do nothing } else if (numNeighbors == 3) { SRAM.write_stream(i + 4032, pixon, 1); } else { SRAM.write_stream(i + 4032, pixoff, 1); } } }

这部分代码看起来像素的状态”。

考平的游戏人生,这部分代码计数的邻居数量(8周围像素)细胞来确定它的下一个状态(死的或活的)。如果有2个邻居,一个细胞是它的当前状态。如果有3个邻居,一个细胞会活着还是活着的。其他任何数量的邻居,细胞会死。如果你看<em>countneighbors()</em>和<em>findneighbors()</em>附件中的代码,你会发现更多的细节。

在确定一个细胞的未来状态,新的状态存储在SRAM的“B”。

输出B到A


		

/ *********************从2显示***************************** / 无效dispgen() { // 2显示 为(i = 4032;i < 8064;i++){ SRAM。read_stream(我的收入,1); X =(I - 4032)% 84; y =(I - 4032 - x)/ 84; 如果(收入[ 0 ] = =“W”) { 显示。drawpixel(X,Y,黑色); SRAM。write_stream(I - 4032的像元,1); } 别的 { 显示。drawpixel(x,y,白色); SRAM。write_stream(我4032、pixoff,1);} } generationcount + +; 显示。打印(generationcount);/ *************************可以禁用生成数这里******************* / 显示。设置灯光(0

在这一步中,储存在“B”会显示并存储在一个“SRAM是什么。”B“在下一个周期。

    (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片