Witam,
próbuję sterować dwoma silnikami poprzez program odpalony przez ssh, ale chciałbym aby jechał i rozpędzał się gdy guzik jest wciśnięty oraz wyhamowywał gdy puszczę przycisk. Mógłby mi ktoś powiedzieć jak to się robi?
Zewnetrzne przerwanie imho powinno wystarczyc. Konkretnie to takie co odroznia zbocze opadajace/narastajace. @Edit: niekoniecznie takie co odroznia zbocza.
W ostatecznosci probkowanie pinu z guzikiem?
No masz np takie wektory przerwan (nie wiem jaka masz plytke)
A zeby oprogramowac to cos a'la
ISR(INT0_vect) {
/ jesli przycisk wcisniety to odpal silnik, zgas wpp */
}
Jak to można zrobić:
- odczytujesz w aplikacji stan przycisku w jakiejś pętli i tak długo jak przycisk naciśnięty - zwiększasz wartość pewnego licznika
- kiedy przycisk nie jest naciśnięty zmniejszasz wartość tego licznika
Licznik ma pewien dopuszczalny zakres przyjmowanych wartości - np. 0-65535. Wartość licznika wrzucasz poprzez sysfs do raspberry do konfiguracji PWM-a.
PWM-a podłączasz do silnika przez odpowiedni układ.
Tutaj masz coś odnośnie PWM-a: https://jumpnowtek.com/rpi/Using-the-Raspberry-Pi-Hardware-PWM-timers.html
A tu odnośnie GPIO: https://raspberrypi.stackexchange.com/questions/92381/raspberry-gpio-button-sysfs
W dużym skrócie to zadaniem programu jest odczytywanie wartości z /sys/class/gpio/... i wrzucanie odpowiedniej wartości do /sys/class/pwm/...