0

Virtuelles Radfahren


Kurze Beschreibung:
  • Das Projekt ermöglicht Ihnen die Interaktion mit einem Fahrrad / mit Google Maps umgekippt. Dank Magnetkontakt bietet die Fahrradtour ein noch besseres Weltkartenerlebnis.
  • Prinzip der Funktionalität:
  • Der Benutzer, der den Magnetkontakt durchläuft und kippt, gibt Arduin Informationen über die Anzahl der Pedalumdrehungen um die Achse (Anzahl der Umdrehungen). Wenn der Zähler überschritten wird, wird der Arduino-ASCII-Schlüssel ("W") gesendet, um die virtuelle Karte im Voraus ein Stück zu verschieben.
  • Das Projekt hat seine Dienste erfolgreich fortgesetzt:
  • Google Maps Street View
  • GeoGuessr (StreetView mit Site Raten - Quiz)
  • Earth Picker (StreetView mit Site Raten - Quiz)
  • Streetview - Höhlen / Bergwege
  • Das Verschieben von Seiten erfolgt durch Drücken einer der Tasten. Die Bewegung wird fortgesetzt, bis der Benutzer die Schaltfläche loslässt
    Hardware für das Projekt:
  • Arduino Leonardo (oder ein anderer 32u4-Mikrocontroller mit HID-Erweiterung) Virtuelles Radfahren - Setup
  • Magnetkontakt Virtuelles Radfahren - Setup
  • 2 Tasten zum Drehen der Seiten Virtuelles Radfahren - Setup
  • 2 Drucktasterwiderstände Virtuelles Radfahren - Setup
  • Virtuelles Radfahren - Setup Virtuelles Radfahren - Setup

    Arduino (32u4) sketch (PULLUP):

    #include <Keyboard.h>
    const int tlacidloVpred = 2;
    int tlacidloStav;
    int poslednetlacidloStav = HIGH;
    unsigned long poslednezakmitCas = 0;
    unsigned long zakmitDelay = 50;
    int pocitadlo = 0;
    const int tlacidloVlavo = 3;
    const int tlacidloVpravo = 4;
    void setup() {
      Keyboard.begin();
      Serial.begin(115200);
      pinMode(tlacidloVpred, INPUT_PULLUP);
      pinMode(tlacidloVlavo, INPUT_PULLUP);
      pinMode(tlacidloVpravo, INPUT_PULLUP);
    }
    
    void loop() {
      int citanie = digitalRead(tlacidloVpred);
      while (!digitalRead(tlacidloVlavo)) {
        Keyboard.press('a');
        delay(300);
        Keyboard.releaseAll();
      }
      while (!digitalRead(tlacidloVpravo)) {
        Keyboard.press('d');
        delay(300);
        Keyboard.releaseAll();
      }
      if (citanie != poslednetlacidloStav) {
        poslednezakmitCas = millis();
      }
    
      if ((millis() - poslednezakmitCas) > zakmitDelay) {
        if (citanie != tlacidloStav) {
          tlacidloStav = citanie;
    
          if (tlacidloStav == LOW) {
            pocitadlo++;
          }
        }
      }
      poslednetlacidloStav = citanie;
      Serial.println("Hodnota counteru:");
      Serial.println(pocitadlo);
      if (pocitadlo >= 5) {
        Keyboard.write(218);
        pocitadlo = 0;
        Serial.println("Pohyb vpred");
      }
    }