#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
//Declaration foran SSD1306 display connected to I2C(SDA,SCLpins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire,
-1);
// Array of LED output pins
const int pins[3] = {25, 32, 33};
const int blueLED = 2;// Debugging LED used to indicate end of message
// Initialization
int currentPin = 0;
int pinPos = 0;
String message = "";
String messageTranslated = "";
char delimeter = '/';
// Delays
const int wordSeparation = 500;
const int letterSeparation = 400;
const int dot = 100;
const int dash = 300;
//Custom function declarations
void setPin();
void changePins();
void displayMessage(int d);
void reset();
//Entry point
void setup() {
delay(1000);
Serial.begin(115200);
currentPin = pins[pinPos];
pinMode(currentPin, OUTPUT);
pinMode(blueLED, OUTPUT);
messageTranslated = "Strength is life, for the strong have the right to rule. Honor is life, for with no honor one may as well be dead. Loyalty is life, for without one’s clan one has no purpose. Death is life, one should die as they have lived. This is the way.";
message = "... - .-. . -. --. - .... / .. ... / .-.. .. ..-. . --..-- / ..-. --- .-. / - .... . / ... - .-. --- -. --. / .... .- ...- . / - .... . / .-. .. --. .... - / - --- / .-. ..- .-.. . .-.-.- / .... --- -. --- .-. / .. ... / .-.. .. ..-. . --..-- / ..-. --- .-. / .-- .. - .... / -. --- / .... --- -. --- .-. / --- -. . / -- .- -.-- / .- ... / .-- . .-.. .-.. / -... . / -.. . .- -.. .-.-.- / .-.. --- -.-- .- .-.. - -.-- / .. ... / .-.. .. ..-. . --..-- / ..-. --- .-. / .-- .. - .... --- ..- - / --- -. . .-..-. ... / -.-. .-.. .- -. / --- -. . / .... .- ... / -. --- / .--. ..- .-. .--. --- ... . .-.-.- / -.. . .- - .... / .. ... / .-.. .. ..-. . --..-- / --- -. . / ... .... --- ..- .-.. -.. / -.. .. . / .- ... / - .... . -.-- / .... .- ...- . / .-.. .. ...- . -.. .-.-.- / - .... .. ... / .. ... / - .... . / .-- .- -.-- .-.-.-";
//OLED setup
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // Address 0x3D for 128x64
{
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 30);
String dispMessage = "";
for(int i = 0; i < 8; i++)
{
dispMessage += messageTranslated[i];
}
// Display static text
display.println(dispMessage);
display.display();
delay(100);
}
void loop() {
display.startscrollright( 0x00 , 0x0F);
delay(7000);
display.stopscroll();
delay(1000);
display.startscrollleft(0x00, 0x0F);
delay(7000);
display.stopscroll();
delay(1000);
for(int i = 0; i < message.length(); i++)
{
if(message[i] == delimeter)
{
setPin();
changePins();
}
else
{
switch(message[i])
{
case('.'):
displayMessage(dot);
break;
case('-'):
displayMessage(dash);
break;
default:
displayMessage(letterSeparation);
break;
}
}
}
reset();
}
//Custom functions
void setPin()
{
if(pinPos == 2)
{
pinPos = 0;
}
else
{
pinPos = pinPos + 1;
}
}
void changePins()
{
currentPin = pins[pinPos];
pinMode(currentPin, OUTPUT);
delay(wordSeparation);
}
void displayMessage(int d)
{
digitalWrite(currentPin, HIGH);
delay(d);
digitalWrite(currentPin, LOW);
delay(d);
}
void reset() {
digitalWrite(blueLED, HIGH);
delay(4500);
digitalWrite(blueLED, LOW);
pinPos = 0;
currentPin = pins[pinPos];
pinMode(currentPin, OUTPUT);
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4
Loading
ssd1306
ssd1306