/* LTC 1286 : http://cds.linear.com/docs/en/datasheet/128698fs.pdf Compatible SPI : http://arduino.cc/en/Reference/SPI ** MOSI = non utilisé - pin 11 ** MISO = Dout - pin 12 déclaré dans la bibliothèque standard ** SCK = CLK - pin 13 ** CS - pin 10 */ #include <SPI.h> const int CS = 10; // const int MISO = 12; // Inutile : déjà déclaré dans la bibliothèque standard // const int SCK = 13; byte N1,N2; int i,k,N; float Vin,q=0.001194; void setup() { Serial.begin(9600); Serial.println("Mesure \tN \tV en V"); pinMode(CS, OUTPUT); digitalWrite(CS,1); SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV128); // Horloge à 16000/128 = 125 kHz //SPI.setBitOrder(MSBFIRST); //SPI.setDataMode(SPI_MODE0); } void loop() { digitalWrite(CS,0); N1=SPI.transfer(0x00)<<3; // Mot 1 (MSB) : 2 bits à haute impédance + un bit nul reste 5 bits significatifs N2=SPI.transfer(0x00)>>1; // Mot 2 (LSB) : 7 bits significatifs, le dernier bit à éliminer (haute impédance) N=16*N1+N2; // Mot 1 : MSB en 2^7 => 2^7*2^4=2^11 => il faut multiplier N1 par 16 digitalWrite(CS,1); Vin = q*N; k++; Serial.print(k);Serial.print("\t"); Serial.print(N);Serial.print("\t"); Serial.println(Vin,3); delay(500); }