SOS

Here is a video of how we made an SOS code with the operation of ESP-WROOM-32, below the video you have the steps I took to get this SOS code.

    

Blink 2


//Step 1: Defining the constants
int pin_led = 23; //The led is connected at pin D23
const int dot = 200; //I'm defining "dot" as the delay, that is the waiting time
const int dash = dot*3; //I'm defining "dash" as "dot*3", that it would be delay 600
const int space = dot*7; //I'm defining "space" as "dot*7", that it would be delay 1400

//Step 2
void setup() {
  //setup pin 23 as a digital output because the light goes out
    pinMode(pin_led, OUTPUT); //
}

//Paso 3
void S() { 
  //Here I'm defining the variable S
  digitalWrite(pin_led, HIGH);
   delay(dot);
   digitalWrite(pin_led, LOW);
   delay(dot);
   digitalWrite(pin_led, HIGH);
   delay(dot);
   digitalWrite(pin_led, LOW);
   delay(dot);
   digitalWrite(pin_led, HIGH);
   delay(dot);
   digitalWrite(pin_led, LOW);
   delay(dot);
}
void O() {
  //Here I'm defining the variable S
   digitalWrite(pin_led, HIGH);
   delay(dash);
   digitalWrite(pin_led, LOW);
   delay(dot);
   digitalWrite(pin_led, HIGH);
   delay(dash);
   digitalWrite(pin_led, LOW);
   delay(dot);
   digitalWrite(pin_led, HIGH);
   delay(dash);
   digitalWrite(pin_led, LOW);
   delay(dot); 
}

//Paso 4
void loop() {
  //Here I'm calling the two variables I defined before with a "space" that ends the loop
  S();
  O();
  S();
  
delay(space);
}

Blink 1


//Step 1: Defining the constants
int pin_led = 23; //The led is connected to the pin 23

//Step 2: Here we define that the led is an output
void setup() {
    pinMode(pin_led, OUTPUT); 
    
}

//Step 3: We call the code SOS
void loop() {
    
    digitalWrite(pin_led, HIGH); //Here starts the S
    delay(200);
    digitalWrite(pin_led, LOW);
    delay(200);
    digitalWrite(pin_led, HIGH);
    delay(200);
    digitalWrite(pin_led, LOW);
    delay(200);
    digitalWrite(pin_led, HIGH);
    delay(200);
    digitalWrite(pin_led, LOW);
    delay(200);
    
    digitalWrite(pin_led, HIGH); //Here starts the O
    delay(600);
    digitalWrite(pin_led, LOW);
    delay(200);
    digitalWrite(pin_led, HIGH);
    delay(600);
    digitalWrite(pin_led, LOW);
    delay(200);
     digitalWrite(pin_led, HIGH);
    delay(600);
    digitalWrite(pin_led, LOW);
    delay(200);

    digitalWrite(pin_led, HIGH); //Here starts the S
    delay(200);
    digitalWrite(pin_led, LOW);
    delay(200);
    digitalWrite(pin_led, HIGH);
    delay(200);
    digitalWrite(pin_led, LOW);
    delay(200);
    digitalWrite(pin_led, HIGH);
    delay(200);
    digitalWrite(pin_led, LOW);
    delay(200);

    digitalWrite(pin_led, LOW); //A pause to mark the end
    delay(1400);
}

Blink 3


//Step 1: Defining the constants
int ledPin = 23;

//Step 2: Here we define that the led is an output
void setup() { 
  pinMode (ledPin, OUTPUT);
}

//Step 3: Here we create the constant flash
void intermittent(int nf, int d){ //int is for integer numbers, nf is the times that will occur and d the time
for(int i = 0; i< nf; i++){
 digitalWrite (ledPin, HIGH);
 delay (d);
 digitalWrite (ledPin, LOW);
 delay (d);
 }
}

//Step 4: here we call the constant that we created
void loop() { 
intermittent(3,200);
digitalWrite (ledPin, LOW);
delay (400);
intermittent(3,600);
digitalWrite (ledPin, LOW);
delay (400);
intermittent(3,200);
digitalWrite (ledPin, LOW);
delay (1200);


Blink 4


//Step 1: Defining the constants
const byte ledPin = 23;

void setup()

// We define ledPin as output

pinMode(ledPin, OUTPUT)

//Now we create a function for short blink, that is the S in the SOS code

void shortBlink()

// Make a single short blink for the code

digitalWrite(ledPin, HIGH)

delay(200)

digitalWrite(ledPin, LOW)

delay(200)

void longBlink()

// Make a single long blink, that is the O in the SOS code

digitalWrite(ledPin, HIGH)

delay(600)

digitalWrite(ledPin, LOW)

delay(200);

}

void morseBlink(char character) {

// Here, we translate characters (s,o,s) to Morse code

switch(character){

case ‘s‘:

shortBlink();

shortBlink();

shortBlink();

break;

case ‘o‘:

longBlink();

longBlink();

longBlink();

break;

}

}

void loop() {

// Finally we call the two letters that we defined before

morseBlink(‘s‘);

morseBlink(‘o‘);

morseBlink(‘s’);

}

Morse code with speaker

Here is a video where you can see the operation of the ESP-WROOM-32 with an SOS code.

As you can see in the video the speaker works perfectly, for it to work what we have done has been to download the ESP32SERVO library, with this code it already recognizes it perfectly. We also had to look for where to connect the speaker: The positive leg on the D25 and the negative leg on the GND. Due to Morse code we had to download other libraries, which we have left below

    #include < ESP32Servo.h >
