/*
* PWM Generator + POT + OLED Display + D5 PWM Out
* Visit https://www.twovolt.com for Schematic, PCB Layout and Arduino Code
* Modified code Original Autor: Eng. Wagner Rambo www.wrkits.com.br
*/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Definitions
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Global Variables
int pwm = 0;
int freq = 1;
// Initial Settings
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Initializes OLED with I2C address 0x3C (for 128x64)
display.clearDisplay();
display.display();
delay(100);
} //end setup
// --- Loop Infinito ---
void loop()
{
display.setTextSize(2);
display.setTextColor(WHITE);
display.clearDisplay();
display.setCursor(80,10);
display.print(pwm);
display.print("%");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(80,40);
display.print("PWM");
display.setCursor(2,10);
display.print(freq);
display.print("Hz");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(2,40);
display.print("FREQ");
display.display();
delay(1);
pwm = map(analogRead(A0), 0, 1023, 0, 255);
analogWrite(5, pwm);
pwm = map(pwm, 0, 255, 0, 100);
freq = map(analogRead(A1), 0, 1023, 1, 1024);
analogWrite(13, freq);
freq = map(freq, 1, 1024, 0, 1000);
} //end loop