Indice
Descrizione
In questo video tutorial vedremo come utilizzare un laser per creare un semplice sistema di allarme fai-da-te. Imparerai a collegare correttamente tutti i componenti, configurando Arduino per rilevare l’interruzione del fascio laser.
Durante il video analizzeremo passo dopo passo lo schema, il codice Arduino e il funzionamento dell’intero circuito. È un progetto ideale per chi vuole imparare a usare sensori ottici e realizzare sistemi di sicurezza basilari con Arduino.
Alla fine del tutorial potrai personalizzare il progetto per rendere il tuo sistema di allarme ancora più completo ed efficace.
#define LASER_PIN 4#define BUTTON_PIN 7 void setup() { pinMode(LASER_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT);} void loop() { if (digitalRead(BUTTON_PIN)) { digitalWrite(LASER_PIN, !digitalRead(LASER_PIN)); delay(200); }}
#define LASER_PIN 4#define SENSOR_PIN A0 void setup() { Serial.begin(9600); pinMode(LASER_PIN, OUTPUT); digitalWrite(LASER_PIN, HIGH);} void loop() { int value = analogRead(SENSOR_PIN); Serial.println(value); delay(200);}
#define LASER_PIN 4#define BUTTON_PIN 7#define SENSOR_PIN A0#define RED_LED_PIN 9#define GREEN_LED_PIN 8#define BUZZER_PIN 2 #define THRESHOLD 980#define BLINK_INTERVAL 250#define BUZZER_INTERVAL 5#define BUZZER_MIN_FREQ 600#define BUZZER_MAX_FREQ 1800#define BUZZER_FREQ_STEP 5 void setup() { pinMode(LASER_PIN, OUTPUT); pinMode(RED_LED_PIN, OUTPUT); pinMode(GREEN_LED_PIN, OUTPUT); pinMode(BUZZER_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT);} void loop() { static bool enabled = false; static bool alarm = false; if (digitalRead(BUTTON_PIN)) { enabled = !enabled; alarm = false; digitalWrite(RED_LED_PIN, LOW); digitalWrite(LASER_PIN, enabled); digitalWrite(GREEN_LED_PIN, enabled); noTone(BUZZER_PIN); delay(200); } if (!enabled) { return; } if (alarm) { unsigned long currentTime = millis(); updateLed(currentTime); updateBuzzer(currentTime); return; } if (analogRead(SENSOR_PIN) < THRESHOLD) { digitalWrite(LASER_PIN, LOW); digitalWrite(GREEN_LED_PIN, LOW); alarm = true; }} void updateLed(unsigned long time) { static unsigned long lastTime = 0; if (time - lastTime >= BLINK_INTERVAL) { digitalWrite(RED_LED_PIN, !digitalRead(RED_LED_PIN)); lastTime = time; }} void updateBuzzer(unsigned long time) { static unsigned long lastTime = 0; static int frequency = BUZZER_MIN_FREQ; static int direction = 1; if (time - lastTime >= BUZZER_INTERVAL) { frequency += direction * BUZZER_FREQ_STEP; if (frequency <= BUZZER_MIN_FREQ || frequency >= BUZZER_MAX_FREQ) { direction *= -1; } tone(BUZZER_PIN, frequency); lastTime = time; }}
In qualità di Affiliato Amazon riceviamo un guadagno dagli acquisti idonei