Paso 4: {alternativo} circuito de Arduino + código
Cableado:
A continuación se muestra el cableado.
El ámbar LED tiene su + cable conectado al pin Arduino digital 11. -El cable está conectado a tierra.
El LED rojo tiene su + cable conectado al pin digital 7 de Arduino. -El cable está conectado a tierra.
El zumbador tiene su + cable conectado al pin Arduino digital 4. -El cable está conectado a tierra.
El sensor de distancia infrarrojo tuvo su conductor rojo (+) conectado a la línea de 5V de Arduino.
El sensor de distancia infrarrojo tuvo su cable negro (-) conectado a la línea de gnd de Arduino.
El sensor de distancia infrarrojo tenía su plomo, amarillo y blanco conectado a Arduino analógica en el pin 0.
Código:
El código siguiente se copia de "alcahuete de la calabaza" o se puede descargar el bosquejo ahora.
----------------------------------------------------------------------------------
#define CANDLELED 11
#define rojo 7
#define zumbador 5
#define SENSOR 4 //nvm no
#define PROXIMITY_THRESHOLD 85 / / modificar este # para cambiar la sensibilidad
#define PROXIMITY_CONSECUTIVE_READINGS 3 / / puedo sugerir esta aumentando a tal vez 5-8
#define BUZZER_FREQUENCY 38
#define FLICKER_INTERVAL 25
previousMillis largo = 0;
closeReadings largo = 0;
void setup() {}
pinMode (CANDLELED, salida);
pinMode (rojo, salida);
pinMode (zumbador, salida);
pinMode (SENSOR, entrada); NVM no usando
Delay(1000); Deje que el sensor de proximidad inicializar
}
void loop() {}
¿Si (analogRead(0) > PROXIMITY_THRESHOLD) / / es alguien cercano?
{
closeReadings ++;
Si (closeReadings > = PROXIMITY_CONSECUTIVE_READINGS) / requiere números lecturas consecutivas de "cerrar" antes de entrar en modo malvado. Esto evita que pequeños repuntes del zumbador.
{
digitalWrite (CANDLELED, bajo);
digitalWrite (rojo, alto);
tono (timbre, BUZZER_FREQUENCY);
}
}
otra cosa
{//regular parpadeo de vela. Basado en Arduino ejemplo BlinkWithoutDelay.
noTone(BUZZER);
digitalWrite (rojo, baja);
closeReadings = 0;
unsigned currentMillis largo = millis();
Si (currentMillis - previousMillis > FLICKER_INTERVAL)
{
previousMillis = currentMillis;
analogWrite (CANDLELED, al azar (0, 256));
}
}
}