Está en catalán pero creo que se entiende bien. Espero que a alguien le llegue a ser de utilidad, cualquier duda preguntad!
/* CODI LLIURE */
/* Es mostra per pantalla la distancia a la que es troba l'objecte
del sensor d'ultrasons. Si es prem el polsador, el LED i el zumbador
s'activaran en cas que la distancia a l'ultrasons siga <=20cm; en
cas contrari romandran desactivats. /*
/* Crida a la llibreria Ultrasonic */
#include <Ultrasonic.h>
/* Creacio nou Ultrasonic */
Ultrasonic ultrasons(7,8);
/* Variables principals */
int LedPin = 13;
int zumb = 12;
int boto = 2;
int dist = 0;
/* Variables relacionades amb l'interruptor */
int estat = LOW;
int anterior = HIGH;
int lectura;
/* Variables de temps */
long temps = 0;
long antirebot = 200;
/* Inicialitzacio del programa */
void setup() {
Serial.begin(9600);
pinMode(LedPin, OUTPUT);
pinMode(zumb, OUTPUT);
pinMode(boto, INPUT);
Serial.println("\t\t\t\tAplicacio Ultrasonic!\n");
delay(5000);
}
/* Bucle del programa. Estructura principal */
void loop() {
dist = ultrasons.Ranging(CM);
Serial.print("Distancia: ");
Serial.print(dist);
Serial.println(" cm");
lectura = digitalRead(boto);
if(lectura==HIGH && anterior==LOW && millis()-temps>antirebot){
if(estat==HIGH) estat = LOW;
else estat = HIGH;
temps = millis();
}
if(dist<=20){
digitalWrite(LedPin, estat);
digitalWrite(zumb, estat);
}
else{
digitalWrite(LedPin, LOW);
digitalWrite(zumb, LOW);
}
anterior = lectura;
delay(250);
}
/* Fi del programa */