2

I'm working on a project that needs three (or more) PWM pins to work. But unlike Arduino, the Raspberry PI B+ has just one PWM pin. I've searched for solutions and I found that I can use the WiringPi to emulate PWM using software. Is this the best solution? Anybody has a better one?

Ghanima
  • 15,855
  • 15
  • 61
  • 119
bodruk
  • 177
  • 2
  • 8
  • What specifically are the three PWM pins for? – goldilocks Jan 18 '16 at 12:53
  • Acceleration control and Servo. – bodruk Jan 18 '16 at 12:54
  • 1
    There's also pigpio that can do software PWM, see http://raspberrypi.stackexchange.com/questions/41140/gpio-library-for-c/41141#41141 Sorry, Joan, I didn't see your answer while posting this comment. Anyway the linked Q&A is related - to whom it may concern. – Ghanima Jan 18 '16 at 15:04

2 Answers2

2

The Raspberry Pi B+ has two accessible dedicated hardware PWM channels.

Hardware timed PWM is available on all the accessible GPIO.

See my pigpio library.

joan
  • 71,024
  • 5
  • 73
  • 106
1

Studying the WiringPI library I found that I can easily handle the PWN on any pin:

# GPIO port numbers  
import wiringpi2 as wiringpi  
wiringpi.wiringPiSetupGpio()  
wiringpi.pinMode(25, 0) # sets GPIO 25 to input  
wiringpi.pinMode(24, 1) # sets GPIO 24 to output  
wiringpi.pinMode(18, 2) # sets GPIO 18 to PWM mode 
bodruk
  • 177
  • 2
  • 8
  • I'm not sure if wiringPi can drive both the dedicated PWM channels. wiringPi PWM on arbitary GPIO will be software timed, servos in particular may have problems with jitter. – joan Jan 19 '16 at 12:40