#define pinSH_CP 4 //Pino Clock DIR_CLK #define pinST_CP 12 //Pino Latch DIR_LATCH #define pinDS 8 //Pino Data DIR_SER #define pinEnable 7 //Pino Enable DIR_EN #define pinMotor1PWM 11 #define pinMotor2PWM 3 #define pinMotor3PWM 5 #define pinMotor4PWM 6 #define bitMotor1A 2 #define bitMotor1B 3 #define bitMotor2A 1 #define bitMotor2B 4 #define bitMotor3A 5 #define bitMotor3B 7 #define bitMotor4A 0 #define bitMotor4B 6 void ci74HC595Write(byte pino, bool estado); void setup() { pinMode(pinSH_CP, OUTPUT); pinMode(pinST_CP, OUTPUT); pinMode(pinEnable, OUTPUT); pinMode(pinDS, OUTPUT); pinMode(pinMotor1PWM, OUTPUT); digitalWrite(pinEnable, LOW); Serial.begin(9600); } void loop() { ci74HC595Write(bitMotor1A, HIGH); ci74HC595Write(bitMotor1B, LOW); analogWrite(pinMotor1PWM, 120); delay(1000); analogWrite(pinMotor1PWM, 0); delay(1000); ci74HC595Write(bitMotor1A, LOW); ci74HC595Write(bitMotor1B, HIGH); analogWrite(pinMotor1PWM, 120); delay(1000); analogWrite(pinMotor1PWM, 0); delay(1000); } void ci74HC595Write(byte pino, bool estado) { static byte ciBuffer; bitWrite(ciBuffer, pino , estado); digitalWrite(pinST_CP, LOW); //Inicia a Transmissão digitalWrite(pinDS, LOW); //Apaga Tudo para Preparar Transmissão digitalWrite(pinSH_CP, LOW); for (int nB = 7; nB >= 0; nB--) { digitalWrite(pinSH_CP, LOW); //Baixa o Clock digitalWrite(pinDS, bitRead(ciBuffer, nB) ); //Escreve o BIT digitalWrite(pinSH_CP, HIGH); //Eleva o Clock digitalWrite(pinDS, LOW); //Baixa o Data para Previnir Vazamento } digitalWrite(pinST_CP, HIGH); //Finaliza a Transmissão }