torstai 2. kesäkuuta 2016

Haptiikka ja ”valkoinen keppi”

Haptiikka on tuntoaistiin perustuvaa aistimista. Lainaus Wikipediasta: Tuntoaistilla eli kosketustunnolla eli paineaistilla tarkoitetaan aistitoimintoa, jolla aistitaan painetta ja hahmotetaan kosketusta, terävyyttä, pehmeyttä, lämpötilaa, kipua ja kehon asentoja.

Tämä sovellus vaikuttaa lähinnä kipuaistiin, mutta niin hellästi, että kieli tuntee sen lähinnä kutituksena. Kielianturiin syötetty 5V:in pulssi on niin matalajännitteinen ja lyhyt, että se ei tunnu kipuna. Tietysti kokemuksessa täytyy olla yksilöllisiä eroja. Huomasin pöydällä laktrisapaloja, joten keksin kääriä elektrodit lakupalan päihin, joten samalla sai ”palkinnon”, sain suun magiaks’. Oleellinen tavoite on tuoda esiin käskyn pulseIn(Pin, HIGH/ LOW) (= pulse In, In isolla iillä) toiminta. Sen avulla voi suurella resoluutiolla mitata, kauanko digitaalipinni on alhaalla / ylhäällä.
Digitaalitekniikkassa on tähän aistiin liittyvien tuotteiden kehitys voimakkaan kehityksen kohteena. Tähän mennessä olemme voineet keskutella puheella etäällä olevan henkilön kanssa ja nykyään mukana on myös kuva. Siis kuulo ja näköaisti ovat nykytekniikalle jo arkipäivää. Ei varmaankaan (näin kuvittelen) mene enää montakaan vuotta, kun voimme aidon tuntuisesti kätellä toisella mantereella olevaa ystävää ja tehdä virtuaalilasit päässä yhteisen patikkaretken vaikkapa vuoristoon.
Mutta nyt laskeudun takaisin alavalle pinnalle. Verenpainemittari hajosi. Siinä paine muutetaan sähköiseksi signaaliksi pietsosähköisellä elementillä. Tässä elementissä mekaaninen puristus tai vääntö saa aikaan sähköjännitteen elementin napoihin. Arkisempi esimerkki ilmiöstä on sytkäri, missä on useita pietsokiteitä sarjassa (kunkin jännite kytkeytyy myös sarjaan) ja vasaran naksahtaessa elementtipinoon, syntyy kipinä, joka sytyttää kaasun, ja savukkeen voi sytyttää (toivottavasti kuitenkin tuuli sammuttaa liekin sitä ennen, jotta keuhkot säilyvät terveempinä).
Toiminto toimii toisinkin päin. Kun elemettiin tuodaan jännite, muuttaa kide muotoaan. Päivittäin törmäämme (tiedostamatta) ilmiöön esim. kännykän yhteydessä. Niissä on tarkkaa taajuutta ja aikaa muodostamassa värähtelevä kide. Arduinossa se näyttää tekevän 16 000 000 (16MHz) heilahdusta sekunnissa. Tavoittelin tuon mittarin elementin irroittamisella juuri tätä. Tarkoitukseni oli side silmillä ”tutkailla” ultraäänianturilla (HC-SR04) ympäristöä ja viedä näin saatu (jalostuksen jälkeen) signaali kehoon teipattuun pietsoelementtiin, jonka värähtelyn voisi tuntea iholla. Anturi toimi, mutta ei tarpeeksi voimakkaasti nyt käytettävissä olevilla jännitteillä (esim. 5V). Ajatus oli hylättävä. Onneksi muistin kuinka lapsena kielenpäällä kokeiltiin, vieläkö litteässä taskulampun paristossa oli ”virtaa” (oikeasti jännitettä 4,5V). Pitääpä siis hyödyntää kielen herkkää tuntoa.
Tähän mennessä tuo oli vasta ensimmäinen erehdys. Lisää oli tulossa! Ultraäänianturi (tämä tyyppi HC-SR04) toimii siten, että lyhyellä posittivisella pulssilla (OUT) trikataan anturia ja seuraavaksi toinen (IN) pinni asettuu HIGH (1) kaikua vastaavaksi ajaksi. Arduinon sisäinen laskuri päivittyy aikaan verrannollista pulsseita. Pulssiluku on suuri ja muuttujan täytyy olla unsigned long. Ääni kulkee ilmassa 340m sekunnissa. Ultraäänipulssi ottaa siis aikaa mennäkseen ja heijastuakseen takaisin. 

Tämän toiminnon aikana Arduino ei suorita mitään muuta ohjelmaa. Ennen kuin hoksasin tämän, oli kokeilussa kulunut paljon aikaa. Lakupala ehti hyvin liueta loppuun. (Tosin pureskelin sen siinä pähkäillessä.) Alkuperäiseen kuvitteluun nähden ohjelmasta tuli paljon yksinkertaisempi. Kaikki kielianturin pulssitukseen liittyvä laskenta jäi pois. Kaiusta muodostui luonnollinen viive. Sitä pidempi, mitä enemmän edessä on vapaata tilaa. Sekvenssillä hallitaan perusjksoa (noin 2s pulssiväli) ja kaiulla (eli lasketuilla pulsseilla) ohjelman kiertoaikaa. Tällöin kieli saa sykäyksen harvakseltaan, kun edessä on paljon tilaa ja ”sähköiskut” kiihtyvät, kun välimatka esteeseen lyhenee. Huoneissa tämä toimii hyvin, mutta ulkona tarvitaan kyllä muutakin (esim. GPS), tai joutuu helposti eksyksiin.


Ohjelma 21
/***************************************
 *  Ohjelma 21
 *  02.06.2016
 *  Haptiikka ja "valkoinen keppi"
 **************************************/

// Määrittelyt
const int Con_Pulssi = 8;
const int Con_Kaiku = 9;
unsigned long Ulo_Kesto1 = 0;
const int Con_LED13 = 13;
const  int Con_Hapti = 2;
int Seq_Pulssitus = 1;
const int Con_PulssiVali = 30;
int Int_PullsiVali = Con_PulssiVali;


// ASETUKSET:
void setup(){                 
 Serial.begin(9600);         
pinMode(Con_Pulssi, OUTPUT);
pinMode(Con_Kaiku, INPUT);
pinMode(Con_LED13, OUTPUT);
pinMode(Con_Hapti, OUTPUT);
}// Asetuksen loppu

// PÄÄLOOPPI        
void loop(){

// Paluupulssin pituuden mittaus
    digitalWrite(Con_Pulssi, HIGH);
    digitalWrite(Con_Pulssi, LOW);
     Ulo_Kesto1 = pulseIn(Con_Kaiku, HIGH); // Mittausjakso

// Muunnos anturille
switch (Seq_Pulssitus) {
  case 1:
    Int_PullsiVali = Con_PulssiVali;
     Seq_Pulssitus = 2;
    break;
  case 2:
    Int_PullsiVali--;
    if(Int_PullsiVali == 0){
      Fun_Pulssi();
      Seq_Pulssitus = 1;}
    break;
 } // Pulssisekvenssin loppu

delay(1);
} // Pääohjelma LOPPU

void Fun_Pulssi(){
  digitalWrite(Con_Hapti, HIGH);
  digitalWrite(Con_LED13, HIGH); 
  delay(30);
  digitalWrite(Con_LED13, LOW);
  digitalWrite(Con_Hapti, LOW); 
} // Aliohjeman loppu


Ei kommentteja:

Lähetä kommentti