Ladda ner artikeln på 500 kbyte här (länk, pdf). Fler tekniska rapporter finns på etn.se/expert |
Ta som exempel fyra kapacitiva närhetssensorer arrangerade enligt Figur 1 runt ett infotainmentsystem i en bil. En enkel gest kan exempelvis vara en hand som ritar en rak linje i luften genom att dra från vänster till höger över sensorerna.
Under handens färd aktiveras vänster sensor först så snart handen närmar sig systemet. När handen fortsätter att passera över konsolen aktiveras den övre och nedre sensorn samtidigt som den vänstra sensorn förblir aktiverad. När handen rör sig närmare den högra sensorn aktiveras även denna. Den vänstra sensorn slutar känna av handen när handen har förts utanför dess avkänningsområde. När handen förs över den högra sensorn känner den övre och nedre sensorn inte längre av handens närvaro. När handen förs längre bort kommer inte heller den högra sensorn att känna av handen.
Om vi tittar på sensorernas aktiveringsordning kommer ett av nedanstående sekvenser att uppstå, beroende på handens position och de enskilda sensorerna känslighet:
Vänster övre nedre höger
Vänster nedre övre höger
Vänster nedre höger
Vänster övre höger
Alla de ovanstående sensoraktiveringssekvenserna är kopplade till samma vänster-höger-gest. I det här fallet används en PSoC för att implementera de kapacitiva närhetssensorerna. En kapacitans-till-digital-omvandlare (CSD, Capsense Sigma Delta) i PSoC:en används för att mäta kapacitansen. Utdata från CSD-modulen kallas rawcount. Ju högre rawcount, desto större kapacitans. Närvaron av en hand ökar sensorns kapacitans.
När rawcount för en sensor överstiger ett visst tröskelvärde säger vi att sensorn aktiveras av ett objekters närvaro. Rawcount- mönstret för de fyra sensorerna när en hand rör sig i en rak linje från vänster till höger visas i figur 1. Mönstret anger ordningsföljden för sensorernas aktivering. Om handen förs i motsatt riktning (höger till vänster) blir sekvensen den omvända, det vill säga en av nedanstående:
Höger övre nedre vänster
Höger nedre övre vänster
Höger nedre vänster
Höger övre vänster
De ovannämnda gesterna innefattar horisontella handrörelser. En vertikal linjeriktning analyseras på motsvarande sätt.
Gesterna upp-ner och ner-upp kan kopplas till enkla åtgärder som till exempel att rulla upp eller ner en meny eller en låtlista. Vänster-höger och höger-vänster kan kopplas till att byta till nästa låt eller skiva på en musikspelare. Samma gester kan även användas istället för knapptryckningar för att sätta på eller stänga av innerbelysningen i en bil genom att sätta upp närhetssensorer så som figur 2 visar.
En gest uppifrån-ner liknar upp-ner-rörelsen i en knapptryckning. När en upp- eller ner-knapp hålls nertryckt fortsätter dock skärmen att rulla upp eller ner så länge knappen hålls nertryckt. Med andra ord fastnar åtgärden så länge knappen är nertryckt. För att ersätta denna knapptryckning med en gest måste gesten kunna efterlikna också denna funktion.
Vi modifierar gesten enligt nedan för att åstadkomma detta. När handen förs från den övre sensorn och neråt mot den nedre sensorn tolkar systemet detta som en uppifrån-ner-gest så fort handen förs förbi den nedre sensorn. Vi kan modifiera gesten så att nedrullningskommandot skickas så snart handen når den sista sensorn i gestens sekvens, i det här fallet den nedre sensorn. Dessutom upprepas kommandot så länge handen förblir närvarande över den nedre sensorn.
När den önskade menyposten nås, förs handen längre ner och bort från den nedre sensorn, varpå nedrullningskommandot avbryts. Så för att göra den här ihållande gesten för vi inte bort handen från systemet direkt, utan stannar handen över den sista sensorn, innan vi för bort den från sensorns avkänningsområde. Kommandot upprepas så länge handen stannar över sensorn.
Rawcountmönster för övre och nedre sensor för den här fastnande uppifrån-ner-gesten visas i figur 3. Den nedre sensorn förblir aktiverad efter att den övre sensorn har slutat känna av handen. Det indikerar att handen har stannat vid den nedre sensorn istället för att fortsätta rakt ner. För att ge det låsande kommandot kontrollerar vi om den övre sensorn aktiverades först, följt av aktivering av den nedre sensorn. Den övre sensorn känner sedan inte av handen medan den nedre sensorn fortfarande gör det.
Om handen stannar i närheten av den nedre sensorn under en viss bestämd tid, utfärdas det låsande kommandot så länge som den nedre sensorn känner av handen.
På liknande sätt kan andra gester modifieras för låsande funktioner vilket betyder att gester helt kan ersätta knappfunktionerna upp och ner.
Handen kan föras i ett cirkelmönster medsols eller motsols över sensorerna med början på vilken sensor som helst. Cirkeln är sluten när handen når den sensor som den började på och sedan tas bort från cirkeln. Handen kan till exempel föras över den högra sensorn och sedan föras medsols över den nedre, vänstra och övre sensorn i den ordningen, innan den förs bort från cirkeln igen över den högra sensorn. På motsvarande sätt kan en cirkel slutas motsols. Även upprepade rotationer i flera varv i en och samma gest, kan kännas av och räknas.
Cirkelgesten liknar rörelsen när ett reglage vrids. Detta kan kopplas till kommandon som att höja eller sänka volymen på en musikspelare eller zooma in eller ut på en karta.
I den här artikeln har vi diskuterat avkänning av enkla handrörelser med hjälp av kapacitiva närhetssensorer. Med samma principer kan vi bygga mer komplexa gester där båda händerna används för att teckna ett mönster i luften. Huruvida man lyckas med avkänningen av sådana gester beror dock fortfarande på hur bra sensormönstret sätts ut. Det är viktigt att välja ett lämpligt mönster som tillåter tolerans i handrörelsen när gester tecknas, samtidigt som det finns en tydlig distinktion i den ordning i vilken sensorerna aktiveras.