Tehtävänanto:

 

”Tehtävä 2: Kokeile ultraäänisensoria ja valoisuussensoria. Tee if-lauseilla koodia, jos osaat, joilla pyydystät todennäköisiä virhearvoja. Ota tapaukseksi vaikka todeta heiluuko käsi sensorin edessä Dokumentoi kytkentäsi huolella, joko käyttäen Fritzing ohjelmaa (mieluiten) tai sitten piirtämällä. Opettaja haluaisi todeta, ketkä oppivat piirtämään ko. työkalulla. Tee vaaditut kytkennät ultra-äänisensorille.”

 

 

                      Lähdimme liikkeelle luonnollisesti itse laitteen kasaamisella. Internetistä löytyi hyvin ohjeita siihen kuinka kasata tämä yksinkertainen laite, ja pian vehje olikin jo valmiina.

DSC_0004.jpg

                      Tämän jälkeen täytyi luonnollisesti kirjoittaa ohjelma ja ladata se laitteelle. Turvauduimme jälleen internetin apuun, sillä tietotaitomme Arduinolle koodamisessa on melko rajallista. Hyvät ohjeet löytyivät jälleen helposti, tällä kertaa osoitteesta http://www.tautvidas.com/blog/2012/08/distance-sensing-with-ultrasonic-sensor-and-arduino/.

 

                      Jätettyämme koodista pois tuumamitat, lisättyämme maksimi- ja minimietäisyydet sekä yhden if-lauseen ohjelma näytti seuraavalta:

 

int maximumRange = 200;
int minimumRange = 0;

const int trigPin = 2;
const int echoPin = 4;

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

void loop()

{
  
long duration, cm;
  
pinMode(trigPin, OUTPUT);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  pinMode(echoPin, INPUT);
  
duration = pulseIn(echoPin, HIGH);

  cm = microsecondsToCentimeters(duration);
  if (distance >= maximumRange || distance <= minimumRange) {
    Serial.println("VIRHE!");
  }
 else {

  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(1000);
}

long microsecondsToCentimeters(long microseconds)

{
  return microseconds / 29 / 2;
}

 

 

                      Ohjelma siis käskee ultraäänisensoria lähettämään 10 mikrosekunnin ajan signaalia ja mittaamaan kauanko signaalilla kestää palata takaisin. Ohjelma myös muuttaa mikrosekunnit senttimetreiksi ja tulostaa ne ”serial monitoriin” sekunnin välein. Jos taas kohde on liian kaukana tai liian lähellä (määritellään heti ohjelman alussa maximumRange ja minimumRange) tulostaa ohjelma virheilmoituksen.

 

                      Ohjelma ja laitteisto toimivat hyvin. Sensori reagoi etäisyyden muutoksiin melko rankoilla poikkeamilla, mutta tasaantui nopeasti. Signaalien tai niiden välien pituudella ei tuntunut olevan suurta merkitystä mittaustuloksen kannalta. Alla vielä kuva kytkennöistä:

Shotti1.jpg