• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie silnikiem za pomocą L298N i RF433mhz
#1
Cześć. Jestem totalnie początkujący w temacie arduino i starałem się zrobić banalny z pozoru kod, za pomocą którego będę mógł sterować moim silnikiem poprzez zdalne sterowanie.
Posiadam taki moduł:
https://abc-rc.pl/product-pol-7344-Modul...v-ezg56Bvk

i sterownik L298N. 
Bez arduino udało mi się wszystko połączyć i pilot i odbiornik działa bez zarzutu, jednak jest to ograniczone, bo nie ma możliwości sterowania prędkością, a tylko kierunkiem.
Stąd też przyszedł moment na wykorzystanie Ardu, które za pomocą kilku poradników (jeden dla l298 i drugi dla radyjka) chciałem połączyć w jedną całość, ale gdzieś utknąłem.
W ogólnym zarysie chciałbym, aby całość działała tak:
- za pomocą czterech przycisków ustalam prędkość jak i kierunek obrotu silnika:
1. Jazda w prawo z ustaloną prędkością X (0-255)
2. Jazda w lewo tak jak wyżej
3. Prędkość do góry (jeden klik równa się podniesieniu prędkości np. o 25 punktów do góry)
4. Prędkość w dół (jeden klik równa się obniżeniu tak jak wyżej)

Ustalanie zmiany kierunku polega na zmienianiu stanu zmiennej in1 i in2 na:
(in1= low, in2=high ) - wtedy silnik kręci się w prawo
(in1=high, in2=low) - wtedy silnik kręci się w lewo


Natomiast prędkość odbywa się analogowo na podstawie zmiennej enA (działającej na PWM).

To co chciałbym osiągnąć wyżej jest na razie daleko przede mną, ale póki co chciałem w ogóle osiągnąć wynik polegający na wciśnięciu jednego przycisku, który zacznie po prostu obracać silnikiem w prawo z prędkością 150 (pwm).
Mój kod wygląda więc następująco:

Kod:
int ONPinled2 = 7;

int enA = 11;
int in1 = 9;
int in2 = 8;
 
void setup() {
 pinMode(ONPinled2, INPUT);
 pinMode(enA, OUTPUT);
 pinMode(in1, OUTPUT);
 pinMode(in2, OUTPUT);

}

void loop() {

 if (digitalRead(ONPinled2) == HIGH) {
  digitalWrite(in1, LOW);
 digitalWrite(in2, HIGH);
 analogWrite(enA, 150);
 }

}

Co się dzieje to po podpięciu zasilania i nawet nie kliknięciu przycisku na pilocie silnik sam startuje. Klikanie przycisków nic nie daje. Podejrzewam, że trzeba pewnie coś ustawić aby arduino wiedziało, że brak wciśnięcia przycisku ustawia jego stan na LOW i wtedy nie powinno być reakcji. Dopiero wciśnięcie przycisku i jego zmiana na HIGH powinna silnik wystartować. 
Pozdrawiam i proszę o pomoc.
 
Odpowiedź
  


Wiadomości w tym wątku
Sterowanie silnikiem za pomocą L298N i RF433mhz - przez VVigor - 01-05-2019, 15:13

Skocz do:


Przeglądający: 1 gości