Pokazywanie postów oznaczonych etykietą HC-SR04. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą HC-SR04. Pokaż wszystkie posty

wtorek, 16 sierpnia 2011

Czujnik ultradźwiękowy odległości HC-SR04 ze wskaźnikiem led



W kolejnym projekcie wykorzystałem diody LED... każda z nich to 5cm odległości... 8 diod to jakieś 40 cm. Poniżej 5 cm wyłączają się wszystkie. skrypt pisałem sam... he he i działa... z pewnością można napisać go lepiej ale jak na moje umiejętności to i tak wydaje mi się że nieźle... jeżeli ktoś ma jakiś lepszy pomysł to proszę o sugestię. Może kiedyś jeszcze do tego wrócę :).

int impuls = 2;
int sonar = 3;
long czas, cm;

const int ledCount = 10;
int ledPins[] = { 4, 5, 6, 7, 8, 9,10,11,12,13 };

void setup() {
  pinMode(impuls, OUTPUT);
  pinMode(sonar, INPUT);
  
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
     Serial.begin(9600);}
}

void loop()
{
  digitalWrite(impuls, LOW);
  delayMicroseconds(2);
  digitalWrite(impuls, HIGH);
  delayMicroseconds(10);
  digitalWrite(impuls, LOW);
  czas = pulseIn(sonar, HIGH);
  cm = mikrosekundynacentymetry(czas);
  if (cm >= 5){on1();}else{off1();}
  if (cm >= 10){on2();}else{off2();}
  if (cm >= 15){on3();}else{off3();}
  if (cm >= 20){on4();}else{off4();}
  if (cm >= 25){on5();}else{off5();}
  if (cm >= 30){on6();}else{off6();}
  if (cm >= 35){on7();}else{off7();}
  if (cm >= 40){on8();}else{off8();}
  if (cm >= 45){on9();}else{off9();}
  if (cm >= 50){on10();}else{off10();}

  Serial.print("Distance: [");
  Serial.print(cm);
  Serial.print("]cm\n");
  delay(100);}

long mikrosekundynacentymetry(long mikrosekundy)
{return mikrosekundy / 29 / 2;}

void  on1(){ digitalWrite( 4, HIGH); }
void  on2(){ digitalWrite( 5, HIGH); }
void  on3(){ digitalWrite( 6, HIGH); }
void  on4(){ digitalWrite( 7, HIGH); }
void  on5(){ digitalWrite( 8, HIGH); }
void  on6(){ digitalWrite( 9, HIGH); }
void  on7(){ digitalWrite(10, HIGH); }
void  on8(){ digitalWrite(11, HIGH); }
void  on9(){ digitalWrite(12, HIGH); }
void on10(){ digitalWrite(13, HIGH); }

void  off1(){ digitalWrite( 4, LOW); }
void  off2(){ digitalWrite( 5, LOW); }
void  off3(){ digitalWrite( 6, LOW); }
void  off4(){ digitalWrite( 7, LOW); }
void  off5(){ digitalWrite( 8, LOW); }
void  off6(){ digitalWrite( 9, LOW); }
void  off7(){ digitalWrite(10, LOW); }
void  off8(){ digitalWrite(11, LOW); }
void  off9(){ digitalWrite(12, LOW); }
void off10(){ digitalWrite(13, LOW); }
...

środa, 10 sierpnia 2011

Czujnik ultradźwiękowy odległości HC-SR04





Ultradźwiękowy czujnik odległości to kolejny element przydatny do zbudowania robota. Sklep: ALLEGRO - Smart Elektronic

Jak już się nauczyłem przy zakupie tego rodzaju rzeczy, dostaje się element a potem "radź sobie sam" czyli szukaj w sieci...

Tu znajdziemy wstępne informacje na stronie ARDUINO SOLUTIONS, w dolnej cześci znajdziemy link do danych technicznych i do przykładu.

Co zrobić z przykładem też nie do końca znalazłem. ale po kilku nieudanych próbach... gdzie przy kodzie pojawiały się ciągle błędy... odkryłem, że podobnie zapisane pliki znajdują się w katalogu LIBRARIES w oprogramowaniu ARDUINO... skopiowałem cały przykład do tego katalogu i wszystko zaczęło działać prawidłowo :)

Niemniej jednak przykład jest przeznaczony dla osób posiadających wyświetlacz LCD. A ja go jeszcze nie posiadam :)... więc trzeba było szukać dalej. szukaj a znajdziesz...


Poniższy kod umożliwia czytanie odległości w centymetrach. A zmierzoną odległość można zaobserwować na SERIAL MONITOR.

int impuls = 13;
int sonar = 12;
long czas, cm;

void setup() {
  pinMode(impuls, OUTPUT);
  pinMode(sonar, INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(impuls, LOW);
  delayMicroseconds(2);
  digitalWrite(impuls, HIGH);
  delayMicroseconds(10);
  digitalWrite(impuls, LOW);
  czas = pulseIn(sonar, HIGH);
  cm = microsecondsToCentimeters(czas);
  Serial.print("Distance: [");
  Serial.print(cm);
  Serial.print("]cm\n");
  delay(100);
}

long microsecondsToCentimeters(long microseconds)
{return microseconds / 29 / 2;}

centymetry liczy się przez czas jaki podróżuje dźwięk 340 m/s czyli 29 mikrosekund na każdy centymetr.

Pierwsze testy poszły pomyślnie :) Cieszę się że udało się go uruchomić.

kolejny działający kod... jest krótszy... przez co może bardziej skuteczny...

#include "Ultrasonic.h"
Ultrasonic ultrasonic( 6, 5 );

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

void loop()
{
  Serial.print( ultrasonic.Ranging(CM) );
  Serial.println( "cm" );
   
  delay(500);
}


...