Witam,
Próbuję sterować ruchami silnika serwo przy wykorzystaniu czujnika przeszkód do sterowania drzwiami. Napisałem krótki program w tym celu: gdy czujnik nie wykrywa przeszkody serwo wykonuje ruch, natomiast jeżeli na czujniku pojawia się przeszkoda to serwo powinno się zatrzymać. Program działa poprawnie, ale niestety nie tak jak chciałbym. Nie działa on gdy przeszkoda zostaje wykryta w trakcie ruchu - wtedy serwo powinno zatrzymać się w pewnym punkcie - jak najszybciej, ale w moim przypadku zatrzymuje się ono dopiero na końcu zakresu swojego ruchu.
Mógłbym liczyć na jakieś wskazówki z Waszej strony? Chciałbym, aby nastąpiła reakcja serwa w czasie rzeczywistym i gdy przeszkoda znika z pola czujnika, to serwo ruszałoby dalej.
Próbuję sterować ruchami silnika serwo przy wykorzystaniu czujnika przeszkód do sterowania drzwiami. Napisałem krótki program w tym celu: gdy czujnik nie wykrywa przeszkody serwo wykonuje ruch, natomiast jeżeli na czujniku pojawia się przeszkoda to serwo powinno się zatrzymać. Program działa poprawnie, ale niestety nie tak jak chciałbym. Nie działa on gdy przeszkoda zostaje wykryta w trakcie ruchu - wtedy serwo powinno zatrzymać się w pewnym punkcie - jak najszybciej, ale w moim przypadku zatrzymuje się ono dopiero na końcu zakresu swojego ruchu.
Kod:
#include <Servo.h>
Servo myservo;
int PrzeszkodaPin = 8;
int przeszkoda = HIGH;
int pos = 0;
void setup() {
pinMode(2,OUTPUT);
myservo.attach(3);
pinMode(PrzeszkodaPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
przeszkoda = digitalRead(PrzeszkodaPin);
if (przeszkoda== LOW)
{
Serial.println("obecny");
}
else
{
Serial.println("nieobecny");
myservo.write(0);
delay(1000);
myservo.write(90);
delay(1000);
}
}
Mógłbym liczyć na jakieś wskazówki z Waszej strony? Chciałbym, aby nastąpiła reakcja serwa w czasie rzeczywistym i gdy przeszkoda znika z pola czujnika, to serwo ruszałoby dalej.