• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czujnik ultradzwiekowy

Object Storage Arubacloud
0 głosów
175 wizyt
pytanie zadane 21 lutego 2017 w Mikrokontrolery przez mrpablosek12 Nowicjusz (160 p.)

Dlaczego po wgraniu tego programu do plytki to w monitorze portu szeregowego wyswietla mi sie 0 lub 1149?

Gdy usune  
  do_przodu(); 
  delay(50);

i

if'a

to wszystko dziala poprawnie

/*
   kierunek11 = do tylu
   kierunek21 = do przodu

   kierunek12 = do tylu
   kierunek22 = do przodu
*/

#include <NewPing.h>
#define TRIGGER_PIN 3
#define ECHO_PIN 2
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);


const int moc1 = 5; //moc silnika pierwszego
const int moc2 = 6; //moc silnika drugiego
const int kierunek11 = 8; //pierwszy kierunek silnika pierwszego
const int kierunek21 = 9; //drugi kierunek silnika pierwszego
const int kierunek12 = 10; //pierwszy kierunek silnika drugiego
const int kierunek22 = 11; //drugi kierunek silnika drugiego

void setup() {
  for (int i = 5; i < 12; i++) {
    pinMode(i, OUTPUT);
  }
  Serial.begin(9600);
}

void do_przodu() {
  digitalWrite(moc1, HIGH);
  digitalWrite(kierunek11, LOW);
  digitalWrite(kierunek21, HIGH);

  digitalWrite(moc2, HIGH);
  digitalWrite(kierunek12, LOW);
  digitalWrite(kierunek22, HIGH);
}

void wycofaj() {
  digitalWrite(moc1, HIGH);
  digitalWrite(kierunek11, HIGH);
  digitalWrite(kierunek21, LOW);

  digitalWrite(moc2, HIGH);
  digitalWrite(kierunek12, LOW);
  digitalWrite(kierunek22, HIGH);
}

void loop() {
  unsigned int uS = sonar.ping();
  unsigned int odleglosc = (uS / US_ROUNDTRIP_CM); // przeliczanie czasu na cm
  Serial.print(odleglosc);
  Serial.println();

  do_przodu();
  delay(50);

  if (odleglosc <= 20) {
    wycofaj();
    delay(500);
  }







}

 

1 odpowiedź

0 głosów
odpowiedź 24 lutego 2017 przez Karol Kluziak Obywatel (1,210 p.)

Nwm, może to zależy od biblioteki, ale nie łatwiej było by ci zrobić coś takiego:

#define echo 2
#define trig 3

void setup() {
  pinMode(echo, INPUT);
  pinMode(trig, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  long dlugosc = odleglosc();            // zapisanie do zmiennej dlugosc zwroconej wartosci przez funkcje odleglosc()
 
    Serial.println(dystans);     // wypisanie wartossci
    
}

int odleglosc() {                      // naglowek funkcji
  long czas, dystans;
  oldt = dystans;
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  czas = pulseIn(echo, HIGH);        //   pulseln()-to funkcja która mierzy czas przez jaki jest dany stan na danym pinie 
  dystans = czas / 58;
 return dystans;           //  zwrocenie wartosci zmiennej dystans

}

Jeśli nie wiesz jak działa taki czujnik odległości lub nie wiesz jak działają funkcje to odsyłam cię do:

Czujnik:  http://forbot.pl/blog/artykuly/programowanie/kurs-arduino-9-czujnik-odleglosci-hc-sr04-funkcje-id4290

Funkcje: https://www.youtube.com/watch?v=HHplT1A4_A4

 

komentarz 27 lutego 2017 przez mrpablosek12 Nowicjusz (160 p.)
Juz rozwiazalem problem ale dziekuje za odpowiedz :)

Podobne pytania

–1 głos
0 odpowiedzi 131 wizyt
pytanie zadane 21 lutego 2017 w Mikrokontrolery przez mrpablosek12 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 541 wizyt
0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 12 września 2016 w Mikrokontrolery przez Weenter Użytkownik (830 p.)

92,570 zapytań

141,423 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...