pyrtkovsky Napisano Styczeń 6, 2016 Udostępnij Napisano Styczeń 6, 2016 Witam, tak jak w temacie - jestem w trakcie budowy samochodu RC - a dokładniej programowania układu. Chciałem zaprogramować aby za pomocą 1 analoga od pada sterować kierunkami przód/tył/lewo/prawo. Używam modułu z mostkiem H L298N + serwo micro 9g. Właśnie z serwem jest pewien problem. Ogólnie program działa bez zarzutu, silnik obraca się w obie strony po zmianie kierunku wychylenia gałki analoga. Natomiast po podpięciu serwa i dodaniu paru komend - automatycznie mostek H przestaje odpowiadać i działa samo serwo. Próbowałem użyć zewnętrznego zasilacza na silniki, a samą część logiczną mostka zasilać z Arduino ale nie dało rady. Co do wspomnianego analoga to posiada on 5 wyprowadzeń, 5V, GND, OŚ X, OŚ Y - z tych korzystam - ostatnie piąte jest od switcha, który póki co jest nie użyty. Oczywiście jedna oś jest do serwa, druga do silnika. Próbowałem również podpiąć 2 analogi, jeden na silnik, drugi serwo - nadal to samo. Doszedłem do tego, że owy problem powoduje komenda servo.attach(7) Po jej usunięciu mostek działa bez problemu, ale wtedy nie mam jak korzystać z serwa Stąd pytanie - dlaczego tak się dzieje, jak to ominąć? Może gdzieś popełniłem błąd? Cały kod programu: // Silnik int A = 10; int in1 = 9; int in2 = 8; // Analog int x = 0; int wartosc = 0; int y = 1; // Servo #include <Servo.h> Servo servo; void setup() { pinMode(A, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); //servo.attach(7); } void naped() { wartosc = analogRead(x); int wartosc1 = map(wartosc, 0, 1023, 0, 255); if (wartosc1 > 123 && wartosc1 <127) { digitalWrite(in1, LOW); digitalWrite(in2, LOW); } if (wartosc1 >128) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(A, 200); } if (wartosc1 <123) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); analogWrite(A, 200); } int kat = analogRead(y); kat = map(kat, 0, 1023, 0, 180); servo.write(kat); delay(15); } void loop() { naped(); } Link do komentarza Share on other sites More sharing options...
deshipu Styczeń 6, 2016 Udostępnij Styczeń 6, 2016 Z dokumentacji do biblioteki Servo na https://www.arduino.cc/en/Reference/Servo: The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega. On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins. Wybierz inny pin dla silnika niż 9 i 10. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »