[英]Controlling a servo with raspberry pi using the hardware PWM with wiringPi
[英]How can PWM be generated on the Raspberry Pi using wiringPi with C?
我正在嘗試學習 C 並希望能夠在 Raspberry Pi 的 GPIO 引腳上生成 PWM 信號。 但是,我遵循的大多數教程都沒有任何效果。 這是我當前使用的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wiringPi.h>
#include <softPwm.h>
#define RED 20
#define GREEN 21
// pwm
int pwmValue = 1023;
int pwmValueInit = 0;
int main (void)
{
if (wiringPiSetup() == -1)
return -1;
if (wiringPiSetupSys() == -1)
return -1;
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
digitalWrite(RED, LOW); // at start turn off the GPIO
digitalWrite(GREEN, LOW); // at start turn off the GPIO
pinMode(RED, PWM_OUTPUT);
pinMode(GREEN, PWM_OUTPUT);
softPwmCreate(RED, pwmValueInit, pwmValue);
softPwmCreate(GREEN, pwmValueInit, pwmValue);
int duty;
printf("Enter the desired duty cycle:\n");
scanf("%f", duty);
softPwmWrite(RED, duty);
softPwmWrite(GREEN, duty);
}
我不太確定問題是什么,因為程序編譯時沒有錯誤。 但是,當我運行程序時,它會返回分段錯誤,但我不確定是什么原因造成的。
段錯誤可能與 WiringPi 無關。 您的scanf()
調用是錯誤的 - 您必須傳遞目標變量的地址,而不是變量本身。 此外,如果您想使用int
,請使用%d
格式說明符。
scanf("%d", &duty);
如果您的 LED 仍未點亮,則值得逐步驗證您的設置是否正確。 你能閃爍 LED(沒有 PWM)嗎? 這將驗證您是否有正確的引腳和接線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.