2017-03-01 4 views
0

Hier mein Code, es läuft, keine Fehler, aber keine Rotation auf Rädern. Mein Setup: 1. Raspberry Pi B + 2. L293D für Gleichstrommotoren 3. zwei Gleichstrommotoren 4. Verwendung wiringPi BibliothekRaspberry Pi B +, l293d und zwei DC-Motoren, variable Geschwindigkeit mit PWM, Code in C/C++, aber nicht funktioniert

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

mein anderes Beispiel ist so, aber keine Fehler beim Erstellen einer Do-Rotation auf Rädern.

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

ich mein Problem nicht :-(Bitte beachten Sie die Python-Code nicht veröffentlichen

+0

kompilieren mit „g ++ test_motors_2.cpp -o test_motors_2 -lwiringPi.. - Lpthread " – david

Antwort

0

dieser Abschnitt war falsch

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