#include < analogWrite.h >
#include < ESP32Tone.h >
#include < ESP32PWM.h >
//#include < tone.h >
//In this case, we have include the ESP32Servo's library (If you want to download it, here is the link: https://github.com/jkb-git/ESP32Servo) in order to enable all the functions, because the ESP-Wroom 32 board does we found that not support all the functions, and needs other external libraries

#include < pitches.h >
#include < Tone32.h >
//Here we include Tone32 (that we already mentioned in the problem we had with the speaker, there you will find the download link) that is necessary so that our board can correctly read the code 
//the speaker's "tone" function, a function that allows you to control the pin, frequency and duration, in that order

// Numero 7
// Led + Tone
const int led = 2;
String code = "";
int len = 0;
char ch;
char new_char;
int unit_delay = 250;
void dot()
{
Serial.print(".");
digitalWrite(led, HIGH);
tone(25, 262, 200); //The variables of the speaker we define in which pin it goes, that is because we put it directly in the functions 
//And then we put the frequency and duration, that is: tone (pin, frequency, duration)
delay(unit_delay);
digitalWrite(led, LOW);
delay(unit_delay);
}
void dash()
{
Serial.print("-");
digitalWrite(led, HIGH);
tone(25, 440, 600);
delay(unit_delay * 3);
digitalWrite(led, LOW);
delay(unit_delay);
}
void A()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void B()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void C()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
}
void D()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void E()
{
dot();
delay(unit_delay);
}
void f()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
}
void G()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
}
void H()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void I()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void J()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void K()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void L()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void M()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void N()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
}
void O()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void P()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
}
void Q()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void R()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
}
void S()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void T()
{
dash();
delay(unit_delay);
}
void U()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void V()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void W()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void X()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void Y()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void Z()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void one()
{
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void two()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void three()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void four()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dash();
delay(unit_delay);
}
void five()
{
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void six()
{
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void seven()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void eight()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
dot();
delay(unit_delay);
}
void nine()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dot();
delay(unit_delay);
}
void zero()
{
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
dash();
delay(unit_delay);
}
void morse()
{
if (ch == 'A' || ch == 'a')
{
A();
Serial.print(" ");
}
else if (ch == 'B' || ch == 'b')
{
B();
Serial.print(" ");
}
else if (ch == 'C' || ch == 'c')
{
C();
Serial.print(" ");
}
else if (ch == 'D' || ch == 'd')
{
D();
Serial.print(" ");
}
else if (ch == 'E' || ch == 'e')
{
E();
Serial.print(" ");
}
else if (ch == 'f' || ch == 'f')
{
f();
Serial.print(" ");
}
else if (ch == 'G' || ch == 'g')
{
G();
Serial.print(" ");
}
else if (ch == 'H' || ch == 'h')
{
H();
Serial.print(" ");
}
else if (ch == 'I' || ch == 'i')
{
I();
Serial.print(" ");
}
else if (ch == 'J' || ch == 'j')
{
J();
Serial.print(" ");
}
else if (ch == 'K' || ch == 'k')
{
K();
Serial.print(" ");
}
else if (ch == 'L' || ch == 'l')
{
L();
Serial.print(" ");
}
else if (ch == 'M' || ch == 'm')
{
M();
Serial.print(" ");
}
else if (ch == 'N' || ch == 'n')
{
N();
Serial.print(" ");
}
else if (ch == 'O' || ch == 'o')
{
O();
Serial.print(" ");
}
else if (ch == 'P' || ch == 'p')
{
P();
Serial.print(" ");
}
else if (ch == 'Q' || ch == 'q')
{
Q();
Serial.print(" ");
}
else if (ch == 'R' || ch == 'r')
{
R();
Serial.print(" ");
}
else if (ch == 'S' || ch == 's')
{
S();
Serial.print(" ");
}
else if (ch == 'T' || ch == 't')
{
T();
Serial.print(" ");
}
else if (ch == 'U' || ch == 'u')
{
U();
Serial.print(" ");
}
else if (ch == 'V' || ch == 'v')
{
V();
Serial.print(" ");
}
else if (ch == 'W' || ch == 'w')
{
W();
Serial.print(" ");
}
else if (ch == 'X' || ch == 'x')
{
X();
Serial.print(" ");
}
else if (ch == 'Y' || ch == 'y')
{
Y();
Serial.print(" ");
}
else if (ch == 'Z' || ch == 'z')
{
Z();
Serial.print(" ");
}
else if (ch == '0')
{
zero();
Serial.print(" ");
}
else if (ch == '1')
{
one();
Serial.print(" ");
}
else if (ch == '2')
{
two();
Serial.print(" ");
}
else if (ch == '3')
{
three();
Serial.print(" ");
}
else if (ch == '4')
{
four();
Serial.print(" ");
}
else if (ch == '5')
{
five();
Serial.print(" ");
}
else if (ch == '6')
{
six();
Serial.print(" ");
}
else if (ch == '7')
{
seven();
Serial.print(" ");
}
else if (ch == '8')
{
eight();
Serial.print(" ");
}
else if (ch == '9')
{
nine();
Serial.print(" ");
}
else if(ch == ' ')
{
delay(unit_delay*7);
Serial.print("/ ");
}
else
Serial.println("Unknown symbol!");
}
void String2Morse()
{
len = code.length();
for (int i = 0; i < len; i++)
{
ch = code.charAt(i);
morse();
}
}
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT); //pinMode(tone, OUTPUT);
Serial.println("I am ready...");
}
void loop() {
while (Serial.available())
{
code = Serial.readString();
Serial.print(code);
Serial.print(" = ");
String2Morse();
Serial.println("");
}
delay(1000);
}