Connection schema servo to GPIO:
- servo minus (brown wire) - to pin #9 (GND)
- servo plus (red wire) - to pin #2 (5VO)
- servo signal (yellow wire) - to pin #11 (GPIO 17)
python code - ! works fine
from gpiozero import Servo
from time import sleep
servo = Servo(17)
while True:
servo.mid()
sleep(0.5)
servo.min()
sleep(0.5)
servo.max()
sleep(0.5)
c/c++ - does not work (compile ok, run with sudo, nothing happens)
#include <cstdio> // printf()
#include <wiringPi.h> // wiringPiSetupGpio() pinMode() pwmSetMode() pwmSetRange() pwmSetClock() pwmWrite() delay()
int main() {
int pin = 17;
printf("Raspberry Pi wiringPi test program\n");
wiringPiSetupGpio();
pinMode(pin, PWM_OUTPUT);
pwmSetMode(PWM_MODE_MS);
pwmSetClock(192);
pwmSetRange(2000);
while (true) {
pwmWrite(pin, 50);
delay(1000);
pwmWrite(pin, 150);
delay(1000);
pwmWrite(pin, 250);
delay(1000);
}
return 0;
}
gpio util - also does not work (servo did not move)
gpio -g mode 17 pwm
gpio pwm-ms
gpio pwmc 192
gpio pwmr 2000
gpio -g pwm 17 150
gpio -g pwm 17 200
works fine
sudo pigpiod # start daemon
pigs s 17 1500 # middle
pigs s 17 1000 # safe counterclockwise
pigs s 17 2000 # safe clockwise
Can't understand what I do wrong in C++ implementation and why gpio util does not works.