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 <Rotary.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 RelayPin 8
const char PUSHB = 5;
bool pressed = false;
long volume = 0; // this may not set the volumue
Rotary r = Rotary(2, 3);
void setup()
{
Serial.begin(115200); // setup Pin modes
pinMode(PUSHB, INPUT);
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()
{
bool currentState = digitalRead(PUSHB);
if (currentState == pressed)
{
Serial.println("Pressed");
while (digitalRead(PUSHB) == pressed)
{
// do nothing
}
}
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
Serial.println(volume);
lcd.setCursor(0, 3);
lcd.print(volume);
lcd.print(" ");
int sum = 0;
for (sum = 1; sum < volume; sum++ && currentState = true)
{
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);
}
}
else
{
volume = volume + 1000; // change volume++ to mulpes of 1000
// initialize display_menu to 1st line
lcd.setCursor(0, 3);
lcd.print(volume);
lcd.print(" ");
}
}
}
fn_on()
in your code? And do you know you have two variables called “sum”: one as aconst int
in your global scope and one as anint
within thefn_on()
function?