Elektroniikka ja ohjelmointi

Johdanto

Tehtävä: Aisti kosketusta ja etäisyyttä kapasitiivisella anturilla sekä testaa anturiin sopivia materiaaleja.

Arduinossa on sisäänrakennettu ominaisuus, jonka ansiosta on helppo toteuttaa maagisia efektejä liikuttelemalla kättä esineiden lähellä ja koskettamalla niitä eri voimakkuuksilla. Tässä tehtävässä tutustutaan kapasitiiviseen anturiin!

Kapasitiivisuus tarkoittaa kykyä varata sähköä ja luovuttaa sitä hitaasti. Tehtävässä kapasitiivisena sensorina voi käyttää alumiinifoliota tai jotain sähköä johtavaa ainetta kuten metalliesineitä, omenaa, sähköäjohtavaa muovailuvahaa tai pehmeän lyijykynän grafiittia.

Tehtävä pähkinänkuoressa:

  • Kytke iso vastus (aluksi 1 megaohmia) sekä sähköäjohtava esine virtapiiriksi. Kytke myös piezo ja LED.
  • Ohjelmoi Arduinon kapasitiivinen anturi toimintaan, jotta sillä voi muutella ääntä ja LEDin kirkkautta. Saat käyttää valmista koodia
  • Testaa erilaisia sähköäjohtavia materiaaleja anturin kanssa - millaisella materiaalilla syntyy mielenkiintoinen käyttötuntuma?
  • Vapaaehtoinen lisä: tutustu tehtävän lisämateriaaleihin ja kokeile soveltuvilta osin. Voit muuttaa anturin herkkyyttä lisäämällä vastusta, voit tuottaa valon ja äänen sijaan liikettä, tai voit ottaa käyttöön monta kapasitiivista anturia.
  • Jaa koodi ja materiaalikokeilut vertaisarviointitehtävässä.

Alla olevassa videossa sählypallon sisään on laitettu led. Pallon pinta on peitetty folioteipillä, joka on kytketty Arduinon virtapiiriin johdoilla. Koko pallo toimii kapasitiivisena anturina.

Tiesitkö että...
Kondensaattori on komponentti, jonka toiminta perustuu kapasitiivisuuteen eli kykyyn varastoida sähkövarausta ja luovuttaa sitä hitaasti. Kondensaattoreita käytetään tämän vuoksi muun muassa virtapiikkien tasoittamiseen virtapiireissä. Myös useimmat kosketusnäytöt perustuvat kapasitiivisuuteen. Kun painat näyttöä, sen kapasitanssi muuttuu ja siten painallus tunnistetaan.

Tarvikkeet

Mehackit-boardin tai Arduino UNOn, USB-johdon, kytkentäjohtojen ja -levyn lisäksi tarvitset:

OsaKuvaSelitys
Alumiinifoliota, metalliesineitä, banaani, omena, sähköäjohtavaa muovailuvahaa tms.Näitä käytetään tehtävässä sensorin tekemiseen! Voit käyttää mitä tahansa esinettä aluksi, esimerkiksi avainta tai lusikkaa.
vastuksia,
1 MΩ / 10 MΩ
yhden megaohmin vastus

Harjoitukseen tarvitaan suuri vastus. Ohjeessa käytetään 1 megaohmin vastusta (ruskea, musta, vihreä, kulta), ja sillä kannattaa aloittaa! Sopivia ovat myös muut vastukset joiden resistanssi on yli 300kΩ. Arduino Starter Kitin 10 megaohmin vastukset sopivat myös. Varaa lähelle useampia vastuksia, sillä näitä voi kytkeä sarjaan.

LEDkirkas lediAlun esimerkissä on käytetty kirkaskupuista, sinistä lediä, josta lähtee voimakas valo.
vastus, 330Ω tai 220Ω330 ohmin vastusVastus suojaa Arduinon porttia liian suurelta virralta. 330Ω tai 220Ω vastus on sopiva LEDin kanssa käytettäväksi
piezo-kaiutinsummerikaiutin Yksinkertainen summerikaiutin

