#logging #arduino #microcontroller
#ведение журнала #arduino #микроконтроллер
Вопрос:
Я создал регистратор данных, используя микроконтроллер и 3 потенциометра (X, Y, Z).
Затем я добавил переменную частоту записи, которая варьируется примерно от 1,2 Гц до 50 Гц.
Наконец, я хочу добавить «кнопку калибровки», посредством которой при нажатии кнопки все показания обнуляются и с этого момента начинаются измерения. У меня была попытка создать «кнопку калибровки» и потерпела неудачу. Друг, который знает об этих вещах больше меня, сказал мне, что я должен попробовать использовать функцию interupt.
Смотрите ниже.
float ZPot = 0;
float YPot = 1;
float XPot = 2;
byte SRate = 3; // Sample Rate Adjuster
byte Reset = 10; // Reset button.
float ZCalibration = 0;
float YCalibration = 0;
float XCalibration = 0;
void setup()
{
pinMode(XPot, INPUT);
pinMode(YPot, INPUT);
pinMode(ZPot, INPUT);
pinMode(SRate, INPUT);
pinMode(Reset, INPUT);
Serial.begin(9600);
}
void loop()
{
ZPot = (analogRead(0) / 1023.0 * 105.0) - ZCalibration;
YPot = (analogRead(1) / 1023.0 * 105.0) - YCalibration;
XPot = (analogRead(2) / 1023.0 * 105.0) - XCalibration;
SRate = analogRead(3) / 4;
Reset = digitalRead(10);
if (Reset == HIGH) {
ZCalibration = ZPot;
YCalibration = YPot;
XCalibration = XPot;
}
Serial.print("X Pot [mm] = ");
Serial.print(XPot );
delay(SRate);
Serial.print(" Y Pot [mm] = ");
Serial.print(YPot );
delay(SRate);
Serial.print(" Z Pot [mm] = ");
Serial.println (ZPot );
delay(SRate);
}
Ответ №1:
Прерывание — это, по сути, способ, с помощью которого MCU может запускать фрагмент кода всякий раз, когда происходит какое-либо событие. В вашем случае мы хотим, чтобы он запускал калибровку, например, всякий раз, когда цифровой вывод ввода-вывода переходит с высокого уровня на низкий.
Взгляните на attachInterrupt (прерывание, функция, режим), чтобы ознакомиться с его кодовой частью. Обратите внимание, что не все контакты MCU могут генерировать прерывания.
С точки зрения электроники, статья Arduino Tutorial, Arduino inputs объясняет это довольно хорошо. Вероятно, вы хотите иметь подтягивающий резистор на выводе, чтобы он обычно был высоким и замыкался на землю при нажатии кнопки.