Buenas. tengo este codigo para hacer algo como esto:
solo que le agrego una sirena con el buzzer.
#include <Servo.h>
const int trigPin = 5;
const int echoPin = 6;
const int led = 13;
const int buzzer = 8;
long duration, distance;
Servo servo;
/*** Setup ***/
void setup()
{
Serial.begin(9600);
servo.attach(12);
pinMode(buzzer, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
/*** Loop ***/
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 20 && distance > 2)
{
Serial.println("Alarma");
servo.write(0);
sirena();
}
else
{
servo.write(90);
}
noTone(buzzer);
delay(100);
}
void sirena()
{
for (int i = 40; i < 1000; i++)
{
delay(1);
tone(buzzer, i);
}
delay(500);
for (int i = 1000; i > 40; i--)
{
delay(1);
tone(buzzer, i);
}
}
en el Uno todo funciona correctamente pero en Nano es como si tuviera un delay entre vuelta y vuelta del loop().
en este video de 20" se ve lo que digo
¿alguna idea?