Kytkentä

  • Yhdistä portit 2 ja 4 yhden megaohmin vastuksella toisiinsa ( jos mahdollista, aloita kokeilut juuri tällä vastuksella, vaikka sinulla olisi muitakin 200kOhm-10MOhm vastuksia).
  • Kiinnitä johto vastuksen jalan ja porttiin 2 menevän johdon välille. Yhdistä tämä uusi johto metalliesineeseen, alumiinifolioon tai vaikka hedelmään. Esine voi olla iso tai pieni - alumiinifolion kanssa voit testailla erikokoisia paloja. Käytä tarvittaessa teippiä, jotta johdon metallipää on tiiviisti kiinni esineessä.
  • Yhdistä piezo porttiin 7 ja maahan
  • Yhdistä LED porttiin 9 ja 330 ohmin vastuksella maahan.
kytkentäohjeet kapasiitiiviseen anturiin

Teippiä tai porkkanaa?

Folioteippi toimii tässäkin kokeilussa hyvin.

Johdonpään saa kätevästi työnnettyä vaikka porkkanaan.


Ohjelmointi 1/3: Kirjaston asentaminen

Vaihe 1

Ohjelmointi 1/3: Asenna tarvittava kirjasto

Lataa ja asenna kirjasto CapacitiveSensor, jotta saat kapasitiivisen anturin käyttöön. Kopioi tehtävässä annettu koodinpätkä ja lataa se Arduinolle. Kosketa virtapiiriin kiinnittämääsi esinettä ja kuuntele, millaisia ääniä piezosta kuuluu. Katso myös sarjamonitorista, millaisia arvoja kapasitiivisesta anturista tulee.

 

 

  1. Lataa tästä linkistä koneellesi zip-tiedostopaketti, joka sisältää kirjaston.
  2. Lisää zip-kirjasto valikosta Sketch (tai Sketsi) > Include library > Add .ZIP library... :
  3. Etsi lataamasi zip-paketti koneelta (esim. kansiosta Lataukset tai Downloads):

Kapasitiivinen anturi toimintaan

Maalaa ja kopioi allaoleva ohjelma. Mene Arduino IDEen ja poista koodi-ikkunasta kaikki siellä mahdollisesti näkyvä koodi. Liimaa tämä koodi tilalle.

//ks. koodin uusien osien selitys kurssimateriaalissa
#include <CapacitiveSensor.h>

long lukema;
CapacitiveSensor anturi = CapacitiveSensor(4, 2);


void setup(){
  Serial.begin(9600);
}

void loop() {
  lukema =  anturi.capacitiveSensor(30);
  Serial.println(lukema);
  delay(10);

  tone(7, lukema);
}

Lataa ohjelma Arduinolle ja koskettele virtapiiriin kiinnittämääsi esinettä. Piezosta kuuluvien äänien korkeus nousee kun kosket esineeseen. Äänenkorkeus muuttuu jo silloin, kun viet käden ihan lähelle esinettä.

Avaa sarjamonitori (serial monitor) ja tarkastele anturin lukemia. Lukemat nousevat aika korkeiksi kun anturiin kosketaan. Myös kosketuksen voimakkuudella on väliä!

