21-02-2017, 21:52
Czemu na monitorze portu szeregowego wyswietla mi sie 0 lub 1149?
Ale gdy usune:
To wszystko dziala.
Kod programu:
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);
}
}