2010.12.04.
21:14

Írta: harsanyireka

sharp infrás távolságszenzor RGB LEDdel

Sharp GP2Y0A21YK infravörös távolságszenzor:

Ez a szenzor háromszögeléses módszerrel működik. Egy keskeny infravörös fényt bocsát ki, ami visszaverődik a tárgyakról. Ezt egy érzékelő egy optikával leképezi egy CCD-re. A távolságtól függően más szögben érkezik meg a visszavert fény, tehát más CCD pixelre érkezik, ebből számolja ki a tárgy távolságát.

 

Kód:

 /*

Sharp infra távolságszenzor, RGB LED-del.

Több változót definíálunk, és külön írjuk le a fügvényeket.

*/

 

int avgFactor = 5; //meghatározza a kiolvasások számát, a többszöri kiolvasás lassabb, de pontosabb

int runningTotal; 

int distRead; 

int distAvg; //kiolvasott távolság átlaga

int i;

 

int ledR = 9;       // piros

int ledB = 10;      // kék

int ledG = 11;      // zöld

int sharpIR = 2;    // Sharp IRED kimenet az Analog 2 pin

 

 

void setup()

{

  Serial.begin(9600);

  testLED(); //függvény, minden szín fél másodpercet világít majd kikapcsol

}

 

 

void loop()

{

runningTotal = 0;

distRead = 0;

distAvg = 0;  

  getDist(); //integer, szenzorból kilvasott számérték

  colorLEDs(distAvg); //függvény

}

 

 

//==========================================================================================

// FÜGGVÉNYEK

//==========================================================================================

//==========================================================================================

// kiolvassuk a távolságot a Sharp infravörös szenzorból

//==========================================================================================

int getDist()

{

  for (i=0; i < avgFactor; i++)

  {

    distRead = analogRead(sharpIR);

    runningTotal += distRead;

    //// kimenet megállapítása:

    //Serial.print("i = ");

    //Serial.println(i, DEC);

    //Serial.print("runningTotal = ");

    //Serial.println(runningTotal, DEC);

  }

  distAvg = (runningTotal / avgFactor);

  //// kimenet megállapítása:

  //Serial.print("distAvg = ");

  //Serial.println(distAvg, DEC);

  return distAvg;

}

 

//==========================================================================================

// függvény: ami a távolság függvényében változtatja a színt

//==========================================================================================

void colorLEDs(int)

{

  if (distAvg >= 500)  //ha a távolság > 500 bekapcsolja a pirosat

  {

  redLED();

  }

  else if ((distAvg >= 200) && (distAvg < 500))  //ha 200 < távolság > 500, sárgát bekapcsolja

  {

  yellowLED();

  }

  else if (distAvg < 200)  //ha a távolság < 199, akkor a zöldet bekapcsolja

  {

  greenLED();

  }

}

 

//==========================================================================================

// függvény: teszt, mindegyik szín fél másodpercig ég:

//==========================================================================================

void testLED()

{

  redLED();

  delay(500);

  yellowLED();

  delay(500); 

  greenLED();

  delay(500);

  offLED();

}

 

//======================================

// LED szín függvények

//======================================

// piros világít

void redLED() {

  analogWrite(ledR, 0);

  analogWrite(ledB, 255);

  analogWrite(ledG, 255);

}

 

// sárga világít

void yellowLED() {

  analogWrite(ledR, 70);

  analogWrite(ledB, 240);

  analogWrite(ledG, 10);

}

 

// zöld világít

void greenLED() {

  analogWrite(ledR, 255);

  analogWrite(ledB, 255);

  analogWrite(ledG, 0);

}

 

// kikapcsol:

void offLED() {

  analogWrite(ledR, 255);

  analogWrite(ledG, 255);

  analogWrite(ledB, 255);

}

 

Szólj hozzá!

Címkék: szenzorok

A bejegyzés trackback címe:

https://harsanyireka.blog.hu/api/trackback/id/tr692493452

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása