Skocz do zawartości

Serwo sterowane potencjometrem za pomocą hc-12


TurBan

Pomocna odpowiedź

Witam

Mam napisany cały kod sterujący sześcioma serwami potencjometrem za pomocą modułów hc-12 i po podłączeniu serwa pulsują i nie reagują na potencjometry 🙁 dodam że pracuje na arduino mega

nadajnik:

#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial HC12(1, 0); // HC-12 TX Pin, HC-12 RX Pin
int potValue = 0;
int potValue1 = 0;
int potValue2 = 0;
int potValue3 = 0;
int potValue4 = 0;
int potValue5 = 0;

void setup() {

 Serial.begin(1200); 
}
void loop() {

// Czytanie potencjometru
potValue = analogRead(A0);
int potValueMapped = map(potValue, 0, 1023, 0, 255);
Serial.write(potValueMapped); // wysyłanie potValue do serwa
delay(10);

potValue1 = analogRead(A1);
int potValue1Mapped = map(potValue1, 0, 1023, 0, 255);
Serial.write(potValue1Mapped);
delay(10);

potValue2 = analogRead(A2);
int potValue2Mapped = map(potValue2, 0, 1023, 0, 255);
Serial.write(potValue2Mapped); 
delay(15);

potValue3 = analogRead(A3);
int potValue3Mapped = map(potValue3, 0, 1023, 0, 255);
Serial.write(potValue3Mapped);
delay(15);

potValue4 = analogRead(A4);
int potValue4Mapped = map(potValue4, 0, 1023, 0, 255);
Serial.write(potValue4Mapped);
delay(15);

 potValue5 = analogRead(A5);
int potValue5Mapped = map(potValue5, 0, 1023, 0, 255);
Serial.write(potValue5Mapped);
delay(15);


}

odbiornik:

#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial HC12(1, 0); // HC-12 TX Pin, HC-12 RX Pin
#include <Servo.h>
Servo myServo;
Servo myServo1;
Servo myServo2;
Servo myServo3;
Servo myServo4;
Servo myServo5;
int state = 0;
int state1 = 0;
int state2 = 0;
int state3 = 0;
int state4 = 0;
int state5 = 0;
void setup() {

 myServo.attach(12);
 myServo1.attach(11);
 myServo2.attach(10);
 myServo3.attach(9);
 myServo4.attach(8);
 myServo5.attach(7);
 Serial.begin(1200); 

}

void loop() { 
if(Serial.available() > 0){
   state = Serial.read(); 
   state1 = Serial.read(); 
   state2 = Serial.read(); 
   state3 = Serial.read(); 
   state4 = Serial.read(); 
   state5 = Serial.read(); 

}
// kontrolowanie serwa
myServo.write(state);
delay(15);
myServo1.write(state1);
delay(15);
myServo2.write(state2);
delay(15);
myServo3.write(state3);
delay(15);
myServo4.write(state4);
delay(15);
myServo5.write(state5);
delay(15);
}
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To Arduino ma tyle portów, a w tym 4 x UART więc po co Ci programowy UART. Wykorzystaj warstwę sprzętową co zminimalizuje ewentualne konflikty bibliotek.

Pozdrawiam,

ale ogolnie reszta programu jeste okej?

Link do komentarza
Share on other sites

Moim zdaniem nie bardzo. Zobacz https://www.arduino.cc/en/Reference/ServoWrite tam jest informacja, że argument używany przez Serwo.write() to nie od 0 do 255 (tak jak ty mapujesz, a odbiornik odbiera)! Jeśli już to od 0 do 180. Z praktyki wiem, że serwomechanizmy niekoniecznie dobrze się zachowują w pozycjach krańcowych i np. lepiej nimi sterować od np. 10 do 170 stopni.

Powinieneś pomyśleć nad algorytmem transmisji przez port szeregowy. Skąd odbiornik ma wiedzieć, że otrzymał dane do ustawienia servo2? Oststnio dużo było na forum o funkcji delay(), millis()... - poczytaj i tak napisz program by nie używać delay().

Swoje serwomechanizmy powinieneś zasilić z zewnętrznego zasilacza - nie z pinu Arduino. Nic nie piszesz jak ten problem rozwiązałeś.

Pozdrawiam,

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.