Mitä uutta ohjelmassa tapahtuu?

  • #include <CapacitiveSensor.h>
    Komennolla lisätään lataamasi ja asentamasi anturikirjasto tähän ohjelmaan. Näin saat käyttöön valmiiksi ohjelmoituja komentoja, joilla kapasitiivista anturia on helpompi koodailla. Joku (tarkemmin sanoen Paul Badger ja Paul Stoffregen) on siis tehnyt paljon työtä jo valmiiksi, ja pyörää on turha keksiä uudestaan.
  • long lukema
    Tässä luodaan tuttuun tapaan muuttuja, johon on tarkoitus tallentaa anturilukemia. Muuttujan tyyppi ei nyt olekaan kokonaisluku (int, integer), vaan long! Tämä johtuu siitä, että anturilukemat saattavat olla hyvin isoja, jolloin ne voivat ylittää int-muuttujien maksimipituuden. Lisätietoa aiheesta linkin takana, Arduinon sivuilla.
  • CapacitiveSensor anturi = CapacitiveSensor(4, 2);
    Komennolla luodaan olio, jonka tyyppi on CapacitiveSensor ja nimi on anturi. Suluissa määritellään portit, joiden välistä mitataan anturilukemia (portit 4 ja 2).
    Olio-ohjelmointia ei tarvitse tällä kurssilla ymmärtää syvällisesti. Älä siis stressaannu jos koodirivi ei ihan nyt aukene!
  • lukema = anturi.capacitiveSensor(30)
    Tämä on eri komento kuin ylläoleva. Komento on peräisin asentamastasi kirjastosta, ja sillä mitataan anturin lukema (eli kapasitanssin suuruus). Mitattu arvo tallennetaan muuttujaan nimeltä lukema. Suluissa oleva numero kertoo mittauksessa otettavien näytteiden määrän - 30 on ihan hyvä ja riittävä.
  • tone(7, lukema)
    Tone-komento on jo vanha tuttu, mutta kertauksena: tone soittaa porttiin 7 kiinnitetyn piezo-kaiuttimen kautta sävelen, jonka korkeuden määrää komennon toinen parametri. tone(7, 440) soittaisi piezosta 440 Hz korkuisen äänen. Nyt äänenkorkeuden määrääkin anturista mitattu arvo, joka tallennettu muuttujaan lukema. Eli mikä ikinä anturin mittaama lukema onkaan, tone-komento saa tuon arvon ja käyttää sitä äänenkorkeutena.
Extra

Kokeile kertoa muuttuja lukema desimaaliluvulla väliltä 0-1 tai jollain kokonaisluvulla ennen kuin syötät sen tone-komennolle, esim. näin:

lukema = lukema * 0.6;
tone(7, lukema);

Miten ääni muuttuu?

ONGELMIA? Kurkkaa täältä vinkkejä ongelmanratkaisuun!


Ohjelmointi 2/3

Vaihe 2

Ohjelmointi 2/3: Valo päälle

Nyt säädetään LED kirkastumaan ja himmenemään kosketuksen mukaan! Komennolla analogWrite voidaan antaa LEDillä kirkkausarvoja välillä 0-255.  Jotta anturin lukemat voi syöttää LEDille, ne täytyy muuttaa välille 0-255 map-komennon avulla. Kirjoita tai kopioi uusi pätkä koodiin!
Psst: Jos piezo alkaa jo ärsyttää, nykäise siitä johto irti tai poista ääntä tuottavat komennot...

#include <CapacitiveSensor.h>

long lukema;
CapacitiveSensor anturi = CapacitiveSensor(4, 2);
int kirkkaus;

void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}

void loop() {
  lukema =  anturi.capacitiveSensor(30);
  Serial.println(lukema);
  delay(10);

  tone(7, lukema);
  kirkkaus = map(lukema, 0, 4000, 0, 255);
  if (lukema > 4000) {
     kirkkaus = 255;
  }
  analogWrite(9, kirkkaus);
}

