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

Czujnik ultradzwiekowy

VPS Starter Arubacloud
0 głosów
174 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 129 wizyt
pytanie zadane 21 lutego 2017 w Mikrokontrolery przez mrpablosek12 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 494 wizyt
0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 12 września 2016 w Mikrokontrolery przez Weenter Użytkownik (830 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...