Я пытаюсь настроить свой arduino uno таким образом, чтобы он предоставлял мне данные об оборотах, измеряемых на моем энкодере. До сих пор мне удавалось выяснить, как точно измерить RPM для первого значения, однако я изо всех сил пытаюсь сбросить значение в конце цикла, поэтому вместо того, чтобы давать мне фактические обороты, он просто увеличивается с предыдущими данными. . Вот мой код для лучшего понимания того, что я имею в виду...
// Red - 5V
// Black - GND
const int encoder_a = 2; // Green - pin 2 - Digital
const int encoder_b = 3; // White - pin 3 - Digital
long encoder = 0;
long encoderO=0;
void setup() {
Serial.begin(9600);
pinMode(encoder_a, INPUT_PULLUP);
pinMode(encoder_b, INPUT_PULLUP);
attachInterrupt(0, encoderPinChangeA, CHANGE);
attachInterrupt(1, encoderPinChangeB, CHANGE);
}
void loop() {
Serial.println(encoder/2400.00*60);
delay(1000);
}
void encoderPinChangeA() {
encoder += digitalRead(encoder_a) == digitalRead(encoder_b) ? -1 : 1;
}
void encoderPinChangeB() {
encoder += digitalRead(encoder_a) != digitalRead(encoder_b) ? -1 : 1;
}