Buenas,
Me estoy metiendo en lo de programación orientada a objetos en Arduino, y me he atascado con un ejercicio (de los sencillos).
La idea es configurar el pin de entrada vinculado a una "función" de la clase, para ponerlo en modo INPUT normal o INPUT_PULLUP vía un argumento de uno de los métodos de la clase. No sé si me explico bien, ya que no domino el lenguaje en ese ámbito.
En un ejemplo del tutorial que sigo utiliza el tipo de variable "entero" al declarar la variable que recogería el valor INPUT o INPUT_PULLUP, pero al compilar me da error.
La clase tiene por objetivo detectar flanco de un pulsador. Pongo el código del archivo .h y del "ino":
class Boton{
private:
int pin;
bool estado_ant;
bool estado;
bool reposo;
public:
Boton (int _pin){
pin = _pin;
}
void inicia(int input) {
pinMode(pin, input);
reposo = digitalRead(pin);
estado_ant = reposo;
}
bool pulsado(){
estado = digitalRead(pin);
if (estado != estado_ant){
estado_ant = estado;
if (estado != reposo){
return true;
}
else return false;
}
else return false;
}
};
el programa ino:
#include <Contador.h>
#include <Boton.h>
Contador C1;
Boton B1(8);
Boton B2(9);
int A;
void setup() {
Serial.begin(9600);
C1.SetContador(0);
B1.inicia(INPUT_PULLUP);
B2.inicia(INPUT_PULLUP);
}
void loop() {
if (B1.pulsado()=true){
C1.Incrementar();
Serial.print("A = ");
Serial.println(C1.GetCont());
}
if (B2.pulsado() = true){
C1.Decrementar();
Serial.print("A = ");
Serial.println(C1.GetCont());
}
}
el código de Contador.h no lo pego porque no tengo problemas con él y no creo que sea relevante en esta duda.
En resumen mi duda es cómo usar INPUT_PULLUP como argumento (¿como qué tipo de variable lo declaro?)
Si es correcto usarlo a través de una variable entera, a ver en qué otro punto he metido la gamba?.
El error de compilación que me da es:
practica_obj_contador-boton:25:22: error: lvalue required as left operand of assignment
if (B2.pulsado() = true){
^~~~
exit status 1
request for member 'inicia' in '1', which is of non-class type 'int'
Gracias de antemano y un saludo,