/*Credits: Optimus Digital
 * Acest program a fost creat special pentru driverul de motoare
 * DRV8833. Acest driver este capabil să controleze 2 motoare DC
 * sau un stepper bipolar
 */
 
//pinii utilizați de motoare trebuie sa fie capabili sa 
//genereze semnal PWM

//pinii utilizați de primul motor
int IN_1 = 3;
int IN_2 = 5;

//pinii utilizati de al doilea motor
int IN_3 = 6;
int IN_4 = 9;

//pin-ul utilizat pentru a activa/dezactiva 
//modulul
int EEP = 2;

//viteza de rotatie a motoarelor ( 0 - 255 )
int MAX_PWM_VOLTAGE = 240;

void setup() {

    //declarați pinii utilizați de motoare, dar si de enable
    //ca fiind OUTPUT
    pinMode(IN_1, OUTPUT);
    pinMode(IN_2, OUTPUT);
    pinMode(IN_3, OUTPUT);
    pinMode(IN_4, OUTPUT);
    pinMode(EEP,OUTPUT);

    //aplicați tensiunea logică HIGH pe pinul EEP pentru a activa
    //driverul de motoare
    digitalWrite(EEP,HIGH);
}

void loop() {
    

    digitalWrite(IN_4, LOW);
    digitalWrite(IN_2, LOW);
    
    analogWrite(IN_3, MAX_PWM_VOLTAGE);
    analogWrite(IN_1, MAX_PWM_VOLTAGE);
    delay(2000);
    
    digitalWrite(IN_3, LOW);
    digitalWrite(IN_2, LOW);
    
    analogWrite(IN_4, MAX_PWM_VOLTAGE);
    analogWrite(IN_1, MAX_PWM_VOLTAGE);
    delay(2000);
    
    digitalWrite(IN_4, LOW);
    digitalWrite(IN_1, LOW);
    
    analogWrite(IN_3, MAX_PWM_VOLTAGE);
    analogWrite(IN_2, MAX_PWM_VOLTAGE);
    delay(2000);
    
    digitalWrite(IN_3, LOW);
    digitalWrite(IN_1, LOW);
    
    analogWrite(IN_4, MAX_PWM_VOLTAGE);
    analogWrite(IN_2, MAX_PWM_VOLTAGE);
    delay(2000);
}
