Skocz do zawartości

Sterowanie potencjometrami serwomechanizmow (Arduino)


Majkel192

Pomocna odpowiedź

Witam,

Jako, że jestem początkującym programistą i użytkownikiem Arduino chciałbym zaczerpnąć poradę odnośnie kodu w języku C do sterowania serwami za pomocą 6 potencjometrów oczywiście na płytce Arduino.

Przed załadowaniem programu na płytkę chciałbym się upewnić czy kod jest poprawnie napisany, żeby czegoś przez przypadek nie uszkodzić.

// Sterowanie 6-scioma serwami za pomoca potencjometrow.

#include <Servo.h> 

Servo myservo_0;  // Tworzenie obiektu = servo (nr1)
Servo myservo_1;  // Tworzenie obiektu = servo (nr2)
Servo myservo_2;  // Tworzenie obiektu = servo (nr3)
Servo myservo_3;  // Tworzenie obiektu = servo (nr4)
Servo myservo_4;  // Tworzenie obiektu = servo (nr5)
Servo myservo_5;  // Tworzenie obiektu = servo (nr6)

int potpin0 = 0; // Analogowy pin dla potencjometru = 0
int potpin1 = 1; // Analogowy pin dla potencjometru = 1
int potpin2 = 2; // Analogowy pin dla potencjometru = 2
int potpin3 = 3; // Analogowy pin dla potencjometru = 3
int potpin4 = 4; // Analogowy pin dla potencjometru = 4
int potpin5 = 5; // Analogowy pin dla potencjometru = 5

int val0 = 0;  //zmiennna odczytująca wartosc z pinu analogowego
int val1 = 0;  // zmiennna odczytująca wartosc z pinu analogowego
int val2 = 0;  //zmiennna odczytująca wartosc z pinu analogowego
int val3 = 0;  //zmiennna odczytująca wartosc z pinu analogowego
int val4 = 0;  //zmiennna odczytująca wartosc z pinu analogowego
int val5 = 0; //zmiennna odczytująca wartosc z pinu analogowego


void setup() 
{ 
 myservo_0.attach(9);  // Przypisanie pinu nr. 9 dla servo nr 1
 myservo_1.attach(10);  // Przypisanie pinu nr. 10 dla servo nr 2
 myservo_2.attach(11);  // Przypisanie pinu nr. 11 dla servo nr 3
 myservo_3.attach(13);  // Przypisanie pinu nr. 13 dla servo nr 4
 myservo_4.attach(5);  // Przypisanie pinu nr. 5 dla servo nr 5
 myservo_5.attach(6);  // Przypisanie pinu nr. 6 dla servo nr 6
} 

void loop() 
{ 
 val0 = analogRead(potpin0);            // Odczytanie wartosc z potencjometru (wartosc miedzy 0 - 1023)
 val0 = map(val0, 0, 1023, 0, 179);     // Zakres serwomechanizmu ( wartosc: 0 - 180 stopni)
 myservo_0.write(val0);                  // Ustawienie polozenia serwa zgodnie ze skalowana wartoscia
 delay(15);                           // Oczekiwanie na zmiane pozycji serwomechanizmu

 val1 = analogRead(potpin1);            // Odczytanie wartosc z potencjometru (wartosc miedzy 0 - 1023)
 val1 = map(val1, 0, 1023, 0, 179);     // Zakres serwomechanizmu ( wartosc: 0 - 180 stopni)
 myservo_1.write(val1);                  // Ustawienie polozenia serwa zgodnie ze skalowana wartoscia
 delay(15);                           // Oczekiwanie na zmiane pozycji serwomechanizmu

 val2 = analogRead(potpin2);            // Odczytanie wartosc z potencjometru (wartosc miedzy 0 - 1023)
 val2 = map(val2, 0, 1023, 0, 179);     // Zakres serwomechanizmu ( wartosc: 0 - 180 stopni)
 myservo_2.write(val2);                  // Ustawienie polozenia serwa zgodnie ze skalowana wartoscia
 delay(15);                           // Oczekiwanie na zmiane pozycji serwomechanizmu

 val3 = analogRead(potpin3);            // Odczytanie wartosc z potencjometru (wartosc miedzy 0 - 1023)
 val3 = map(val3, 0, 1023, 0, 179);     // Zakres serwomechanizmu ( wartosc: 0 - 180 stopni)
 myservo_3.write(val3);                  // Ustawienie polozenia serwa zgodnie ze skalowana wartoscia
 delay(15);                           // Oczekiwanie na zmiane pozycji serwomechanizmu

 val4 = analogRead(potpin4);            // Odczytanie wartosc z potencjometru (wartosc miedzy 0 - 1023)
 val4 = map(val4, 0, 1023, 0, 179);     // Zakres serwomechanizmu ( wartosc: 0 - 180 stopni)
 myservo_4.write(val4);                  // Ustawienie polozenia serwa zgodnie ze skalowana wartoscia
 delay(15);                           // Oczekiwanie na zmiane pozycji serwomechanizmu 

 val5 = analogRead(potpin5);            // Odczytanie wartosc z potencjometru (wartosc miedzy 0 - 1023)
 val5 = map(val5, 0, 1023, 0, 179);     // Zakres serwomechanizmu ( wartosc: 0 - 180 stopni)
 myservo_5.write(val5);                  // Ustawienie polozenia serwa zgodnie ze skalowana wartoscia
 delay(15);                           // Oczekiwanie na zmiane pozycji serwomechanizmu

}

Lekko poprawione.

Chodzi o to, że podczas kręcenia 1 potencjometru, mogę przekręcić 2 potencjometrem, ale tak żeby poprzedni nie zjechał do domyślnej pozycji tylko został sobie tak jak go ustawiłem i tak dalej.

Czy taki kod jest poprawny?

Pozdrawiam i z góry dziękuję za odpowiedzi 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.