Mitä uutta ohjelmassa tapahtuu?

  • kirkkaus = map(lukema, 0, 4000, 0, 255);
    Map-komennolla muunnetaan anturilukema sellaiselle välille, että sitä voi käyttää valon kirkastamiseen ja himmentämiseen. Tällä rivillä kerrotaan, että lukema joka voi olla välillä 0-4000, muunnetaan välille 0-255. Tämä uusi, muunnettu arvo tallennetaan muuttujaan kirkkaus.
    Sarjamonitorista kuitenkin näkyy, että anturilukemat voivat olla paljon isompia kuin 4000 - niillä ei ole selkeää ylärajaa. Jokin yläraja map-komennolle kuitenkin on annettava, ja tässä on valittu luku 4000. Voit toki testailla muillakin lukemilla! 
  • if (lukema > 4000)
    If-lause laittaa LEDin aina täydelle teholle (arvo 255), jos kapasitiivisesta anturista tuleva arvo on yli 4000. Ilman tätä if-lausetta LED voi palaa arvaamattomasti silloin, kun anturin lukemat menevät yli map-komennossa määritellyn alueen 0-4000. Jos tykkäät arvaamattomasta valosta, voit toki testata ohjelmaa ilman if-lausetta!
  • analogWrite(9, kirkkaus)
    Tämä tosi hyödyllinen Arduino-komento sopii LEDin kirkkauden vaihtelemiseen. Komennon ensimmäinen parametri on portti, ja toinen on LEDille syötettävä kirkkauden arvo, jonka on oltava välillä 0-255. Jotta komentoa voi käyttää, LED täytyy olla kytkettynä porttiin, jossa on merkki ~ (portit 3, 5,  6 sekä 9-11). Arduino voi mallintaa näiden porttien kautta analogista eli jatkuvaa signaalia. Mallintamismenetelmä on nimeltään pulssinleveysmodulaatio eli PWM, joka on selitetty tarkemmin Lisätietoa-osiossa

ONGELMIA? Kurkkaa täältä vinkkejä ongelmanratkaisuun!


Ohjelmointi 3/3: Kynnysarvo

Vaihe 3
Lisää loop-osaan ehtolause, jonka avulla LED saadaan pimeäksi ja ääni vaiennettua, kun sensorin lähellä ei ole kättä. Seuraa sarjamonitorista anturisi arvoja ja muuta kynnysarvoa tarvittaessa!
#include <CapacitiveSensor.h>

long lukema;
CapacitiveSensor anturi = CapacitiveSensor(4, 2);
int kirkkaus;

void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}

void loop() {
  lukema =  anturi.capacitiveSensor(30);
  Serial.println(lukema);
  delay(10);

   if (lukema > 100) { 

      tone(7, lukema);
      kirkkaus = map(lukema, 0, 1200, 0, 255);

      if (lukema > 2000) {
        kirkkaus = 255;
      }

      analogWrite(9, kirkkaus);

 } else {
      noTone(7);
      analogWrite(9, 0);
  }

}

Mitä uutta ohjelmassa on?

Ääntä kuuluu ja valoa näkyy vain silloin, kun anturi tuottaa lukemia jotka ovat yli kynnysarvon eli suurempia kuin 100.

Muulloin on hiljaista, sillä noTone(7) -komento vaientaa portin 7 ja analogWrite(9, 0) laittaa LEDin pois päältä kun lukema on alle 100.

ONGELMIA? Kurkkaa täältä vinkkejä ongelmanratkaisuun!


Oma anturi mielenkiintoisista materiaaleista

Nyt testaillaan!

Mitkä esineet johtavat sähköä, hyvin tai huonosti? Tutki, millaiset esineet ja materiaalit voi valjastaa antureiksi. Dokumentoi jokin kokeilusi valokuvalla ja liitä se tehtävän palautukseen.

Vinkkejä:

  • tutki, tunnistaako anturi kosketuksen lasin, puun tai muovin läpi: kokeile kiinnittää johdonpää folioteipillä tms. materiaalin toiselle puolelle. 

  • testaa nesteitä (varo kuitenkin kastelemasta Arduinoa) ja nestepitoisia juttuja kuten huonekasveja, multaa, hedelmiä.

  • kiinnitä anturi toiseen ihmiseen ja kosketa häntä. Tähän kokeiluun tarvitset kaverin, ei toimi yhdellä henkilöllä!

  • Tutki erikokoisia metalliesineitä. Miten anturi toimii jos sen kiinnittää isoon metallipintaan? 

  • Saat anturin herkemmäksi lisäämällä resistanssia - ks. seuraavan sivun ohjeet. Tällöin anturi voi havaita kosketuksen vähän paksummankin materiaalin läpi! 

  • Seuraile sarjamonitorin arvoja ja muuta map-komennon ja if-lauseiden lukemia tarvittaessa.

  • Jos anturi toimii oudosti, kurkkaa täältä vinkkejä ongelmanratkaisuun!


Anturi toimii paperin läpi

Johto ja sähköäjohtava folio on jemmattu kääntöpuolelle


Vapaaehtoisia lisäkokeiluja

Lisää herkkyyttä anturiin

Mitä suurempia vastuksia käytät, sitä kauempaa kapasitiivinen anturi havaitsee käden. Voit kytkeä peräkkäin useampia 1 megaohmin vastuksia - vaikka kaikki pakistasi löytyvät. Jos sinulla on 10 megaohmin vastuksia, testaa ihmeessä myös niitä!

Saatat joutua muuttamaan ohjelmasi kynnysarvoa kun virtapiirin resistanssi kasvaa - seuraile sarjamonitorin anturilukemia.

Useita vastuksia kytkettäessä Arduino saattaa alkaa toimia kummallisesti, sillä kapasitiivinen anturi on aika herkkä häiriöille. Kurkkaa täältä vinkit ongelmanratkaisuun.


Kokeile valon kirkastamista for-silmukalla

for-silmukka kuuluu ohjelmoinnin peruskikkoihin milteipä kielessä kuin kielessä. LMHI-elektroniikkapolulla for-silmukkaa ei käydä läpi, mutta voit tutkia sen toimintaa ihan vain kopioimalla allaolevan koodin sekä kurkkaamalla selitykseen linkin takana (johtaa Arduinon sivuille).

#include <CapacitiveSensor.h>

long lukema;
CapacitiveSensor anturi = CapacitiveSensor(4, 2);
int kirkkaus;

void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}

void loop() {
  lukema =  anturi.capacitiveSensor(30);
  Serial.println(lukema);
  delay(10);

  if (lukema > 100) { 

      tone(7, lukema);
      kirkkaus = map(lukema, 0, 1200, 0, 255);

      if (lukema > 2000) {
        kirkkaus = 255;
      }

      for (int i = 0; i < kirkkaus; i++) {
        analogWrite(9, i);
        delay(20);
      }
      analogWrite(9, 0);
      delay(500);

} else {
      noTone(7);
  }

}

Useampia kapasitiivisia antureita samaan projektiin

Useamman kapasitiivisen anturin kytkeminen ja ohjelmointi on aika suoraviivaista. Monella anturilla voi toteuttaa vaikka tällaisen kosketinsoittimen:

Kosketinsoittimen kytkentä on seuraavanlainen:

Ohjelmoitaessa vain määritellään lisää CapacitiveSensor-antureita ja tallennetaan jokaisen arvo omaan muuttujaan. Arvoja käytetään erilaisten toimintojen käynnistämiseen.

#include <CapacitiveSensor.h>

CapacitiveSensor sensor1 = CapacitiveSensor(4,2);
CapacitiveSensor sensor2 = CapacitiveSensor(4,3);        
CapacitiveSensor sensor3 = CapacitiveSensor(4,5);    
// ja niin edelleen

void setup(){
  // käynnistä sarjaliikenne 
}

void loop() {
  long sensorValue1 =  sensor1.capacitiveSensor(30);
  long sensorValue2 =  sensor2.capacitiveSensor(30);
  long sensorValue3 =  sensor3.capacitiveSensor(30);
  // jne.

  // tulosta sensorValue serial monitoriin
  // ohjelmoi 10 millisekunnin viive

  if (sensorValue1 > 100) {
  tone(7,440);
  } else if {
  }
  
  // ohjelmoi jokaisen anturin arvoille omat toiminnot. noTone(7); viimeisessä ehdossa hiljentää summerin.
}
Kuva: Kapasitiivisen soittimen koskettimet paperin alla

