Wpis z mikrobloga

Serwo podłączone do pinu 2. Ma pulsować 0-20 stopni, gdy nic sie nie dzieje.
Jak na pinie A1 dam 3V - ma sie ustawić na 90 stopni, jak na pin a3 dam 3v - ma sie ustawić na 180. Tymczasem Jak na chwilę podam napiecie na a1 to się ustawi na 90 stopni i 4 sekundy stoi (mimo, że już napięcia nie ma). Ja podam napięcie na chwilę na a3 to się wychyli na 180 stopni, wróci na 90 stopni.

Czasem podam napięcie (na chwilę) wychyli się jak należy, wraca do pulsowani a i ponownie się wychyla na 180 (samoczynnie, bez podawania napięcia).

Skąd te 4 sekundy i zakłócenia? Serwa prawidłowo sterowane - potencjometrem chodzą 0-180 w zależności od pozycji potencjometru.

#arduino

#include <Servo.h>

Servo myservo; // Tworzy obiekt serwo
int servoPin = 2; // Pin, do którego jest podłączone serwo
int pinA1 = A1; // Pin A1
int pinA3 = A3; // Pin A3

void setup() {
myservo.attach(servoPin); // Przypisuje serwo do odpowiedniego pinu
pinMode(pinA1, INPUT); // Ustawia pin A1 jako wejście
pinMode(pinA3, INPUT); // Ustawia pin A3 jako wejście
}

void loop() {
// Odczytaj stany pinów A1 i A3
int stateA1 = digitalRead(pinA1);
int stateA3 = digitalRead(pinA3);

// Sprawdź stan pinów i odpowiednio ustaw kąt serwa
if (stateA1 == HIGH) {
myservo.write(90); // Ustaw serwo na 90 stopni
} else if (stateA3 == HIGH) {
myservo.write(180); // Ustaw serwo na 180 stopni
} else {
// Jeśli nie ma napięcia na pinach A1 i A3, serwo pulsuje w zakresie 1-20 stopni
for (int angle = 1; angle <= 20; angle++) {
myservo.write(angle);
delay(20); // Poczekaj krótki czas
}
for (int angle = 20; angle >= 1; angle--) {
myservo.write(angle);
delay(20); // Poczekaj krótki czas
}
}
}
  • 4
@7160: Raz robiłem jedna pierdołe w Arduino i wydaje mi się że problemem jest konstrukcja if ELSA. Gdy dajesz napięcie na pin np a1 to nie wiesz w którym momencie pętli for jesteś czy na początku czy pod koniec. I o a musi się dokończyć dopiero wtedy robi pętlę od nowa i zaczytuje nowe podane parametry. Jak chcesz sprawdzić to w pętlach for wypisz sobie na konsole printa , wartością a1
via Wykop
  • 0
@JurnyReks79: Ja tam się nie znam. Chat GPT mi ten program napisał. Zastanawiam się czy brać się za zastosowaniem arduino do sterowania kosiarką (zmiana biegów, w lewo, w prawo), czy robić jak człowiek - na wyłącznikach krańcowych. Tylko, że serwo bardzo by ułatwiło zmianę biegów...