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);
}