const int ledPin = PB2;
const int blinkDelayTime = 40;
const int breathDelayTime = 5;
void setup() {
// Set the LED pin as OUTPUT
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int i = 0; i < 5; ++i) {
blinkPattern();
}
for (int i = 0; i < 5; ++i) {
breath();
}
for (int i = 0; i < 5; ++i) {
strob();
}
for (int i = 0; i < 5; ++i) {
randomFlash(100, 1000); // Call the function with min and max delay values
}
for (int i = 0; i < 5; ++i) {
quickFlashes(50, 50);
}
for (int i = 0; i < 5; ++i) {
tf();
}
for (int i = 0; i < 10; ++i) {
st1();
}
for (int i = 0; i < 5; ++i) {
blinkI();
}
for (int i = 0; i < 5; ++i) {
stwr();
}
for (int i = 0; i < 5; ++i) {
beacon();
}
}
void blinkPattern() {
digitalWrite(ledPin, HIGH);
delay(blinkDelayTime);
digitalWrite(ledPin, LOW);
delay(blinkDelayTime);
}
void breath() {
// Fade in
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness); // Set PWM duty cycle
delay(breathDelayTime); // Wait for a short period
}
// Fade out
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness); // Set PWM duty cycle
delay(breathDelayTime); // Wait for a short period
}
}
void strob() {
int d[8] = {15, 200, 15, 200, 15, 200, 15, 1500};
for (int i = 0; i < 4; i++) {
digitalWrite(ledPin, HIGH); delay(d[i * 2]);
digitalWrite(ledPin, LOW); delay(d[i * 2 + 1]);
}
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
delay(2500);
}
void randomFlash(int minInterval, int maxInterval) {
// Flash the LED twice with very quick intervals
for (int i = 0; i < 2; ++i) {
digitalWrite(ledPin, HIGH); // Turn the LED ON
delay(random(minInterval, maxInterval)); // Random ON time
digitalWrite(ledPin, LOW); // Turn the LED OFF
delay(random(minInterval, maxInterval)); // Random OFF time
}
// After two flashes, wait for a random interval before the next sequence
delay(random(minInterval, maxInterval));
}
void quickFlashes(int minInterval, int maxInterval) {
int onTime = random(minInterval, maxInterval); // Random ON time (quick)
int offTime = random(minInterval, maxInterval); // Random OFF time (quick)
digitalWrite(ledPin, HIGH); // Turn the LED ON
delay(onTime); // Wait for the quick ON time
digitalWrite(ledPin, LOW); // Turn the LED OFF
delay(offTime); // Wait for the quick OFF time
}
void tf() {
digitalWrite(ledPin, HIGH);
delay(30);
digitalWrite(ledPin, LOW);
delay(30);
digitalWrite(ledPin, HIGH);
delay(30);
digitalWrite(ledPin, LOW);
delay(30);
}
void st1() {
tf();
delay(100);
tf();
delay(500);
tf();
delay(50);
tf();
delay(10);
tf();
delay(300);
}
void blinkI() {
for (int blinkCount = 1; blinkCount <= 7; ++blinkCount) { // Increase blink count from 1 to 7
for (int i = 0; i < blinkCount; ++i) {
digitalWrite(ledPin, HIGH); // Turn the LED on
delay(200); // Wait for 200 milliseconds
digitalWrite(ledPin, LOW); // Turn the LED off
delay(200); // Wait for 200 milliseconds
}
delay(1000); // Wait for 1 second before the next increment
}
}
void stwr() {
tf();
delay(random(100, 1000));
tf();
delay(random(100, 1000));
}
void beacon() { // Slow increase in brightness
for (int brightness = 0; brightness <= 128; brightness++) { // Slow up to half brightness (128)
analogWrite(ledPin, brightness); // Increase brightness
delay(20); // Slow increase speed
}
// Fast burst to full brightness
for (int brightness = 128; brightness <= 255; brightness++) { // Fast burst from 128 to full brightness
analogWrite(ledPin, brightness); // Increase brightness quickly
delay(2); // Quick burst speed
}
// Turn off the LED
analogWrite(ledPin, 0); // Turn LED off
delay(500); // Wait before repeating the effect
}