Как использовать булеву функцию внутри класса в Arduino? - PullRequest
0 голосов
/ 26 января 2020

Я делаю библиотеку для датчика MPR121 и хочу использовать функцию bool внутри класса в Arduino IDE, но она не работает. Вот мой код.

#include <Wire.h>
#include "Adafruit_MPR121.h"
#ifndef _BV
#define _BV(bit) (1 << (bit)) 
#endif
Adafruit_MPR121 cap = Adafruit_MPR121();
uint16_t lasttouched = 0;
uint16_t currtouched = 0;

class PaperTron {
  private:          
         uint8_t i;
         uint8_t a;
  public:
  PaperTron(){
}

void touchBegin(){
    Serial.begin(9600);
  Serial.println("Hi! I'm PaperTron.");
  if (!cap.begin(0x5A)) {
  Serial.println("Error! TOUCH pins not found. Please check wiring.");
  while (1);
  }
  Serial.println("Hurray! Now you can use my TOUCH pins.");
}  

**//This is the boolean function which is not working**
bool isHigh(uint8_t touchpin) {
  currtouched = cap.touched();
  for (i=0; i<12; i++) {
    if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
      if(i==touchpin) return true;  
    }
      if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
      if(i==touchpin) return false;
      }
  }
  lasttouched = currtouched;
 }
};

PaperTron papertron;
void setup() {
    papertron.Begin();
    papertron.touchBegin();
}

void loop() {
if(papertron.isHigh(2)){Serial.println("Hello");}
}

На последовательном мониторе постоянно отображается «Hello», тогда как он должен печатать «Hello», только когда я нажимаю сенсорный штырь на MPR121.

...