Показания снимаются с аналогового пина и нужно сравнивать два значения. Первое это в нынешний момент, а второе через 3 секунды. Каким образом это можно осуществить?
Вообще надо сделать так, что если показания с Аналогового пина меняются слишком быстро, то изменять переменную "с" примерно в интервале в 2 секунды
Код (C++): unsigned long previousMillis = 0; const long interval = 2000; //интервал в миллисекундах (2000мс = 2 сек) .... if (millis() - previousMillis >= interval) { //срабатывает раз в interval previousMillis = millis(); //Делаем что-то if(c != j){ c = j; } } .... Вот вам хороший шаблон из примера Blink without Delay в среде ArduinoIDE
Код (C++): int rotationOld; unsigned long currentTime; unsigned long loopTime; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(ledPin9, OUTPUT); pinMode(POT_PIN, INPUT); Serial.begin(9600); loopTime = millis(); // считываем время, прошедшее с момента запуска программы } void loop() { int rotation, c; rotationOld = analogRead(POT_PIN); currentTime = millis(); // считываем время, прошедшее с момента запуска программы if (currentTime >= (loopTime + 2000)) { // сравниваем текущий таймер с переменной loopTime + 2 секунды loopTime = currentTime; // в loopTime записываем новое значение rotation = analogRead(POT_PIN); if (rotationOld != rotation) { // Ваше условие с переменной с } }