Kirja   |  Artikkelit   |  Keskustelu   |  Tiedostot   |  Galleria
Hyönteisrobotti, kampanja.

Köyhän miehen peruutustutka

Riikka Lindroos

Tiimi: Jero Kostiainen Roope Kuikka Riikka Lindroos

Välineet: Arduino duemillanova, ultraäänisensori, 9v-patteri, summeri, 3 lediä(eri värejä), hyppylankaa, alle tuhat riviä kovaa koodia.

13.5.2010 Lähdimme ratkomaan projektia ensin yksinkertaisesti siitä että saimme ultraäänisensorin toimimaan, se onnistui helposti kun löysimme sopivan koodin. Sitten monimutkaistimme projektia niin että led-valo syttyisi kun mitattu matka on esim. 10Cm tai vähemmän. Kun saimme tämän vaiheen onnistumaan, yritimme saada sekä lediä että summeria toimimaan niin että led syttyisi kun matkaa olisi 10cm ja summeri menisi päälle kun matkaa on 5cm tai alle. Tätä emme saaneet toimimaan. Yllä olevalla koodilla saimme siis ainoastaan ledin tai summerin toimimaan kun etäisyyttä oli 10cm tai alle.

Opittua: Kiiltävällä pinnalla ultraäänisensorilla on vaikeuksia tunnistaa matkoja.

14.5. & 17.5. Emme edenneet projektissa mihinkään, vaikka käytimme aikaa siihen lukuisia tunteja.

18.5. Aloitimme projektin teon n. klo 11.45, mikään ei tuntunut aluksi toimivan. Lopulta saimme torstaina tehdyllä koodilla yhden ledin vilkkumaan. Olimme jo epätoivoisia, kunnes huomasimme että emme olleet määritelleet ledejä outputeiksi, kun teimme sen saimme projektin toimimaan jo huomattavasti paremmin. Lisäksi saimme apua Sulautetut-kirjassa esitellystä väijyvahti-projektin koodista.

Alla olevalla koodilla led-valo syttyy kun matkaa esteeseen on alle 20cm ja summeri aloittaa piipittämisen alle 5cm kohdalla.

Sorsa:

/*@author Riikka Lindroos

Köyhän miehen peruutustutkan koodi.
Ideana on että led-valo syttyy kun takana oleva este on
alle 10cm päässä ja summeri piipittää kun esteeseen on alle 5cm.
*/

float t=20; // kalibroidaan sensori toimimaan huoneenlämmössä.
int pingPin = 2; // sensorin data kulkee pinnissä 2.
int SummeriPin = 4; //Summeri on pinnissä 4
float limitCm = 20; // ensimmäinen raja-arvo on 20cm
float limitCm2 = 5; //toinen raja-arvo on 5cm
int ledPin = 5; //led-valo on pinnissä 5
float speedCmUs = 0; //annetaan speedCmUs:lle alkuarvoksi 0.

void setup()
{
  //määritellään sarjaportin nopeudeksi 115 200 bauhnia, ja led, summeri sekä sensori outputeiksi.
    Serial.begin(115200);
    pinMode(pingPin, OUTPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(SummeriPin, OUTPUT);
    float v=331.5+0.6*t;
    Serial.print("Speed of Sound in m/s is "); //tulostaa ensimmäisenä monitoriin että matkat ovat metriä sekunnissa.
    Serial.println(v, DEC);
    speedCmUs=v*100/1000/1000;

}
//sensorin asetukset.
float distanceCm() {
  pinMode(pingPin, OUTPUT); //sensori outputiksi
  digitalWrite(pingPin, LOW); //poispäältä
  delayMicroseconds(3);
  digitalWrite(pingPin, HIGH); //päälle
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);
  pinMode(pingPin, INPUT); //sensori inputiksi
  digitalWrite(pingPin, HIGH);
  long int roundTripTimeUs = pulseIn(pingPin, HIGH);
  return (float) roundTripTimeUs / 2 * speedCmUs; //laskee ja palauttaa matkan.
}

//varsinainen ohjelma
void loop ()
{
  Serial.println(distanceCm(), DEC); //tulostaa monitoriin matkan
  float dist = distanceCm(); //asetetaan että dist tarkoittaa distanceCm muuttujaa
  if (dist < limitCm) { //määritellään että jos dist on ensimmäistä raja-arvoa pienempi led-valo syttyy
    digitalWrite(ledPin, HIGH);
    Serial.println ("ledPin"); //monitoriin tulostuu ledPin-sana
  } else
  {
      digitalWrite(ledPin, LOW); //jos matka on suurempi kuin ensimmäinen raja-arvo ledpin ei pala.
  }
   delay (1000); // viive asetetaan 1 sekuniksi.

  {
      Serial.println(distanceCm(), DEC);
   float dist = distanceCm();
 if (dist < limitCm2) { //jos matka on piemepi kuin toinen raja-arvo summeri alkaa piipittää
   digitalWrite(SummeriPin, HIGH);
   Serial.println ("summeriPin"); //monitori tulostuu summeripin-sana
  }
  else {
    digitalWrite(SummeriPin, LOW); // jos matka on suurempi kuin ensimmäinen raja-arvo summeri on hiljaa.
  }
    delay (1000); //viive asetetaan 1 sekuniksi.
  }
}

peruutustutka.jpg

0

Comments

Post new comment

  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • Every instance heading tags will be modified to include an id attribute for anchor linking.
  • Every instance of "<!--tableofcontents-->" in the input text will be replaced with a collapsible mediawiki-style table of contents. Accepts options for title, list style, minimum heading level, and maximum heading level as follows: <!--tableofcontents list: ol; title: Table of Contents; minlevel: 1; maxlevel: 3;-->. All arguments are optional and defaults are shown.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Image links with 'rel="lightbox"' in the <a> tag will appear in a Lightbox when clicked on.
  • Image links from G2 are formatted for use with Lightbox2
  • Image links with 'rel="lightshow"' in the <a> tag will appear in a Lightbox slideshow when clicked on.
  • Links to video content with 'rel="lightvideo"' in the <a> tag will appear in a Lightbox when clicked on.
  • Links to inline or modal content with 'rel="lightmodal"' in the <a> tag will appear in a Lightbox when clicked on.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.
(Round corners at the bottom)