keil5打开L298N的程序文件时显示文件路径错误,这个是什么意思?怎么解决?
你在压缩包里打开的项目吧
小风扇的加减速是通过pwm来实现的,而树莓派的PWM分硬件PWM和软件PWM功能,硬件PWM只支持第1脚,但是如果有多个引脚就无法实现硬件PWM,我们这里就用软件PWM实现。关于软件PWM和硬件PWM请参考:
https://blog.csdn.net/qq_27320195/article/details/107535749
完整代码:
pi@xiajiashan:~/pi_c_study/pwm$ cat -n my_moto_pwm.c
1 #include <wiringPi.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5 #include <string.h>
6 //软件pwm
7 #define m1 28 //wiringPi编码第28脚-----pwm
8 #define m2 29 //wiringPi编码第29脚-----pwm
9 int main()
10 {
11 //第一步:启动树莓派设置wiringPi编码模式
12 if(wiringPiSetup()<0)
13 {
14 perror("启动树莓派失败....");
15 exit(1);//退出进程
16 }
17 //第二步:设置软件PWM功能
18 softPwmCreate(m1,0,100);//设置m1为软件PWM输出功能
19 softPwmCreate(m2,0,100);//设置m2为软件PWM输出功能
20 //第三步:调制PWM
21 int i;
22 char buf[10]="";
23 while(1)
24 {
25 printf("请输入ac加速,dc减速(end退出):");fflush(stdout);
26 fgets(buf,10,stdin);//从键盘获取字符串
27 if(strncmp(buf,"ac",2)==0){
28 for(i=0;i<100;i+=5){
29 softPwmWrite(m1,i);//m2=0,m1从0~100加速
30 usleep(100000);
31 }
32 }
33 if(strncmp(buf,"dc",2)==0){
34 for(i=100;i>0;i-=5){
35 softPwmWrite(m1,i);//m2=0,m1从100~0加速
36 usleep(100000);
37 }
38 }
39 if(strncmp(buf,"end",3)==0) break;
40 memset(buf,0,10);
41 }
42 return 0;
43 }
pi@xiajiashan:~/pi_c_study/pwm$
初学者在学习电机的时候,会被五花八门的名字搞混淆,我们接下来进行一下梳理,仅作概念上的区别。