Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] Podłączenie 2 serw do Arduino UNO

11 Wrz 2019 19:00 60 2
  • Poziom 3  
    Witam. Mam problem z podłączeniem dwóch serw za pomocą Arduino UNO. Posiadam program, ale obsługuje on tylko jedno serwo. Czy mógłby go ktoś tak zmodyfikować, by dało się podłączyć dwa ( załóżmy pod wyjście 9 i 10)?

    #include <Servo.h>

    Servo myservo; // stworzenie bjektu myservo służącego do kontroli naszego podłączonego serwa
    int pos = 0; // stworzenie zmiennej służącej do ustawienia początkowej pozycji naszego serwa

    void setup() {
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    myservo.attach(9); // sterowanie serwem ustawiamy na pinie nr 9

    }

    void loop() {
    for (pos = 0; pos <= 180; pos += 1) { // pętla w której zmienna "pos" przyjmuje wartości od 0 do 180, odpowiadające wychyleniom naszego serwa
    digitalWrite(1, HIGH);
    digitalWrite(2, LOW);
    myservo.write(pos); // serwo wykonuje ruch z pozycji początkowej do swojej pozycji maksymalnej tj. 180 stopni dzięki zmianie wartości zmiennej "pos"
    delay(75); // opóźnienie dzięki któremu ruch serwa staje się bardziej płynny i tym samym delikatniejszy dla modułu automatycznego naciągu w naszym zegarku
    }
    for (pos = 180; pos >= 0; pos -= 1) { // analogiczna pętla w której zmienna "pos" przyjmuje wartości od 180 do 0, odpowiadające wychyleniom naszego serwa
    digitalWrite(1, LOW);
    digitalWrite(2, HIGH);
    myservo.write(pos); // serwo wykonuje ruch z pozycji maksymalnego wychylenia (tj. 180 st.) do pozycji początkowej
    delay(75); // opóźnienie
    }
    }
  • PCBway
  • Pomocny post
    Poziom 28  
    Musisz stworzyć następny obiekt servo o innej nazwie.
  • PCBway
  • Poziom 3  
    Dodałem do programu drugie serwo pod nazwą "noservo"

    #include <Servo.h>

    Servo myservo;// stworzenie bjektu myservo służącego do kontroli naszego podłączonego serwa
    Servo noservo;//
    int pos = 0; // stworzenie zmiennej służącej do ustawienia początkowej pozycji naszego serwa

    void setup() {
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    myservo.attach(9); // sterowanie serwem ustawiamy na pinie nr 9
    noservo.attach (10); //

    }

    void loop() {
    for (pos = 0; pos <= 180; pos += 1) { // pętla w której zmienna "pos" przyjmuje wartości od 0 do 180, odpowiadające wychyleniom naszego serwa
    digitalWrite(1, HIGH);
    digitalWrite(2, LOW);
    myservo.write(pos); // serwo wykonuje ruch z pozycji początkowej do swojej pozycji maksymalnej tj. 180 stopni dzięki zmianie wartości zmiennej "pos"
    noservo.write(pos);
    delay(75); // opóźnienie dzięki któremu ruch serwa staje się bardziej płynny i tym samym delikatniejszy dla modułu automatycznego naciągu w naszym zegarku
    }
    for (pos = 180; pos >= 0; pos -= 1) { // analogiczna pętla w której zmienna "pos" przyjmuje wartości od 180 do 0, odpowiadające wychyleniom naszego serwa
    digitalWrite(1, LOW);
    digitalWrite(2, HIGH);
    myservo.write(pos); // serwo wykonuje ruch z pozycji maksymalnego wychylenia (tj. 180 st.) do pozycji początkowej
    noservo.write(pos);
    delay(75); // opóźnienie
    }
    }