Raspberry Pi B +,l293d和两个直流电机,带PWM的可变速度,代码为c/C++,但不起作用
问题描述:
这里是我的代码,它运行时没有错误,但*上没有旋转。我的设置: 1.树莓裨B + 2. L293D用于直流电动机 3.两条直流电动机 4.使用wiringPi库Raspberry Pi B +,l293d和两个直流电机,带PWM的可变速度,代码为c/C++,但不起作用
实施例1:
#include <iostream>
#include <wiringPi.h>
#include <softPwm.h>
using namespace std;
// motor pins (pwm)
// motor left
int motor_l_u = 26;
int motor_l_v = 27;
// motor right
int motor_r_u = 28;
int motor_r_v = 29;
// pwm
int pwmValue = 1023;
int pwmValueInit = 0;
int main(void) {
if (wiringPiSetup() == -1)
return -1;
if (wiringPiSetupSys() == -1)
return -1;
pinMode(motor_l_u, OUTPUT);
pinMode(motor_l_v, OUTPUT);
pinMode(motor_r_u, OUTPUT);
pinMode(motor_r_v, OUTPUT);
digitalWrite(motor_l_u, LOW); // at start turn off the GPIO
digitalWrite(motor_l_v, LOW); // at start turn off the GPIO
digitalWrite(motor_r_u, LOW); // at start turn off the GPIO
digitalWrite(motor_r_v, LOW); // at start turn off the GPIO
pinMode(motor_l_u, PWM_OUTPUT);
pinMode(motor_l_v, PWM_OUTPUT);
pinMode(motor_r_u, PWM_OUTPUT);
pinMode(motor_r_v, PWM_OUTPUT);
// prepare GPIOs for motors
softPwmCreate(motor_l_u, pwmValueInit, pwmValue);
softPwmCreate(motor_l_v, pwmValueInit, pwmValue);
softPwmCreate(motor_r_u, pwmValueInit, pwmValue);
softPwmCreate(motor_r_v, pwmValueInit, pwmValue);
// acceleration forward
for (int var = 0; var < pwmValue; ++var) {
if (debug == 1) {
cout << "set speed to " << var << endl;
}
softPwmWrite(motor_r_u, (pwmValue - var));
softPwmWrite(motor_r_v, var);
softPwmWrite(motor_l_u, var);
softPwmWrite(motor_l_v, (pwmValue - var));
delay(10);
}
// acceleration backward
for (int var = 0; var < pwmValue; ++var) {
if (debug == 1) {
cout << "set speed to " << var << endl;
}
softPwmWrite(motor_r_u, var);
softPwmWrite(motor_r_v, (pwmValue - var));
softPwmWrite(motor_l_u, (pwmValue - var));
softPwmWrite(motor_l_v, var);
delay(10);
}
return -1;
}
我的另一个例子是这样的,但没有编译*上的旋转错误。
#include <iostream>
#include <wiringPi.h>
#include <softPwm.h>
using namespace std;
// motor pins (pwm)
// motor left
int motor_l_u = 26;
int motor_l_v = 27;
// motor right
int motor_r_u = 28;
int motor_r_v = 29;
// pwm
int pwmValue = 1023;
int pwmValueInit = 0;
int main(void) {
if (wiringPiSetup() == -1)
return -1;
if (wiringPiSetupSys() == -1)
return -1;
pinMode(motor_l_u, OUTPUT);
pinMode(motor_l_v, OUTPUT);
pinMode(motor_r_u, OUTPUT);
pinMode(motor_r_v, OUTPUT);
digitalWrite(motor_l_u, LOW); // at start turn off the GPIO
digitalWrite(motor_l_v, LOW); // at start turn off the GPIO
digitalWrite(motor_r_u, LOW); // at start turn off the GPIO
digitalWrite(motor_r_v, LOW); // at start turn off the GPIO
pinMode(motor_l_u, PWM_OUTPUT);
pinMode(motor_l_v, PWM_OUTPUT);
pinMode(motor_r_u, PWM_OUTPUT);
pinMode(motor_r_v, PWM_OUTPUT);
// prepare GPIOs for motors
pwmWrite(motor_l_u, pwmValueInit);
pwmWrite(motor_l_v, pwmValueInit);
pwmWrite(motor_r_u, pwmValueInit);
pwmWrite(motor_r_v, pwmValueInit);
// acceleration forward
for (int var = 0; var < pwmValue; ++var) {
if (debug == 1) {
cout << "set speed to " << var << endl;
}
pwmWrite(motor_r_u, (pwmValue - var));
pwmWrite(motor_r_v, var);
pwmWrite(motor_l_u, var);
pwmWrite(motor_l_v, (pwmValue - var));
delay(10);
}
// acceleration backward
for (int var = 0; var < pwmValue; ++var) {
if (debug == 1) {
cout << "set speed to " << var << endl;
}
pwmWrite(motor_r_u, var);
pwmWrite(motor_r_v, (pwmValue - var));
pwmWrite(motor_l_u, (pwmValue - var));
pwmWrite(motor_l_v, var);
delay(10);
}
return -1;
}
我看不到:-(我的问题请不要发布的Python代码
答
这一部分是错误的
pinMode(motor_l_u, OUTPUT);
pinMode(motor_l_v, OUTPUT);
pinMode(motor_r_u, OUTPUT);
pinMode(motor_r_v, OUTPUT);
digitalWrite(motor_l_u, LOW); // at start turn off the GPIO
digitalWrite(motor_l_v, LOW); // at start turn off the GPIO
digitalWrite(motor_r_u, LOW); // at start turn off the GPIO
digitalWrite(motor_r_v, LOW); // at start turn off the GPIO
pinMode(motor_l_u, PWM_OUTPUT);
pinMode(motor_l_v, PWM_OUTPUT);
pinMode(motor_r_u, PWM_OUTPUT);
pinMode(motor_r_v, PWM_OUTPUT);
与“编译G ++ test_motors_2.cpp -o test_motors_2 -lwiringPi。 - lpthread” – david