thanks again for the support ![]()
so far i got the loops to count using state change detection method on the examples from the Aurduino IDE.
however, when "stepspressure" reaches the limit, it immediately counts the first step of the| stepsposition" condition.
i think that i'm not setting the limits or the trigger right. any help will be highly appreciated ![]()
#define P1 2 //defining inputs of the positions on the rotary switch
#define P2 3
#define P3 4
#define S1 5
#define S2 6
#define S3 7
const int buttonPin = 8; //test led
const int ledPin = 13; //another test led
const int s = 10; //relay to position mode
const int p = 11; //relay to pressure mode
int buttonPushCounter;
int buttonState;
int lastButtonState = LOW;
int HP1;
int HP2;
int HP3;
int HS1;
int HS2;
int HS3;
int stepspressure;
int stepsposition;
int stepsposition1;
int stepspressure1;
long lastDebounceTime = 0;
long debounceDelay = 150;
void setup(){
pinMode(P1, INPUT);
pinMode(P2, INPUT);
pinMode(P3, INPUT);
pinMode(S1, INPUT);
pinMode(S2, INPUT);
pinMode(S3, INPUT);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(s, OUTPUT);
pinMode(p, OUTPUT);
digitalWrite(P1, HIGH);
digitalWrite(P2, HIGH);
digitalWrite(P3, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
Serial.begin(9600);
delay(4000);
Serial.println("Hello Sami");
}
void loop(){
int HP1 = !digitalRead(P1);
int HP2 = !digitalRead(P2);
int HP3 = !digitalRead(P3);
int HS1 = !digitalRead(S1);
int HS2 = !digitalRead(S2);
int HS3 = !digitalRead(S3);
int stepsposition = HS1 + 2*HS2 + 3*HS3;
int stepspressure = HP1 + 2*HP2 + 3*HP3;
buttonState = digitalRead(buttonPin);
if ((millis() - lastDebounceTime) > debounceDelay) {
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
if (stepspressure1 < stepspressure){
stepspressure1++;
digitalWrite(p, HIGH);
Serial.print("pressure ");
Serial.println(stepspressure1);
if (stepspressure1 == stepspressure){
stepsposition1 = 0;
digitalWrite(p, LOW);
}
}
if (stepsposition1 < stepsposition){
stepsposition1++;
digitalWrite(s, HIGH);
Serial.print("p ");
Serial.println(stepsposition1);
if (stepsposition1 == stepsposition){
stepspressure1 = 0;
digitalWrite(s, LOW);
}
}
}
lastDebounceTime = millis();
lastButtonState = buttonState;
}
}
}