¿No puedo usar punteros o referencias de serie de hardware en mi Lib para Arduino AVR?

1

Escribí una clase de envoltorio para una pantalla lcd serie para 4dulcd, y quiero poder pasar la serie que estoy usando para comunicarme con ella

Tengo estos en mi código myClass.h

#include <HardwareSerial.h>

public:
uint8_t Init(long BaudRate, HardwareSerial *serial);

private:
HardwareSerial *_HardSerial;

en myClass.cpp

uint8_t myClass::Init(long BaudRate, HardwareSerial *serial){
_HardSerial(serial);
...
}

En mi boceto

#include <myClass.h>  
myClass lcd;  


void setup()
{
  Serial1.begin(9600);  // <- Error here?!
  //lcd.Init(115000,&Serial1);
...

Entonces el error es

  

sketch_sep17a.cpp: En la función 'void setup ()': sketch_sep17a: 16:   error: 'Serial1' no se declaró en este ámbito

Si elimino el encabezado myClass.h del que funciona Serial1 ... lo incluyo y produce este error que no tiene sentido para-

Intenté incluir el hardwareserial en mi boceto y crear una instancia de él, pero requiere todo tipo de propiedades de construcción que no tengo idea de lo que significan. Y ni siquiera me gustaría lanzar mi lib para hacer esto, ya que es un inconveniente para el usuario final normal.

Probé tanto referencias como punteros: el mismo error.

¿Puede algún cuerpo ayudar?

    
pregunta ppumkin

1 respuesta

1

Puede que me falte algo aquí, pero ¿dónde se crea una instancia de Serial1?

Si no se ha creado ningún objeto Serial1, a menos que la función begin sea estática, no funcionará.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas