// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298
#define dbg(myFixedText, variableName) \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName);
#define dbgi(myFixedText, variableName,timeInterval) \
{ \
static unsigned long intervalStartTime; \
if ( millis() - intervalStartTime >= timeInterval ){ \
intervalStartTime = millis(); \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName); \
} \
}
#define dbgc(myFixedText, variableName) \
{ \
static long lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
#define dbgcf(myFixedText, variableName) \
{ \
static float lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *
int a = 2;
int b = 3;
int k;
int v;
int pp = 9;
int d = 10;
int pos = 0;
int angle;
void setup() {
Serial.begin(9600);
pinMode(a, INPUT);
pinMode(b, INPUT);
pinMode(pp, OUTPUT);
pinMode(d, OUTPUT);
}
void loop() {
k = digitalRead(a);
v = digitalRead(b);
// only if value of variable "k" CHANGED print once
dbgc("ToL01",k);
// only if value of variable "v" CHANGED print once
dbgc("ToL02",v);
// print value of variable "k" once every 1000 milliseconds
//dbgi("ToL0A", k, 1000);
// print value of variable "v" once every 1000 milliseconds
//dbgi("ToL0A", v, 1000);
if (k > v) {
pos++;
//Serial.println("clk=");
angle = pos;
//Serial.print(pos);
}
else if (v > k) {
pos--;
//Serial.println("anticlk=");
angle = pos;
//Serial.print(pos);
}
else {
pos = 0;
//Serial.print("no rotation=");
angle = pos;
//Serial.print(pos);
}
dbgc("03",pos);
//dbgi("0C", pos, 1000);
angle = map(angle, 0, 8192, 0, 360);
dbgc("04",angle);
//dbgi("0D", angle, 1000);
}