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.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGNzEwOj1uUe46E-Tc7N0YzWfRbCHOHRMOXgDXWQibopD2w7U-DM6kL_xP-A-nesBvFlG5H53GbqlVuF-zGghRfL5AJPcbg7GpLS0RQ5GZijuT0ihUnGHTS0c0lzOKGSlLA8Uo4DgH-GEx/s200/Pietso12mp.jpg)
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.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidYF8EnEICLWIDK_U5Umgi2aR-iC2wzaQxvY3edNgHxPbW-0aRaGEdIX09EtfxXJW7V7fzbCbRwHDhgWym1FtGMtQyyZwDGnbQfO_yTkGsgABPASgLaos3Z5eQE9J_5j1vRCtglseWVnWs/s200/Hapti11p.jpg)
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