プロが教える店舗&オフィスのセキュリティ対策術

Adafruit LIS3DH 3軸加速度センサーモジュールをアルディーノUNOに搭載し角度を検出したいです。

『I2CまたはSPIのどちらを利用するかによってピン名とコメントをするか』と記載がありました。
SPIを利用する場合どのようにピン名とコメントを変えればよいでしょうか?回答お願いします。


// Basic demo for accelerometer readings from Adafruit LIS3DH

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_LIS3DH.h>
#include <Adafruit_Sensor.h>

// Used for software SPI
#define LIS3DH_CLK 13
#define LIS3DH_MISO 12
#define LIS3DH_MOSI 11
// Used for hardware & software SPI
#define LIS3DH_CS 10

// software SPI
//Adafruit_LIS3DH lis = Adafruit_LIS3DH(LIS3DH_CS, LIS3DH_MOSI, LIS3DH_MISO, LIS3DH_CLK);
// hardware SPI
//Adafruit_LIS3DH lis = Adafruit_LIS3DH(LIS3DH_CS);
// I2C
Adafruit_LIS3DH lis = Adafruit_LIS3DH();

#if defined(ARDUINO_ARCH_SAMD)
// for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
#define Serial SerialUSB
#endif

void setup(void) {
#ifndef ESP8266
while (!Serial); // will pause Zero, Leonardo, etc until serial console opens
#endif

Serial.begin(9600);
Serial.println("LIS3DH test!");

if (! lis.begin(0x18)) { // change this to 0x19 for alternative i2c address
Serial.println("Couldnt start");
while (1);
}
Serial.println("LIS3DH found!");

lis.setRange(LIS3DH_RANGE_4_G); // 2, 4, 8 or 16 G!

Serial.print("Range = "); Serial.print(2 << lis.getRange());
Serial.println("G");
}

void loop() {
lis.read(); // get X Y and Z data at once
// Then print out the raw data
Serial.print("X: "); Serial.print(lis.x);
Serial.print(" \tY: "); Serial.print(lis.y);
Serial.print(" \tZ: "); Serial.print(lis.z);

/* Or....get a new sensor event, normalized */
sensors_event_t event;
lis.getEvent(&event);

/* Display the results (acceleration is measured in m/s^2) */
Serial.print("\t\tX: "); Serial.print(event.acceleration.x);
Serial.print(" \tY: "); Serial.print(event.acceleration.y);
Serial.print(" \tZ: "); Serial.print(event.acceleration.z);
Serial.println(" m/s^2 ");

Serial.println();

delay(200);
}

A 回答 (1件)

現物持っていませんから確認はできませんが…。


掲示されているコードのコメントから推測できる範囲で。

// Used for software SPI
#define LIS3DH_CLK 13
#define LIS3DH_MISO 12
#define LIS3DH_MOSI 11

ソフトウェアSPI使うなら11番から13番にそれぞれの信号制御をする。
ということでしょう。
割り当てを変えたい場合はこちらを変更することになるかと。

// Used for hardware & software SPI
#define LIS3DH_CS 10

ハードウェアSPIなら10番にCS信号を。
# ソフトウェアSPIでも使うっぽいですが。


http://www.musashinodenpa.com/arduino/ref/index. …
http://garretlab.web.fc2.com/arduino_reference/l …
こちらのページだと…11から13は固定なんですかね。
SSの10番は他でもいい…と推測されます。


// software SPI
//Adafruit_LIS3DH lis = Adafruit_LIS3DH(LIS3DH_CS, LIS3DH_MOSI, LIS3DH_MISO, LIS3DH_CLK);
// hardware SPI
//Adafruit_LIS3DH lis = Adafruit_LIS3DH(LIS3DH_CS);
// I2C
Adafruit_LIS3DH lis = Adafruit_LIS3DH();

I2Cで使用するようになっているのでSPIにする場合は一番下のはコメントアウトに。
ソフトウェアSPIなら上のもののコメントアウトを解除、ハードウェアSPIなら真ん中のコメントアウトを解除…かと。
    • good
    • 0
この回答へのお礼

できました!!
ありがとうございますm(__)m

お礼日時:2017/02/02 12:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!