SCL3300 sensor 3-axis inclinometer with angle output and digital SPI interface
Diff: SCL3300.h
- Revision:
- 1:52b1117c65ea
- Parent:
- 0:e8ba98a758d0
--- a/SCL3300.h Mon Aug 15 19:17:10 2022 +0000 +++ b/SCL3300.h Mon Sep 05 15:56:44 2022 +0000 @@ -7,10 +7,6 @@ Resources: Uses SPI.h for SPI operation - -Development environment specifics: -Arduino IDE 1.8.9, 1.8.11, 1.8.12, 1.8.13, 1.8.15 - This code is released under the [MIT License](http://opensource.org/licenses/MIT). Please review the LICENSE.md file included with this example. Distributed as-is; no warranty is given. @@ -26,34 +22,7 @@ // Uncomment the following line for debugging output //#define debug_scl3300 -// Need the following define for SAMD processors -#if defined(ARDUINO_SAMD_ZERO) && defined(SERIAL_PORT_USBVIRTUAL) - #define Serial_SCL SERIAL_PORT_USBVIRTUAL -#else - #define Serial_SCL Serial -#endif - -#include <stdint.h> - -#if defined(ARDUINO) && ARDUINO >= 100 - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - -#include <SPI.h> // SPI library is used for...SPI. - -#ifndef SCL3300_SPI_CLOCK -#ifdef ARDUINO_ARCH_ESP32 -#define SCL3300_SPI_CLOCK 4000000 -#else -#define SCL3300_SPI_CLOCK 4000000 -#endif -#endif - -#ifndef SCL3300_SPI_MODE -#define SCL3300_SPI_MODE SPI_MODE0 -#endif +#include "mbed.h"// SPI library is used for...SPI. //Define allowed commands to SCL3300 inclinometer #define RdAccX 0x040000f7 @@ -103,16 +72,14 @@ class SCL3300 { // user-accessible "public" interface public: - SPISettings spiSettings{SCL3300_SPI_CLOCK, MSBFIRST, SCL3300_SPI_MODE}; + SCL3300 (PinName mosi, PinName miso, PinName sclk, PinName scl3300_csPin);//constructer SCL3300data sclData; - boolean setMode(int mode); - boolean begin(void); - boolean begin(uint8_t csPin); - boolean begin(SPIClass &spiPort, uint8_t csPin); + bool setMode(int mode); + bool begin(void); //Functions to retrieve sensor data - boolean isConnected(); - boolean available(void); + bool isConnected(); + bool available(void); void setFastReadMode(); void stopFastReadMode(); double getCalculatedAngleX(void); @@ -138,14 +105,16 @@ // library-accessible "private" interface private: - SPIClass *_spiPort = NULL; //The generic connection to user's chosen spi hardware - - uint8_t scl3300_csPin = 10; // Default SPI chip select pin - uint8_t scl3300_mode = 4; // Default inclinometer mode + SPI _spi; + Timer timer1; + Timer timer2; + DigitalOut _scl3300_csPin; // SPI chip select pin + uint8_t scl3300_mode ; // no Default mode uint8_t SCL3300_CMD, SCL3300_CRC; uint16_t SCL3300_DATA; double Temperature, X_angle, Y_angle, Z_angle; - bool setFastRead = false; + bool setFastRead; //chose mode + uint32_t _transfer_sck; void initSPI(); void beginTransmission(); @@ -159,6 +128,6 @@ unsigned int bit16[2]; unsigned char bit8[4]; }; - unsigned long modeCMD[5] = { 0, ChgMode1, ChgMode2, ChgMode3, ChgMode4 }; + unsigned long modeCMD[5]; }; #endif