I am reading a value from an encoder "volume knob" and I have a function called void fn_on were I am having sum int to zero and counting until it reaches the set value of volume. I tried posting to serial but my sum counter does not work. I want my relay to run "volume" number of times until sum > volume in my function "fn_on" I believe I am not storing or updating my volume correctly. Thank you for taking the time to look through this.
#include <LiquidCrystal_I2C.h>
#include <LCD_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
/*
Rotary Encoder - Polling Example
The circuit:
* encoder pin A to Arduino pin 2
* encoder pin B to Arduino pin 3
* encoder ground pin to ground (GND)
*/
#define PINA 2
#define PINB 3
#define PUSHB 5
#define RelayPin 8
const int sum = 0;
#include <Rotary.h>
long volume = 0; // this may not set the volumue
Rotary r = Rotary(2, 3);
void setup() {
Serial.begin(9600);
r.begin(true);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 3);
lcd.print(volume);
digitalWrite (PINA, HIGH); // enable pull-ups
digitalWrite (PINB, HIGH);
digitalWrite (PUSHB, HIGH);
pinMode(RelayPin, OUTPUT); //Relay Pin ini
}
void loop() {
unsigned char result = r.process();
if (result) {
Serial.println(result == DIR_CW ? "Right" : "Left");
if (result == DIR_CCW) {
volume = volume - 1000; // change ++ to mulpes of 1000
lcd.setCursor(0, 3);
lcd.print(volume);
lcd.print(" ");
} else {
volume = volume + 1000; // change volume++ to mulpes of 1000
lcd.setCursor(0, 3);
lcd.print(volume);
//initialize display_menu to 1st line
//initialize display_menu to 1st line
lcd.setCursor(0, 3);
lcd.print(volume);
lcd.print(" ");
}
}
}
void fn_on() {
int sum =0;
while(sum < volume){
sum = sum + 1;
lcd.setCursor(0, 2);
lcd.print(sum);
digitalWrite(RelayPin, LOW);//run test
delay(3000);
digitalWrite(RelayPin, HIGH);//run test
delay(3000);
digitalWrite(RelayPin, LOW);//run test
delay(3000);
}
}