[RESUELTO]Cómo llamar a una librería desde otra librería

Hola a todos,

Soy nueva en esto de las clases y las librerías y estoy intentado llamar desde el .cpp de una librería en la que creo la clase “daq” (es para una data adquisition shield para arduino UNO) a una función de la librería MCP3208, en concreto anaogRead.

Os subo el .h y el .cpp de la librería que estoy creando, donde en el .cpp tengo entre los comentarios “//THISSSSSSSS” la llamada a la función analogRead que creo que estoy haciendo mal porque no me funciona aunque no me de error al compilar el *ino, es decir, en el puerto serie no me salen las tensiones que meto en los pines.

Os adjunto tb la librería del MCP3208.

Pd. ya he puesto este problema en el foro de inglés pero no ha habido éxito :(, a ver si aquí hay suerte.
Gracias chicos!

daq2.cpp (1.54 KB)

daq2.h (1.2 KB)

MCP3208.h (2.56 KB)

MCP3208.cpp (2.76 KB)

Modificacion_implementaciones_4.ino (677 Bytes)

Ya he resuelto el problema, me faltaba indicar el chip select!

Pero si resolviste el problema y antes preguntaste por el, no te parece oportuno 1) referiste en el idioma del foro donde estas respondiendo. Foro en Español y 2) contarnos de como lo resolviste?

Hola surbite, siento las molestias, soy nueva aquí y estoy un poco perdida sobre cómo moverse, ya cogeré agilidad.

He realizado varias modificaciones desde que hice el comentario, así que directamente subo el archivo para que podáis verlo, básicamente o que he hecho ha sido copiar a parte de la librería de MCP3208 donde hace la transferencia de datos por SPI a mi .cpp, y lo más importante y que no había caído, es indicar cuál es el chip select, y definirlo comoo output y como high en el begin().

Os adjunto el *h, *cpp, *ino para mayor claridad.

*h

class daq  {
  private:
 //Private functions and variables here. They can only be accessed 
 //by functions within the class - todas las variables definidas aquí comienzan
 //por barra baja para reconocerlas fácilmente 
  uint8_t	_cs; 	//éste es el chip select, 
					//tipo de dato unsigned integer de 8 bit
	void cycle_clock();
    uint8_t spiTransfer(uint8_t i);
 public:
 //Public functions and variables here. These can be accessed from
 //outside the class

  daq(): _cs(9){}	// función constructora a la que no se le pasa nada y la inicializo poniendo que el chip select es el pon 10
  
  bool 		begin(void);							//ya se hará
  int 		analogRead(uint8_t pin); 				//IMPLEMENTADA
  void 		analogWrite(uint8_t pin, int val);		//IMPLEMENTAR
  uint8_t 	analogReadResolution(void);				//HECHA
  uint8_t 	analogWriteResolution(void);			//HECHA
  float 	analogReference(void);					//HEHCA
  
  float 	analogReadVol(uint8_t pin);				//HACER
  void 		analogWriteVol(uint8_t pin, float val);	//CUANDO SE IMPLEMENTE LA SUYA
  float 	analogReadResolutionVol(void);			//HECHA
  float 	analogWriteResolutionVol(void);			//HECHA
  
  void		setSampleRate(int val);
  void 		setTrigger(uint8_t mode);
  

};

*cpp

bool daq::begin(void) {

return true;
}

uint8_t daq::spiTransfer(uint8_t i) {
    uint8_t d;
    d = SPI.transfer(i);

    return d;
}

int   daq::analogRead(uint8_t pin){ //aquí se hace lo qe hace el MCP3208
 pinMode(_cs, OUTPUT);
 digitalWrite(_cs, HIGH);
 SPI.begin();
 
	uint8_t addr = 0b01100000 | ((pin & 0b111) << 2);
    digitalWrite(_cs, LOW);
    (void) spiTransfer(addr);
    uint8_t b1 = spiTransfer(0);
    uint8_t b2 = spiTransfer(0);
    digitalWrite(_cs, HIGH);

    return (b1 << 4) | (b2 >> 4);
}

Muchas gracias @Epm12 por tu aporte y me da mas gusto que lo resolvieras por tu cuenta.
Respecto de las normas ya te llevas bastente bien y para eso estamos los moderadores para ajustar ycorregir los pequeños detalles.
Acá somos algo mas estrictos que en el foro en inglés,ya que todo lo que debe ir con etiquetas pedimos y exigimos que asi sea.

Suerte y felicitaciones.