#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int amplitude = 30;
float frequency = 0.1;
void drawSignalSine(float frec)
{
float delay = 1/frec*1000;
for (int i = 0; i < SCREEN_WIDTH; i++)
{
int y = round(amplitude * sin( 2*3.1459*frec * i) + SCREEN_HEIGHT / 2);
display.drawPixel(i, y, SSD1306_WHITE);
//Serial.println(frec);
//Serial.println(delay);
//delayMicroseconds(delay);
}
}
void setup()
{
//Serial.begin(115200);
pinMode(A0, INPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("Error al inicializar la pantalla SSD1306"));
for (;;)
;
}
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
analogReference(DEFAULT);
}
void loop()
{
int x = analogRead(A0);
int y = map(x, 0, 1023, 1, 25);
float periodo = 1/(float)y;
//Serial.println(y);
display.clearDisplay();
drawSignalSine(y);
display.display();
//delayMicroseconds(100); // Pequeña pausa para suavizar el cambio
}