cpp code
//Definicoes pinos Arduino ligados a entrada da Ponte H
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;
int PWMA = 5;
int PWMB = 6;
//Definições dos contadores
int contador1=0;
int contador2=0;
float timeold = 0;
float nvoltas1=0;
float nvoltas2=0;
float rmp1=0;
float rpm2=0;
float vel1;
float vel2;
int tempo=0;
int flag;
int a = 99;
int b = 111;
void setup() {
Serial.begin(9600);
Serial.println("Lendo dados do sensor...");
Serial.print("Contador1");
Serial.print(" ");
Serial.println("Contador2");
//Define os pinos como saida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
// Define as interrupções
attachInterrupt(0, ISR1, RISING);
attachInterrupt(1, ISR2, RISING);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print(contador1);
Serial.print(" ");
Serial.println(contador2);
delay(1000);
//Anda o robô para frente
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
Serial.println("Anda para frente");
analogWrite(PWMA,a);
analogWrite(PWMB,b);
//Calculo da velocidade do motor 1
noInterrupts();
tempo=(millis()-timeold);
nvoltas1= (contador1/20);
int rpm1 = (nvoltas1/tempo);
vel1=(((6.28)*(nvoltas1)*(32.5))/(tempo));
nvoltas2= (contador2/20);
rpm2 = (nvoltas2/tempo);
vel2=(((6.28)*(nvoltas2)*(32.5))/(tempo));
timeold = millis();
Serial.print("Velocidade1 ");
Serial.println("Velocidade2");
Serial.print(vel1);
Serial.print(" ");
Serial.print(vel2);
Serial.print(" ");
Serial.print(tempo);
Serial.print(" ");
Serial.print(nvoltas1);
Serial.print(" ");
Serial.print(contador1);
Serial.print(" ");
Serial.print(nvoltas2);
Serial.print(" ");
Serial.print(contador2);
Serial.print(" ");
Serial.print(a);
Serial.print(" ");
Serial.print(b);
Serial.print(" ");
Serial.print(rpm1);
Serial.print(" ");
Serial.print(rpm2);
delay(5000);
interrupts();
contador1=0;
contador2=0;
}
void ISR1()
{
contador1++;
}
void ISR2()
{
contador2++;
}