// ---------------------------------------------------
// ------ Let's create a basic-ass oscillator --------
// ---------------------------------------------------
// Basically, I'm testing the Wokwi system for potential DSP projects.
// Viewer discretion is STRONGLY advised
#include <LiquidCrystal.h>
// OSCILLATOR INITS
float freq = 0; //:
float amps = 100; //:
float speed = 0.5; //:
float offset = 500; //:
float delayer = 10; //:
float oscillator; //:
float randval; //:
float rand_off = 50; //:
// LCD INITS
#define rs 21
#define enable 12
#define d4 14
#define d5 27
#define d6 26
#define d7 25
LiquidCrystal LCD(rs, enable, d4, d5, d6, d7);
byte pins[] = {4,5,6}; // Initialize modes
void setup() {
// -----------------------------------------------
Serial.begin(9600); // Just because
LCD.begin(16,1);
for (int i = 0; i < 3; i ++){
pinMode(pins[i], OUTPUT);
}
} // -setup ----------------------------------------
void loop() {
// -----------------------------------------------
oscillator = sin(freq) * amps;
freq += speed; // Make the oscillator wiggle
randval = random(100) + rand_off;
delay(delayer); // Apparently ESP depends on a delay function
tone(4, oscillator + offset);
tone(5, randval);
LCD.println("\nFreq 1: " + String(oscillator+offset));
LCD.println("\nFreq 2: " + String(randval));
} // -loop ------------------------------------------