27-05-2016, 12:11
nie będzie działać ponieważ serwo działa niezależnie od arduino na podstawie sygnału jaki otrzymuje a dostaje tylko 2 pozycje i będzie działało dopóki ich nie osiągnie .
myservo.write(0);
myservo.write(90);
Tu masz poprawnie jak to powinno wyglądać i działać
myservo.write(0);
myservo.write(90);
Tu masz poprawnie jak to powinno wyglądać i działać
Kod:
#include <Servo.h>
Servo myservo;
int PrzeszkodaPin = 8;
int przeszkoda = HIGH;
int pos = 10;
int minimum = 0; // serwo skrajna pozycja
int maximum = 90; // serwo skrajna pozycja
int czas_otwarcia = 2000;
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");
pos = maximum ;
myservo.write(pos);
delay(czas_otwarcia);
}
if (przeszkoda == HIGH){ // zamykanie jeżeli ma być przerwane to musi być na bieżąco
Serial.println("nieobecny"); // sprawdzany stan czujnika a tylko ruch krok po kroku na to pozwoli
for ( pos = pos ; pos > minimum ; pos--){ // dlatego ruch powrotny jest w pętli
if ( pos < minimum )pos = minimum;
myservo.write(pos);
if (przeszkoda== LOW)break;
}
}
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji