Hello, I recently buy a Altimeter Module MS5607 (
http://www.parallax.com/Store/Sensors/AccelerationTilt/tabid/172/ProductID/780/List/0/Default.aspx?SortField=ProductName,ProductName) and I need to interface it with my Arduino UNO with SPI protocol.
In the Parallax site there is a I
2C example (
http://www.parallax.com/Portals/0/Downloads/docs/prod/sens/29124-AltimeterModule-v1.0.pdf) but I need to work in SPI mode.
I'm still trying and I made this code, that when a "0" is recieved in the serial, the arduino sends the conversion and read commands to the altimeter and stores the 24 bit data of the altitude. Till now, I get the data in three bytes, but for some reason I only get 3 bytes of 11111111, 11111111, 11111111.
I post the code:
/*
Circuit:
SCK: pin 13
MISO: pin 12
MOSI: pin 11
SS: pin 9
*/
const int ss = 9;
#include <SPI.h>
//3 bytes to get the 24 bit adc read
byte byte1;
byte byte2;
byte byte3;
void setup() {
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
pinMode(ss, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
byte incomingByte = Serial.read();
switch (incomingByte){
case '0':
read_alt();
break;
} //endswitch
}//enif
}//endloop
void read_alt()
{
//READ Altimeter
digitalWrite(ss, LOW);
SPI.transfer(0x50); //ADC conversion command
delay(1);
// and store read data into three bytes
byte1 = SPI.transfer(0x00);//ADC conversion read command, first 8 bits
byte2 = SPI.transfer(0x00);//ADC conversion read command, second 8 bits
byte3 = SPI.transfer(0x00);//ADC conversion read command, third 8 bits
//print the 3 bytes in serial
Serial.println(byte1, BIN);
Serial.println(byte2, BIN);
Serial.println(byte3, BIN);
Serial.println();
//release chip, signal end transfer
digitalWrite(ss, HIGH);
}