Глобус синхронизированный с виртуальным глобусом на экране ПК - Своими руками
Своими руками

Глобус синхронизированный с виртуальным глобусом на экране ПК

>

Идея этого проекта заключается в том, что бы поворачивая глобус, установленный на столе на специальной подставке, на экране монитора поворачивался виртуальный глобус.
Давайте посмотрим, как это происходит на коротком видео.

Такая функция будет удобна например, на уроке географии.

Инструменты и материалы:-Arduino uno;-Резистор 1 кОм;-Провода;-Поворотный энкодер;-Светодиодное кольцо Neopixel 24;-Глобус;
-МДФ 3мм;
-Лазерный резак;
Шаг первый: пайка
Схему мастер не предоставил, но она не очень сложная. На неопиксельном кольце есть четыре контактные площадки. Две площадки – питание, одна ввод данных, и одна вывод данных. Необходимо припаять провода к трем площадкам кроме “вывод данных”.
Питание подключается к 5В Ардуино. “Ввод данных” к любому цифровому контакту через резистор.
Так же необходимо подключить энкодер.
Глобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКШаг второй: светодиодное кольцо
Теперь нужно, чтобы при повороте глобуса последовательно загорались светодиоды. Достигается это поворотом энкодера. Глобус нужно закрепить на ручке энкодера, а светодиодное кольцо укладывается под глобус.

Для работы с кольцом neopixel мастер установил библиотеку adafruit neopixel в Arduino IDE. В этой библиотеке есть несколько примеров проектов, один из которых он использовал, чтобы проверить, работают ли соединения.

Дальше мастер написал код, который заставляет часть кольца загораться в зависимости от вращения поворотного энкодера.
Глобус синхронизированный с виртуальным глобусом на экране ПК Показать / Скрыть текстsigned char lastpos = 0;
void loop() {
encoder.tick();

signed char pos = encoder.getPosition();
if (pos != lastpos) {
lastpos = pos;
Serial.println(pos);
lightPos = pos;
lights();
}
}

void lights(){
strip.clear();
strip.fill(strip.Color(255,255,255,255), lightPos % 20, 10);
if (lightPos % 20+ 10 > 24){
strip.fill(strip.Color(255,255,255,255), 0, lightPos % 20 + 10 – 24);
}
strip.show();
}
Глобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКШаг третий: основание
Основание мастер вырезал на лазерном резаке. Оно сделано в форме ящика. Внутри располагается ардуино. По центру крепится энкодер. Затем укладывается светодиодное кольцо и глобус.
Глобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКШаг четвертый: проект Unity*
*Unity — межплатформенная среда разработки компьютерных игр.
Чтобы подключить Arduino к Unity, мастер использовал Ardity. Ardity – это пакет Unity, который позволяет Unity отправлять и получать информацию от Arduino. ОН разработал сцену с землей на динамическом фоне. Виртуальная Земля будет освещена так же, как и Земля, в зависимости от системного времени.

Ardity получает информацию от Arduino и отправляет ее настраиваемому сценарию. Приведенный ниже скрипт получает информацию от Ardity и использует ее для вращения Земли в Unity.
Глобус синхронизированный с виртуальным глобусом на экране ПК Показать / Скрыть текстusing System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateEarth : MonoBehaviour
{
//public GameObject sun;
int lastMsg = 0;
// Start is called before the first frame update
void Start()
{

}

void OnMessageArrived(string msg)
{
if (float.Parse(msg) <= lastMsg)
{
transform.Rotate(0, 0, 18);
//sun.transform.Rotate(0, -18, 0);
lastMsg = int.Parse(msg);
}
else if (float.Parse(msg) >= lastMsg)
{
transform.Rotate(0, 0, -18);
//sun.transform.Rotate(0, -18, 0);
lastMsg = int.Parse(msg);
}
Debug.Log("msg arrived");
}

void OnConnectionEvent(bool success)
{

}
}

Глобус синхронизированный с виртуальным глобусом на экране ПКГлобус синхронизированный с виртуальным глобусом на экране ПКВ дальнейшем мастер собирается сделать несколько улучшений этого проекта.
В частности, это способ подключения земного шара к энкодеру. В следующей версии он планирует использовать в глобусе ось, которая будет удерживаться на месте с помощью подшипников. Он планирует использовать 2 подшипника, чтобы ось надежно удерживалась на месте. Затем поворотный энкодер будет помещен под эту ось.

Так же он планирует сделать новый корпус с помощью 3D-принтера.
Глобус синхронизированный с виртуальным глобусом на экране ПК

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.