Kuva: Kapasitiivisen soittimen koskettimet paperin alla


Lisätietoa ja projektiesimerkkejä

Miten analogWrite toimii - eli mitä ihmettä PWM tarkoittaa?

Symbolilla (~) merkittyjä portteja voi käyttää ulostulona, jolla jäljitellään analogista signaalia. Porteille voi asettaa komennolla analogWrite arvoja, jotka ovat välillä 0-255. Esim:

analogWrite(5, 155); // portti 5 saa arvon 155

Analogisen signaalin jäljittely on nimeltään PWM (Pulse-Width Modulation eli pulssinleveysmodulaatio). 

Arduinon ulostuloina käytettävät portit 0-13 pystyvät tuottamaan vain 5V jännitettä tai 0 volttia - olemaan vain tilassa HIGH tai LOW. 

Kuinka sitten on mahdollista tuottaa vaihtelevaa valon kirkkautta?

Arduinon portit pystyvät vuorottelemaan 5V ja 0V välillä hyvin nopeasti

  • näin tapahtui, kun tuotettiin ääntä piezolla: äänenkorkeuden 440 Hz tuottamiseksi Arduino laittoi portin päälle ja pois 440 kertaa sekunnissa. Portti on tällöin yhtä pitkään päällä ja pois päältä.

Tämä ei kuitenkaan riitä, kun tarvitaan vaihtelevaa kirkkautta. PWM (~) -portit pystyvät paitsi menemään päälle ja pois hyvin nopeasti, myös vaihtelemaan sitä, kuinka pitkään portti on täysillä. 

Periaate tiivistettynä:

  • kun PWM-ominaisuutta käytetään analogWrite-komennolla, Arduino laittaa kyseisen portin päälle ja pois tosi nopeasti (490-980 kertaa sekunnissa)
  • Samalla Arduino päättelee analogWrite-komennon parametreista, kuinka pitkään jännite pidetään täysillä jokaisen päälle ja pois -kierroksen aikana. Kuten allaolevasta kuvasta näkyy, arvolla 64 portti on päällä 25% ajasta. Arvolla 127 portti taas on päällä puolet ajasta, arvolla 191 75% jne.
  • Tällä systeemillä led näyttää sitä kirkkaammalta, mitä suurempi arvo analogWrite-komennolle annetaan.

Voit lukea lisää pulssinleveysmodulaatiosta Arduinon sivulta.

Poikkeuksia PWM-porttien toiminnassa

  • Jos käytät tone-funktiota, porttien 3 ja 11 PWM-signaali ei toimi normaalisti (tone ja portit 3 + 11 käyttävät samaa sisäänrakennettua ajastinta)
  • Jos käytät Servo-kirjastoa, porttien 9 ja 10 PWM-signaali ei toimi. Kytke siis servot portteihin 9 ja 10, jos haluat hyödyntää projektissasi myös PWM-toimintoa.
  • Porteissa 5 ja 6 on suurempi taajuus (980Hz) kuin muissa PWM-porteissa (490Hz). Tästä voi seurata, että esimerkiksi analogWrite(5, 0) ei pimennä lediä täysin vaan siitä voi vielä tulla vähän valoa.

Kuinka kapasitiivinen anturi toimii?

Arduinon kapasitiivisessa anturissa yksi portti (esimerkeissä 4) toimii lähettäjänä ja toinen vastaanottimena. Vastaanottajaportti mittaa, kuinka kauan kestää, että lähettäjästä tuleva sähkövirta pääsee perille. Signaalin kulkuun kuluva aika riippuu virtapiiriin kytketyn sähköäjohtavan aineen ja sitä koskettavan käden aiheuttamasta kapasitanssista, eli kyvystä varastoida sähkövarausta. 

Jos käyttöön on otettu useita kapasitiivisia antureita, lähettäjäportti voi olla sama näille kaikille.

Kapasitiivisen anturin ja kirjaston toiminta (Arduinon sivuilla)


Oheisessa työssä on yhdistetty sähköäjohtavalla maalilla tehty maalaus, Arduinon kapasitiivinen anturi sekä maalaukseen projisoidut Processing-animaatiot. Arduinon vastaanottama anturidata voi ohjata Processing-ohjelmaa sarjaliikenteen avulla

Arduinon avulla on siis mahdollista toteuttaa aika hienostunutta vuorovaikutusta! 

Awake - An Interactive Painting from Sofia Aronov on Vimeo.


Tähän projektiin tarvitaan hyvin suuria vastuksia - mitä suurempi resistanssi, sitä kauempaa anturi havaitsee käden:


Käden sijainnin tunnistaminen

Tekstitykset

hi I'm Nick with make this weekend project we're going use simple materials to make something rather amazing a 3d computer interface made of cardboard and aluminum foil that can track the position of your hand I know it sounds crazy but you really got to check this project out here's the finished project in action as you move your hand through the sensor cube the colored sphere follows along on the screen impossible you say here's how it works each plate acts like a capacitor that can store a charge when a voltage is applied to it each plate is attached to a different pin on the Arduino which provides the voltage and current to charge the plate as your hand approaches the plate your body electrically couples with the plate and changes its capacitance the higher the capacitance the longer it will take for the plate to fully charge the software on the Arduino measures the time it takes for the plate to charge the change in the charge time corresponds to the hands distance from the plate by adding a plate for each dimension and measuring them in turn we can establish the hands position in three dimensions you will need the following parts for this build you will also need and these tools start with three cardboard squares about twelve inches square attach three similar sized pieces of aluminum foil to one side of each square with spray glue or glue stick work slowly and make sure to leave a small gap around the edge of the foil it is important that the foil plates do not touch each other when we tape the three sides together using tape assemble the plates to form one half of a cube next we need to prepare the wiring it is important to use shielded wiring so that the cable itself doesn't act as an antenna and skew your sensor readings cut the wire into three two foot lengths strip off the outer and inner insulation on one end trim the shielding wire and connect just the inner signal wire to an alligator clip repeat for each length of wire on the other non alligator clip end of the cables twist the three shield wires and solder them together the shield will be connected to the 5 volt pin on the Arduino which will minimize the antenna effect of the cable on the circuit as shown in this schematic each plate connects to an Arduino pin through a 10k resistor in addition each plate will have a 220 K pull-up resistor in turn each plate will be charged and then discharged through these resistors twist connect a 10k resistor to the inner signal wire of each cable as shown then twist connect a 220 K resistor to each signal wire and solder both resistors to each wire twist and then solder the three 220 K resistors together then solder a piece of jumper wire from the shield wire to these resistors then add a second jumper wire from this Junction the wires are now ready to connect to the Arduino connect the three 10k resistors two pins eight nine and ten connect the jumper wire to the 5 volt pin on the Arduino attach each of the alligator clips to a foil plate the clips should be attached in the following order pin eight to the left or ex plate pin nine to the bottom or Y plate and pin 10 to the right or Zi plate make sure that each clip is making good electrical contact with the foil and is only touching one plate now the sensor cube is ready and all you need to do is upload the Arduino sketch download the Arduino and processing sketches from the how to on make projects you'll also need the processing and Arduino development environments which can be downloaded from their respective websites from the arduino ide upload the sketch to the arduino keep the USB cable connected to the arduino then install and load the processing sketch it is important that the Arduino is properly grounded for this to work properly make sure your computer is plugged into the wall not running on battery the next thing to be done is calibrate the software with the processing sketch running hold down the left mouse button then move your hand from the far outer diagonal corner to the inner corner don't touch the foil just move your hand through the space defined by the cube now release the mouse button the path your hand traveled gives the software a chance to detect the range of motion your hand will make inside the cube now everything should be set as you move your hand around inside the cube the sphere should follow your movement this project shows you one way you can use a microcontroller to turn very simple materials into capacitive sensors the same techniques can be used to make your own touchscreens or turn pennies into switches try it and you'll see how a simple idea can yield surprising results you

