[gnoduino] Fix barometric examples for non-ancient gcc
- From: Lucian Langa <lucilanga src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnoduino] Fix barometric examples for non-ancient gcc
- Date: Thu, 23 May 2013 23:14:27 +0000 (UTC)
commit 6c040a1062368e434dfdb5104e84fb8a5a21d76b
Author: Pascal de Bruijn <pmjdebruijn pcode nl>
Date: Thu May 23 22:49:47 2013 +0200
Fix barometric examples for non-ancient gcc
.../BarometricPressureWebServer.ino | 103 +++++++-------
.../BarometricPressureSensor.ino | 94 +++++++-------
.../BarometricPressureSensor.ino | 143 --------------------
3 files changed, 97 insertions(+), 243 deletions(-)
---
diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino
b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino
index bfbcb6d..e21df23 100644
--- a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino
+++ b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino
@@ -56,6 +56,57 @@ float temperature = 0.0;
long pressure = 0;
long lastReadingTime = 0;
+//Send a write command to SCP1000
+void writeRegister(byte registerName, byte registerValue) {
+ // SCP1000 expects the register name in the upper 6 bits
+ // of the byte:
+ registerName <<= 2;
+ // command (read or write) goes in the lower two bits:
+ registerName |= 0b00000010; //Write command
+
+ // take the chip select low to select the device:
+ digitalWrite(chipSelectPin, LOW);
+
+ SPI.transfer(registerName); //Send register location
+ SPI.transfer(registerValue); //Send value to record into register
+
+ // take the chip select high to de-select:
+ digitalWrite(chipSelectPin, HIGH);
+}
+
+
+//Read register from the SCP1000:
+unsigned int readRegister(byte registerName, int numBytes) {
+ byte inByte = 0; // incoming from the SPI read
+ unsigned int result = 0; // result to return
+
+ // SCP1000 expects the register name in the upper 6 bits
+ // of the byte:
+ registerName <<= 2;
+ // command (read or write) goes in the lower two bits:
+ registerName &= 0b11111100; //Read command
+
+ // take the chip select low to select the device:
+ digitalWrite(chipSelectPin, LOW);
+ // send the device the register you want to read:
+ int command = SPI.transfer(registerName);
+ // send a value of 0 to read the first byte returned:
+ inByte = SPI.transfer(0x00);
+
+ result = inByte;
+ // if there's more than one byte returned,
+ // shift the first byte then get the second byte:
+ if (numBytes > 1){
+ result = inByte << 8;
+ inByte = SPI.transfer(0x00);
+ result = result |inByte;
+ }
+ // take the chip select high to de-select:
+ digitalWrite(chipSelectPin, HIGH);
+ // return the result:
+ return(result);
+}
+
void setup() {
// start the SPI library:
SPI.begin();
@@ -168,55 +219,3 @@ void listenForEthernetClients() {
client.stop();
}
}
-
-
-//Send a write command to SCP1000
-void writeRegister(byte registerName, byte registerValue) {
- // SCP1000 expects the register name in the upper 6 bits
- // of the byte:
- registerName <<= 2;
- // command (read or write) goes in the lower two bits:
- registerName |= 0b00000010; //Write command
-
- // take the chip select low to select the device:
- digitalWrite(chipSelectPin, LOW);
-
- SPI.transfer(registerName); //Send register location
- SPI.transfer(registerValue); //Send value to record into register
-
- // take the chip select high to de-select:
- digitalWrite(chipSelectPin, HIGH);
-}
-
-
-//Read register from the SCP1000:
-unsigned int readRegister(byte registerName, int numBytes) {
- byte inByte = 0; // incoming from the SPI read
- unsigned int result = 0; // result to return
-
- // SCP1000 expects the register name in the upper 6 bits
- // of the byte:
- registerName <<= 2;
- // command (read or write) goes in the lower two bits:
- registerName &= 0b11111100; //Read command
-
- // take the chip select low to select the device:
- digitalWrite(chipSelectPin, LOW);
- // send the device the register you want to read:
- int command = SPI.transfer(registerName);
- // send a value of 0 to read the first byte returned:
- inByte = SPI.transfer(0x00);
-
- result = inByte;
- // if there's more than one byte returned,
- // shift the first byte then get the second byte:
- if (numBytes > 1){
- result = inByte << 8;
- inByte = SPI.transfer(0x00);
- result = result |inByte;
- }
- // take the chip select high to de-select:
- digitalWrite(chipSelectPin, HIGH);
- // return the result:
- return(result);
-}
diff --git a/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino
b/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino
index 9d77a42..828fbd6 100644
--- a/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino
+++ b/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino
@@ -37,53 +37,6 @@ const byte WRITE = 0b00000010; // SCP1000's write command
const int dataReadyPin = 6;
const int chipSelectPin = 7;
-void setup() {
- Serial.begin(9600);
-
- // start the SPI library:
- SPI.begin();
-
- // initalize the data ready and chip select pins:
- pinMode(dataReadyPin, INPUT);
- pinMode(chipSelectPin, OUTPUT);
-
- //Configure SCP1000 for low noise configuration:
- writeRegister(0x02, 0x2D);
- writeRegister(0x01, 0x03);
- writeRegister(0x03, 0x02);
- // give the sensor time to set up:
- delay(100);
-}
-
-void loop() {
- //Select High Resolution Mode
- writeRegister(0x03, 0x0A);
-
- // don't do anything until the data ready pin is high:
- if (digitalRead(dataReadyPin) == HIGH) {
- //Read the temperature data
- int tempData = readRegister(0x21, 2);
-
- // convert the temperature to celsius and display it:
- float realTemp = (float)tempData / 20.0;
- Serial.print("Temp[C]=");
- Serial.print(realTemp);
-
-
- //Read the pressure data highest 3 bits:
- byte pressure_data_high = readRegister(0x1F, 1);
- pressure_data_high &= 0b00000111; //you only needs bits 2 to 0
-
- //Read the pressure data lower 16 bits:
- unsigned int pressure_data_low = readRegister(0x20, 2);
- //combine the two parts into one 19-bit number:
- long pressure = ((pressure_data_high << 16) | pressure_data_low)/4;
-
- // display the temperature:
- Serial.println("\tPressure [Pa]=" + String(pressure));
- }
-}
-
//Read from or write to register from the SCP1000:
unsigned int readRegister(byte thisRegister, int bytesToRead ) {
byte inByte = 0; // incoming byte from the SPI
@@ -122,7 +75,6 @@ unsigned int readRegister(byte thisRegister, int bytesToRead ) {
//Sends a write command to SCP1000
-
void writeRegister(byte thisRegister, byte thisValue) {
// SCP1000 expects the register address in the upper 6 bits
@@ -141,3 +93,49 @@ void writeRegister(byte thisRegister, byte thisValue) {
digitalWrite(chipSelectPin, HIGH);
}
+void setup() {
+ Serial.begin(9600);
+
+ // start the SPI library:
+ SPI.begin();
+
+ // initalize the data ready and chip select pins:
+ pinMode(dataReadyPin, INPUT);
+ pinMode(chipSelectPin, OUTPUT);
+
+ //Configure SCP1000 for low noise configuration:
+ writeRegister(0x02, 0x2D);
+ writeRegister(0x01, 0x03);
+ writeRegister(0x03, 0x02);
+ // give the sensor time to set up:
+ delay(100);
+}
+
+void loop() {
+ //Select High Resolution Mode
+ writeRegister(0x03, 0x0A);
+
+ // don't do anything until the data ready pin is high:
+ if (digitalRead(dataReadyPin) == HIGH) {
+ //Read the temperature data
+ int tempData = readRegister(0x21, 2);
+
+ // convert the temperature to celsius and display it:
+ float realTemp = (float)tempData / 20.0;
+ Serial.print("Temp[C]=");
+ Serial.print(realTemp);
+
+
+ //Read the pressure data highest 3 bits:
+ byte pressure_data_high = readRegister(0x1F, 1);
+ pressure_data_high &= 0b00000111; //you only needs bits 2 to 0
+
+ //Read the pressure data lower 16 bits:
+ unsigned int pressure_data_low = readRegister(0x20, 2);
+ //combine the two parts into one 19-bit number:
+ long pressure = ((pressure_data_high << 16) | pressure_data_low)/4;
+
+ // display the temperature:
+ Serial.println("\tPressure [Pa]=" + String(pressure));
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]