Arduino микроконтроллер для создания регистратора данных - PullRequest
0 голосов
/ 28 апреля 2011

Я создал регистратор данных, используя микроконтроллер и 3 потенциометра (X, Y, Z).

Затем я добавил переменную скорость записи, которая колеблется от примерно 1,2 Гц до 50 Гц.

Наконец, я хочу добавить «кнопку калибровки», при которой, когда кнопка нажата, все показания обнуляются и начинают измерения оттуда.Я попытался создать кнопку калибровки и потерпел неудачу.Друг, который знает об этих вещах больше меня, сказал мне, что я должен попытаться использовать функцию прерывания.

См. Ниже.

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 Ответ

1 голос
/ 28 апреля 2011

Прерывание - это, по сути, способ, которым MCU может запускать немного кода всякий раз, когда происходит какое-либо событие. В вашем случае мы хотим, чтобы он запускал калибровку всякий раз, когда вывод цифрового ввода / вывода переходит, например, из высокого в низкий уровень.

Взгляните на attachInterrupt (прерывание, функция, режим) для его части кода. Обратите внимание, что не все контакты на MCU могут генерировать прерывания.

С точки зрения электроники, статья Учебник Arduino, входы Arduino объясняет это довольно хорошо. Вы, вероятно, хотите, чтобы на выводе был подтягивающий резистор, чтобы он был обычно высоким и переходил на землю при нажатии кнопки.

...