#define bitMotor1A 2 #define bitMotor1B 3 #define bitMotor2A 1 #define bitMotor2B 4 #define bitMotor3A 5 #define bitMotor3B 7 #define bitMotor4A 0 #define bitMotor4B 6 #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 PinLineSensor1 A0 void ci74HC595Write(byte pino, bool estado); int valorSensorLinha1; int valorMotorPWM; void setup() { pinMode(pinSH_CP, OUTPUT); pinMode(pinST_CP, OUTPUT); pinMode(pinEnable, OUTPUT); pinMode(pinDS, OUTPUT); pinMode(pinMotor1PWM, OUTPUT); digitalWrite(pinEnable, LOW); pinMode(PinLineSensor1, INPUT); Serial.begin(9600); valorSensorLinha1 = 0; ci74HC595Write(bitMotor1A, HIGH); ci74HC595Write(bitMotor1B, LOW); } void loop() { valorSensorLinha1 = analogRead(PinLineSensor1); valorMotorPWM = valorSensorLinha1/4; analogWrite(pinMotor1PWM, valorMotorPWM); Serial.print(0); Serial.print(" "); Serial.print(valorSensorLinha1); Serial.print(" "); Serial.println(1023); delay(10); } 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 }