DIY Arduino 3D IR gest Sensor (2 / 6 steg)
Steg 2: Hur det fungerar
När jag började detta projekt var svåraste att hitta nu att lagra ett värde och jämföra med det aktuella IR värdet att avgöra vilken typ av gest. Vid första jag sparat ett värde varje 100ms, men det var mycket felaktiga. Det hade en hel del falska positiva resultat, särskilt när man gör en "down" gest. Så jag gjorde ett sätt att automatiskt justera känsligheten baserat på det högre värdet. Det fungerade inte heller.
Jag banka huvudet mot väggen. Jag tillbringade 2 veckor ändra och testa koden tills det slutligen kom till mig det bästa sättet att förvara dessa värden: matriser. Fördröjningen behövs för att helt stänga av IR-lysdioder (2ms) plus den försening som behövs för att aktivera dem (1ms) gör det perfekt intervallet för att lagra IR värden (100 värden per array, 1 värde per 3ms, 300 MS av värden som lagras i varje array). Med hjälp av denna metod har identifieringsprocessen gest förbättrats mycket. Det finns inte någon falsk positiv nu och "down" gesten känns perfekt. Detta var huvudmålet: att göra en tillförlitlig gest sensor och samtidigt hålla det billigt och enkelt att bygga.
Hur den fungerar är följande: The Arduino läser alla sensorer och, om något värde är större än 0 sedan lagras i matriserna. När det finns två eller flera element i dessa matriser Arduino börjar leta efter ett mönster i IR värden att avgöra vilken typ av gest. Till exempel: om den övre vänstra och nedre vänster IR-sensorer upptäcker något då booleans "rising_TL" och "rising_BL" kommer att vara sant och förväntade gesten blir "österut". Efter det, om den topp rätt och botten rätt IR-sensorer upptäcker något men TL och BL inte (så "decreasing_TL" och "decreasing_BL" kommer att vara sant) då gesten är "österut" och Arduino skickar detta över den seriella porten.
Om du inte kan förstå denna försök att föreställa sig handen rör sig från vänster till höger. När det är ovanför den vänstra sensorer mycket IR ljus återspeglas, således upptäcker de att det finns något ovanför dem. När du hålla flyttanden din hand och det är ovanför höger sensorerna kommer de upptäcker att det finns något ovanför dem, men vänster sensorerna kommer inte upptäcka något. Baserat på detta Arduino vet exakt vilken typ av gest gjort.