2017-03-01 7 views
0

Voici mon code, il fonctionne, pas d'erreurs, mais pas de rotation sur les roues. Ma configuration: 1. Raspberry Pi B + 2. L293D pour moteurs à courant continu 3. deux bibliothèques de moteurs à courant continu 4. Utilisation wiringPiRaspberry Pi B +, l293d et deux moteurs à courant continu, vitesse variable avec PWM, code en c/C++, mais ne fonctionne pas

Exemple 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; 
} 

mon autre exemple est le cas, mais pas erreurs sur la compilation d'une rotation de faire sur les roues.

#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; 
} 

Je vois pas mon problème :-(S'il vous plaît ne pas afficher le code python

+0

compilez avec « g ++ test_motors_2.cpp -o test_motors_2 -lwiringPi.. - lpthread " – david

Répondre

0

cette section a eu tort

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);