کد:
	// ارتباط با استفاده از سنسور SPI, قراردادن کتابخانه:
#include <SPI.h>
//آدرس های رجیستر حافظه سنسور:
const int PRESSURE = 0x1F;      //3 most significant bits of pressure
const int PRESSURE_LSB = 0x20;  //16 least significant bits of pressure
const int TEMPERATURE = 0x21;   //16 bit temperature reading
const byte READ = 0b11111100;     // SCP1000's read command
const byte WRITE = 0b00000010;   // SCP1000's write command
// پین های استفاده شده برای ارتباط با سنسور
// کنترل شده است SPI چیزهای دیگر که نیاز دارید توسط کتابخانه
const int dataReadyPin = 6;
const int chipSelectPin = 7;
void setup() {
  Serial.begin(9600);
  // SPI شروع کتابخانه :
  SPI.begin();
  // data ready و chip select دادن مقدار اولیه به پین های :
  pinMode(dataReadyPin, INPUT);
  pinMode(chipSelectPin, OUTPUT);
  //SCP1000 پیکربندبه صورت کم نویز:
  writeRegister(0x02, 0x2D);
  writeRegister(0x01, 0x03);
  writeRegister(0x03, 0x02);
  // دادن زمان به سنسور برای راه ندازی:
  delay(100);
}
void loop() {
  //انتخاب مد رزولیشن بالا
  writeRegister(0x03, 0x0A);
  // نشد هیچ کاری انجام ندهید High data ready تا وقتی پین، :
  if (digitalRead(dataReadyPin) == HIGH) {
    //خواندن دیتا درجه حرارت
    int tempData = readRegister(0x21, 2);
    // تبدیل درجه حرارت به سیلیسیوس و نمایش آن:
    float realTemp = (float)tempData / 20.0;
    Serial.print("Temp[C]=");
    Serial.print(realTemp);
    //خواندن سه بیت با ارزش دیتا فشار:
    byte  pressure_data_high = readRegister(0x1F, 1);
    pressure_data_high &= 0b00000111; //شما فقط به بیت های 2 تا 0 نیاز دارید
    //خواندن 16 بیت کم ارزش دیتا فشار:
    unsigned int pressure_data_low = readRegister(0x20, 2);
    //ترکیب دو بخش داخل یک شماره 19-بیت :
    long pressure = ((pressure_data_high << 16) | pressure_data_low)/4;
    // نمایش درجه حرارت:
    Serial.println("\tPressure [Pa]=" + String(pressure));
  }
}
//SCP1000 خواندن یا نوشتن روی رجیستر از :
unsigned int readRegister(byte thisRegister, int bytesToRead ) {
  byte inByte = 0;           //  SPI بایت دریافتی از
  unsigned int result = 0;   // برگرداندن نتیجه
  Serial.print(thisRegister, BIN);
  Serial.print("\t");
  // SCP1000 ،منتظر 6 بیت برای نام رجیستر بیت. شیفت بیت های باقیمانده با دو بیت
  thisRegister = thisRegister << 2;
  // حالا ترکیب آدرس و دستور داخل یک بایت
  byte dataToSend = thisRegister & READ;
  Serial.println(thisRegister, BIN);
  // برای انتخاب دستگاه low روی chip select قرارگیری :
  digitalWrite(chipSelectPin, LOW);
  // فرستاندن رجیستر دستگاهی که شما می خواهید بخوانید:
  SPI.transfer(dataToSend);
  // فرستادن یک مقدار از 0 برای خواندن اولین بایت برگشت داده شده:
  result = SPI.transfer(0x00);
  // کاهش شماره بایت های باقیمانده برای خواندن:
  bytesToRead--;
  // اگر هنوز بایت دیگری برای خواندن دارید:
  if (bytesToRead > 0) {
    // شیفت دادن اولین بایت باقیمانده برای خواندن دومین بایت:
    result = result << 8;
    inByte = SPI.transfer(0x00);
    // فقط ترکیب بایت با قبلی دریافت شده:
    result = result | inByte;
    //کاهش شماره بایت های باقیمانده برای خواندن:
    bytesToRead--;
  }
  //  chip select برای انتخاب high قرارگیری روی:
  digitalWrite(chipSelectPin, HIGH);
  // برگرداندن نتیجه:
  return(result);
}
//  SCP1000 فرستادن دستور نوشتن به
void writeRegister(byte thisRegister, byte thisValue) {
  // منتظر 6 بیت برای آدرس رجیستر بایت. شیفت بیت های باقیمانده با دو بیت SCP1000 ،
 
  thisRegister = thisRegister << 2;
  //ترکیب آدرس رجیستر و دستور داخل یک بایت:
  byte dataToSend = thisRegister | WRITE;
  // برای انتخاب دستگاه high روی chip select قرارگیری :
  digitalWrite(chipSelectPin, LOW);
  SPI.transfer(dataToSend); //Send register location
  SPI.transfer(thisValue);  /فرستادن مفدار برای ثبت در رجیستر
  // chip select برای انتخاب دوباره high قرارگیری روی:
  digitalWrite(chipSelectPin, HIGH);
}
 لینک سایت: