Stap 2: Hoe het werkt
Toen ik begon dit project het moeilijkste deel was het vinden van het moment voor het opslaan van een waarde en vergelijken met de huidige IR-waarde om te bepalen welk soort gebaar. Aanvankelijk ik gered een waarde elke 100ms, maar het was zeer onnauwkeurig. Het had een heleboel valse positieven, met name wanneer het doen van een "down" gebaar. Dus maakte ik een manier om automatisch de gevoeligheid op basis van de hogere waarde. Dat werkte niet hetzij.
Ik was bonzen mijn hoofd tegen de muur. Ik heb 3 weken wijzigen en testen van de code totdat het eindelijk kwam naar mijn mening de beste manier om deze waarden te slaan: arrays. De vertraging die nodig zijn voor het volledig uitschakelen van de IR LEDs (2ms) plus de vertraging die nodig zijn om ze te zetten op (1ms) maken de perfecte interval om de waarden van de IR (100 waarden per array, 1 waarde per 3ms, 300ms van de waarden die zijn opgeslagen in elk array) te slaan. Met behulp van deze methode is het detectieproces gebaar een stuk verbeterd. Er zijn nu niet elke valse positieven en de "down" gebaar perfect wordt herkend. Dit was het belangrijkste doel: om een betrouwbare gebaar sensor terwijl het goedkoop en gemakkelijk op te bouwen.
De manier waarop het werkt is de volgende: The Arduino leest alle sensoren en, als een waarde groter dan 0 is dan wordt deze opgeslagen in de arrays. Wanneer er twee of meer elementen in deze matrices begint de Arduino op zoek naar een patroon in de IR-waarden om te bepalen welk type gebaar. Bijvoorbeeld: als de linker en onderkant links IR sensoren iets dan de booleans "rising_TL detecteren" en "rising_BL" gelden zal en de verwachte gebaar zullen 'east'. Na dat, als de bovenkant rechts en onderaan rechts IR sensoren iets detecteren maar de TL en BL niet (dus "decreasing_TL" en "decreasing_BL" gelden zal) dan het gebaar 'east' en de Arduino stuurt dit via de seriële poort.
Als u niet kunt dit proberen begrijpen te stellen uw hand verplaatsen van links naar rechts. Wanneer het hoger dan de linker sensoren die een heleboel IR licht blijken is zal, dus detecteren ze dat er iets boven hen is. Wanneer u uw hand bewegen blijven en het is vooral de juiste sensoren zal ze detecteren dat er iets boven hen, maar de linker sensoren zal niet speurder iets. Gebaseerd op dit de Arduino kan nauwkeurig vertellen het soort gebaar gemaakt.