Gå til innhold

19. desember

Aktiv buzzer trenger bare spenning inn som input for å gi lyd. Plussen kobler man til D4 i vårt tilfelle og den korte pinnen til jord (blå linje). Programmet nedenfor veksler også mellom grønt og rødt lys når SOS sendes.

buzzer + → D4
buzzer - → blå linje

https://gist.github.com/senikk/9917aaccb3d5437310003026353fffb1

#include <Bounce2.h>
// Definer RGB LED-pinnene
int redPin = 15; // Rød pinne (PWM)
int greenPin = 21; // Grønn pinne (PWM)
int bluePin = 22; // Blå pinne (PWM)
int buttonPin = 23;
int buzzerPin = 4;
// PWM-kanaler for ESP32
int redChannel = 0;
int greenChannel = 1;
int blueChannel = 2;
const int dotDuration = 500; // Varighet for en prikk (500 ms)
const int dashDuration = 1500; // Varighet for en strek (1500 ms)
const int symbolSpace = 500; // Pause mellom tegn (prikk og strek)
const int letterSpace = 1500; // Pause mellom bokstaver
Bounce debouncer = Bounce();
void setup() {
ledcAttachChannel(redPin, 5000, 8, redChannel);
ledcAttachChannel(greenPin, 5000, 8, greenChannel);
ledcAttachChannel(bluePin, 5000, 8, blueChannel);
setColor(0,255,0);
pinMode(buttonPin, INPUT_PULLDOWN);
pinMode(buzzerPin, OUTPUT);
debouncer.attach(buttonPin);
debouncer.interval(50);
}
void loop() {
debouncer.update();
if (debouncer.rose()) {
setColor(255,0,0);
sendSOS();
setColor(0,255,0);
}
}
void sendSOS() {
// Send "S" (…)
dot();
dot();
dot();
delay(letterSpace); // Pause mellom bokstaver
// Send "O" (---)
dash();
dash();
dash();
delay(letterSpace); // Pause mellom bokstaver
// Send "S" (…)
dot();
dot();
dot();
delay(letterSpace); // Pause mellom bokstaver
}
void dot() {
digitalWrite(buzzerPin, HIGH); // Slå på buzzeren
delay(dotDuration); // Vent i prikkens varighet
digitalWrite(buzzerPin, LOW); // Slå av buzzeren
delay(symbolSpace); // Pause mellom tegn
}
void dash() {
digitalWrite(buzzerPin, HIGH); // Slå på buzzeren
delay(dashDuration); // Vent i strekkens varighet
digitalWrite(buzzerPin, LOW); // Slå av buzzeren
delay(symbolSpace); // Pause mellom tegn
}
// Funksjon for å sette RGB farge på LED-en
void setColor(int r, int g, int b) {
ledcWrite(redPin, r);
ledcWrite(greenPin, g);
ledcWrite(bluePin, b);
}
view raw 19.12.sos.ino hosted with ❤ by GitHub