eu queria que meu servo movimentasse quando  o sensor ultrassonico detectar algo na frente dele , mas não consegui, o servo motor se movimenta com sucesso quando coloco o for dentro do else, mas dentro do if ele gira sem parar :

// programa para o sensor ultrassonico

#include <Servo.h>

#define SERVO 6 // Porta Digital 6 PWM

Servo s; // Variável Servo
int pos; // Posição Servo
int ledPin = 13; //configura o pino 13 da Arduino para conexão do LED
int trig = 8;    //configura o pino 8 da Arduino para conexão do Trig do sonar
int echo = 11;    //configura o pino 11 (PWM) da Arduino para conexão do Echo do sonar

void setup( ) {
    pinMode(trig, OUTPUT);   //define o pino 8 como um output (envia sinal do sensor)
    pinMode(echo, INPUT);    //define o pino 7 como um input (recebe sinal do sensor)
    pinMode(ledPin, OUTPUT); //define o pino 13 como um output (aciona o LED)
    Serial.begin(9600);    
    Serial.print("distancia");

    
  s.attach(SERVO);
  Serial.begin(9600);
  s.write(0); // Inicia motor posição zero

}

void loop(){
    float tempo, cm;
    //comandos para enviar um pulso do sonar e armazenar o tempo de resposta
    digitalWrite(trig, LOW);
    delayMicroseconds(2);
    digitalWrite(trig, HIGH); //ativa o sonar por 10 microssegundos
    delayMicroseconds(10);
    digitalWrite(trig, LOW);
    delayMicroseconds(2);
    tempo = pulseIn(echo, HIGH);  // tempo, recebe o tempo de ida e volta do sinal
    cm =  tempo/29/2; //converte duration em centímetros
    Serial.println(cm);
    // Se cm menor ou igual a 30, liga o LED
    if (cm <= 30)
    {

   digitalWrite(ledPin, HIGH);
 
    }
else  {
        digitalWrite(ledPin, LOW);

        for(pos = 0; pos < 90; pos++)
  {
    s.write(pos);
  delay(15);
  }
delay(1000);
  for(pos = 90; pos >= 0; pos--)
  {
    s.write(pos);
    delay(15);
  }
}
}

Exibições: 4416

Responder esta

Respostas a este tópico

Bom dia J2S,

Leia: http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

e depois remova seu sketch da área de texto do tópico.

RV

Recomendo:

Fazer a correta indentação, fica complicado entender se determinado bloco tem dependencia do anterior, vide:

https://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o

https://www.arduino.cc/en/Guide/Environment#auto

Na versão acima tudo está no else, inclusive 2x o for(;;) e um delay(1000) O seu problema deve ser de colchetes. Identando vc mesmo vai enxergar o erro, acho.

Jessica,

Estou verificando seu programa, mas preciso entender o que realmente deseja fazer com o sensor e com o servo motor, pretende deixar o funcionamento do servo em função da distancia que o sensor lê ? porque no programa, esta setado um valor de (cm <= 30) -> apenas liga o led, senão ele fica movimentando o servo motor.

Existem também algumas bibliotecas utilizando este sensor, o que facilita caso não use profissionalmente:
https://www.filipeflop.com/blog/sensor-ultrassonico-hc-sr04-ao-ardu...

em anexo o Programa com extensão C.

Me informe melhor o que deseja fazer que tento ajudar e siga a dica do RV sobre seu Sketch.

Anexos

obrigada pela atenção leonardo, me chama no email que paso meu whats jessicassoarez@gmail.com

RSS

© 2023   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço