虚拟与现实 当我的世界遇上你的世界-Arduino中文社区 - Powered by Discuz! Archiver

hongzailalala 发表于 2019-3-22 12:05

虚拟与现实 当我的世界遇上你的世界

本帖最后由 hongzailalala 于 2019-4-30 19:18 编辑

我的世界智能家居系统!
在最后我还是决定搞一个有特色的东西~
这是一款基于Arduino UNO R3开发板的我的世界智能家居控制器,在传统的搭建上,我们需要购买零件,还有在搭建中的各种危险,比如(触电,被电烙铁烧到,短路,甚至爆炸!像这样)在功能上,我们通过指纹模块打开我们的Arduino大门,通过433M无线模块,远程打开我的世界窗口,电灯!

所以我把测试智能家居的部分放到了游戏里面,这样就可以扩展更多的东西!你们也知道我的世界里啥都有的对吧:lol

接下来介绍一下游戏端
大厅(电路部分是暗线噢~)
建筑水平有限了啦,毕竟是打代码的,审美不行:(

房间

还没有埋的暗线(也能说是一张电路图!)

然后我们封装我们的电路,简化系统,引出七条线(大门,窗户,房间灯,客厅灯,墙壁装饰灯,雨雪传感器,阳光传感器)

进行与Arduino的接入,通过我们的UART协议进行通讯!

封顶完成!就和普通的房子一般!功能却大大滴!
到我们的Arduino代码,主要是指纹模块的处理,还有433M的获取,和我的世界通讯也有关键字,也可以说是通讯协议吧
#include <Adafruit_Fingerprint.h>
#include <TimerOne.h>

SoftwareSerial mySerial(10, 11);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

int key1 = 6;
int key2 = 7;
int key3 = 8;
int key4 = 9;//433M模块

int a = 0;//定时器用

void timerIsr()//定时器
{
   a++;
}

void setup()
{
Timer1.initialize(1000000); // set a timer of length 100000 microseconds (or 1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
pinMode(key1,INPUT_PULLUP);
pinMode(key2,INPUT_PULLUP);
pinMode(key3,INPUT_PULLUP);
pinMode(key4,INPUT_PULLUP);
Serial.begin(9600);
while (!Serial);// For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit finger detect test");

// set the data rate for the sensor serial port
finger.begin(57600);

if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
} else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
}

finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
}

void control()//控制函数
{
if(digitalRead(key1) == HIGH)//有按下
{
    Serial.println("redstone 15 7");//让我的世界串口红石块激活
    Serial.println("redstone 0 8");//关闭二号红石块
    }
if(digitalRead(key2) == HIGH)//有按下
{
    Serial.println("redstone 15 8");//让我的世界串口红石块激活
    Serial.println("redstone 0 7");//关闭二号红石块
    }
if(digitalRead(key3) == HIGH)//有按下
{
    Serial.println("redstone 15 9");//让我的世界串口红石块激活
    Serial.println("redstone 0 10");//关闭二号红石块
    }
if(digitalRead(key4) == HIGH)//有按下
{
    Serial.println("redstone 15 10");//让我的世界串口红石块激活
    Serial.println("redstone 0 9");//关闭二号红石块
    }
}

void ZW()//指纹模块
{
int dat = getFingerprintIDez();
if (dat != -1) //读取到指纹
{
    Serial.println("redstone 15 1");//让我的世界串口红石块激活
    Serial.println("redstone 0 2");//关闭二号红石块
    a = 0;
}else
{
    if(a > 5)//时间大于五秒
    {
    Serial.println("redstone 15 2");//让我的世界串口红石块激活
    Serial.println("redstone 0 1");//关1号红石块
    }
    }
}

void loop()                     // run over and over again
{
ZW();//指纹模块
control();//控制函数
}

uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image taken");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println("No finger detected");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("Imaging error");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
}

// OK success!

p = finger.image2Tz();
switch (p) {
    case FINGERPRINT_OK:
      Serial.println("Image converted");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("Image too messy");
      return p;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("Communication error");
      return p;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("Could not find fingerprint features");
      return p;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("Could not find fingerprint features");
      return p;
    default:
      Serial.println("Unknown error");
      return p;
}

// OK converted!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
    Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
    Serial.println("Communication error");
    return p;
} else if (p == FINGERPRINT_NOTFOUND) {
    Serial.println("Did not find a match");
    return p;
} else {
    Serial.println("Unknown error");
    return p;
}   

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);

return finger.fingerID;
}

// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK)return -1;

p = finger.image2Tz();
if (p != FINGERPRINT_OK)return -1;

p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK)return -1;

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}

最后我们就可以根据游戏世界里面的设计开始设计电路,看看能否是实现自己喜欢的功能~
效果视频
https://www.bilibili.com/video/av50949828/

hongzailalala 发表于 2019-4-19 13:25

:lol:lol:lol

牛逼的小学生 发表于 2019-11-29 19:29

mod是什么 求链接
页: [1]
查看完整版本: 虚拟与现实 当我的世界遇上你的世界