Ongelmia kapasitiivisen anturin kanssa?

Kapasitiivinen anturi on herkkä häiriöille. Joskus anturin arvot jäävät kosketuksen jälkeen omituisen korkealle, esimerkiksi jos anturia koskee pitkään tai jos kytkentöjä muutetaan virran ollessa päällä. Voit kokeilla seuraavia toimenpiteitä:

  • resetoi Arduino tai ota siitä virrat pois

  • lisää setup-osaan komento:
    anturi.set\_CS\_AutocaL\_Millis(300);
    Tämä komento pakottaa anturin kalibroimaan itsensä 300 millisekunnin välein.

  • maadoita anturi: laita sen alle reilu pala foliota ja yhdistä folio lattiaan tai esimerkiksi pöydänjalkaan johdolla. Laita foliopalan ja anturina toimivan esineen väliin eristykseksi paperia.

  • kommentoi Serial.begin ja Serial.println -komennot pois päältä koodistasi

  • Anturi toimii eri lailla riippuen siitä, onko Arduino kiinni ulkoisessa virtalähteessä vai tietokoneessa. Jos tietokoneen virtalähde ei ole seinässä, kokeile kytkeä se!

Jos anturi ei toimi yhtään, tarkista kytkennät - esim.  anturin johto (kaaviossa lila) täytyy olla porttiin 2 menevän johdon kanssa samassa rivissä. 


Ongelmanratkaisu

Eikö Arduino toimi niin kuin halusit? Ei hätää - tämä on ihan tavallista myös kokeneille Arduino-värkkääjille. Käy läpi seuraava tarkistuslista, yleensä vika on jokin näistä!

  • Onko Tools- eli Työkalut-valikossa, kohdassa Port (Portti) valittuna se Arduinoon viittaava portti?
  • Onko Tools- eli Työkalut-valikossa, kohdassa Board valittuna Arduino/Genuino UNO?
  • Onko koodissa ja kytkennöissä varmasti käytetty samaa Arduino-porttia?
  • Ovatko puolipisteet oikeilla paikoillaan?
  • Onko jokaisella kaarisulkeella ja tavallisella sulkeella pari?
  • Jos kopioit koodia IDEen: onko koodiin tullut vahingossa 2 setup- tai loop-osaa? Niitä saa olla vain yksi kumpaakin.
  • Koodissa saa olla vain oikeinkirjoitettuja komentoja sekä kommentteja ( //mitä vain tekstiä kahden kauttaviivan jälkeen). Oletko vahingossa poistanut kauttaviivoja kommenttien edestä?
  • Oletko kirjoittanut isot ja pienet kirjaimet kuten esimerkissä?
  • Oletko käynyt läpi kytkemäsi johdot - että johdot on kytketty samalle kytkentäalustan riville kuin komponentit?
  • Oletko kokeillut irrottaa USB-johdon ja kiinnittää sen uudelleen? Oletko kokeillut kytkeä Arduinon eri USB-porttiin? Huom: tämän jälkeen tarkista portti Tools-valikosta.
  • Oletko resetoinut Arduinon pienestä napista laitteen päällä? Tämä käynnistää laitteelle ladatun ohjelman alusta.
  • Eihän sinulla ole komponentteja kytkettynä portteihin 0 tai 1? Nämä portit tarvitaan joskus Arduinon ja tietokoneen väliseen tietoliikenteeseen, mikä voi välillä sotkea asioita.
  • Kokeilitko etsiä Arduino IDE:n tuottamalla virheilmoituksella ohjeita netistä?