#include <Servo.h>
const int pinoTrig = 13;
const int pinoEcho = 12;
const int pinoServo = 8;
const int pinoLed = 10;
const int pinoBuzzer = 11;
Servo servoMotor;
long tempoEco;
int distanciaCm;
int posicaoServo = 0;
bool subindoDirecao = true;
void setup() {
pinMode(pinoTrig, OUTPUT);
pinMode(pinoEcho, INPUT);
pinMode(pinoLed, OUTPUT);
pinMode(pinoBuzzer, OUTPUT);
servoMotor.attach(pinoServo);
Serial.begin(9600);
}
void loop() {
servoMotor.write(posicaoServo);
if (subindoDirecao) {
posicaoServo++;
if (posicaoServo >= 180) subindoDirecao = false;
} else {
posicaoServo--;
if (posicaoServo <= 0) subindoDirecao = true;
}
digitalWrite(pinoTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinoTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinoTrig, LOW);
tempoEco = pulseIn(pinoEcho, HIGH);
distanciaCm = tempoEco * 0.034 / 2;
if (distanciaCm > 0 && distanciaCm < 50) {
digitalWrite(pinoLed, HIGH);
int frequencia = map(distanciaCm, 2, 50, 2000, 500);
tone(pinoBuzzer, frequencia);
} else {
digitalWrite(pinoLed, LOW);
noTone(pinoBuzzer);
}
delay(20);
}Loading
st-nucleo-c031c6
st-nucleo-c031c6