#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#define RotaryEncoderA 16
#define RotaryEncoderB 17
#define mosfetA 2
#define buttonA 18
#define pinHall 26
int counter = 0;
int aState;
int aLastState;
int buttonState = 0;
int lengthx = 1;
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup() {
u8g2.begin();
pinMode(RotaryEncoderA, INPUT);
pinMode(RotaryEncoderB, INPUT);
pinMode(buttonA, INPUT_PULLUP);
pinMode(pinHall, INPUT);
Serial.begin(9600);
aLastState = digitalRead(RotaryEncoderA);
u8g2.setFont(u8g2_font_logisoso32_tr);// choose a suitable font
}
void loop() { // INPUT HANDLER
//ROTARY ENCODER
aState = digitalRead(RotaryEncoderA);
if (aState != aLastState) {
if (digitalRead(RotaryEncoderB) != aState) {
counter ++;
} else {
counter --;
}
Serial.print("Position: ");
Serial.println(counter);
} else { delay(100); }
aLastState = aState;
//ROTARY ENCODER BUTTON
if (buttonState != digitalRead(buttonA)) {
buttonState = digitalRead(buttonA);
}
loop1();
}
void setup1() {
}
void loop1() { // RENDERER
int dataout = analogRead(pinHall) * 0.001 * counter;
u8g2.clearBuffer();
char buf[8];
itoa(counter, buf, 10);
u8g2.drawStr(0, 32, buf);
u8g2.drawBox(0, 32, counter, 32);
u8g2.sendBuffer();
if((counter > 0 ) && (counter < 255)) {
analogWrite(mosfetA, counter);
}
}