Meu objetivo é fazer com que o Motor de Passo gire de 90 em 90 graus no sentido horário e anti-horário, enquanto isso o Sensor Ultrassônico que está acoplado deverá detectar se há um obstáculo em sua frente, e ativar um motor de vibração correspondente a direção em que está o obstáculo. O circuito individualmente está funcionando normalmente, porém quando em conjunto apenas o Motor de Passo executa sua função de maneira correta, os motores de vibração parecem não estar recebendo nenhum sinal quando há um obstáculo na frente do Sensor Ultrassônico. Segue a programação:
#include <Ultrasonic.h>
#include <Stepper.h>
const int stepsPerRevolution = 500;
long int distancia;
Ultrasonic ultrassom(3,2);
Stepper myStepper(stepsPerRevolution, 9,11,10,12);
void setup() {
myStepper.setSpeed(60);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}
void loop(){
long int distancia = ultrassom.Ranging(CM);
//Gira o motor no sentido horario a 90 graus (4x)-------------------
myStepper.step(-512);
delay(100);
if (distancia < 15){
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
}
delay(2000);
//-----------------------------------------------------------------
myStepper.step(-512);
delay(100);
if (distancia < 15){
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
}
delay(2000);
//-----------------------------------------------------------------
myStepper.step(-512);
delay(100);
if (distancia < 15){
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(5, LOW);
}
delay(2000);
//-----------------------------------------------------------------
myStepper.step(-512);
delay(100);
if (distancia < 15){
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
}
delay(2000);
//Gira o motor no sentido anti-horario a 90 graus (4x)-------------
myStepper.step(512);
delay(100);
if (distancia < 15){
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(5, LOW);
}
delay(2000);
//-----------------------------------------------------------------
myStepper.step(512);
delay(100);
if (distancia < 15){
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
}
delay(2000);
//-----------------------------------------------------------------
myStepper.step(512);
delay(100);
if (distancia < 15){
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
}
delay(2000);
//-----------------------------------------------------------------
myStepper.step(512);
delay(100);
if (distancia < 15){
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
}
delay(2000);
}