• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czujnik ultradzwiekowy w samochodziku
#1
Czemu na monitorze portu szeregowego wyswietla mi sie 0 lub 1149?
Ale gdy usune:
Kod:
do_przodu();
 delay(50);

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

To wszystko dziala.
Kod programu:
Kod:
/*
  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);
 }







}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości