Skip to content

Commit

Permalink
Merge pull request #18 from arduino-libraries/marqdevx/niclaSenseME/S…
Browse files Browse the repository at this point in the history
…hieldTutorial

* Added Nicla Sense ME tutorial sketch: as a MKR shield (https://docs.arduino.cc/tutorials/nicla-sense-me/as-mkr-shield)
  • Loading branch information
marqdevx authored Sep 30, 2021
2 parents 70d0fd1 + 4fd4aeb commit f2fc6a7
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 0 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/compile-examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ jobs:
- examples/Portenta H7 as a USB Host/LEDKeyboardController
- examples/Portenta H7 as a WiFi Access Point/SimpleWebServer
- examples/Setting Up Portenta H7 For Arduino/Blink
- fqbn: arduino:mbed_portenta:envie_m4
sketch-paths: |
- examples/Dual Core Processing/BlinkGreenLed_M4
Expand All @@ -53,6 +54,14 @@ jobs:
sketch-paths: |
- examples/Edge Control Getting Started
- fqbn: arduino:mbed_nicla:nicla_sense
sketch-paths: |
- examples/Nicla Sense ME as a MKR Shield/NiclaShieldController
- fqbn: arduino:samd:mkrwifi1010
sketch-paths: |
- examples/Nicla Sense ME as a MKR Shield/NiclaShieldHost
steps:
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -70,6 +79,7 @@ jobs:
- name: Arduino_EdgeControl
- name: lvgl
version: 7.11.0
- name: Arduino_BHY2
sketch-paths: |
# Sketches to compile for all boards
Expand Down
1 change: 1 addition & 0 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ This library contains the complete Arduino sketches from the Arduino Pro Tutoria
* https://docs.arduino.cc/hardware/portenta-h7-lite#tutorials[Arduino Portenta H7 Lite]
* https://docs.arduino.cc/hardware/edge-control#tutorials[Arduino Edge Control]
* https://docs.arduino.cc/hardware/portenta-vision-shield#tutorials[Arduino Portenta Vision Shield]
* https://docs.arduino.cc/hardware/nicla-sense-me#tutorials[Arduino Nicla Sense ME]



Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#include "Nicla_System.h"
#include "Arduino_BHY2.h"
#include "Wire.h"

SensorXYZ accel(SENSOR_ID_ACC);
SensorXYZ gyro(SENSOR_ID_GYRO);
Sensor temp(SENSOR_ID_TEMP);

uint8_t command = 0x00;
void requestHandler(); //request event callback
void receiveEvent(int howMany); //receive event callback

void setup(){
BHY2.begin();

//Configure Sensors
accel.configure(1, 0);
gyro.configure(1, 0);
temp.configure(1, 0);

//Give LED feedback to the user
nicla::leds.begin();
nicla::leds.setColor(green);

Wire.begin(0x1A); // join i2c bus with address #0x1A , do not use 0x60 nor 0x6B, the MKR board has those i2c devices

Wire.onRequest(requestHandler); // Callback triggered from `Wire.requestFrom()` done by the Host

Wire.onReceive(receiveEvent); // Callback triggered from `Wire.beginTransmission()` done by the Host
}

void loop(){
BHY2.update(10);
}

void I2CWrite16(int16_t data){
Wire.write((byte)(data & 0xFF));
Wire.write((byte)((data >> 8) & 0xFF));
}

void receiveEvent(int howMany){

nicla::leds.setColor(blue);
while (Wire.available()){
command = Wire.read();
}

nicla::leds.setColor(off);
}

void requestHandler(){
nicla::leds.setColor(green);

int16_t dataX;
int16_t dataY;
int16_t dataZ;

switch (command){

//Update readings command
case 0:
break;

case 1:
dataX = accel.x();
I2CWrite16(dataX);
Serial.println(accel.toString());
break;

case 2:
dataY = accel.y();
I2CWrite16(dataY);
break;

case 3:
dataZ = accel.z();
I2CWrite16(dataZ);
break;

default:
break;
}

nicla::leds.setColor(off);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include "Wire.h"

#define NICLA_I2C_ADDRESS 0x1A

void setup(){
Serial.begin(9600);
while (!Serial);

Wire.begin(); // Join the I2C bus as a Host
Serial.println("Host started");
}

void loop(){

I2CWrite(1); // Request Acceleration X
int16_t acX = getData16();

I2CWrite(2); // Request Acceleration Y
int16_t acY = getData16();

I2CWrite(3); // Request Acceleration Z
int16_t acZ = getData16();

Serial.print("ACCELERATION :");
Serial.print(" X: ");
Serial.print(acX);
Serial.print(" Y: ");
Serial.print(acY);
Serial.print(" Z: ");
Serial.print(acZ);
Serial.println();

delay(2500);
}

void I2CWrite(int command){
Wire.beginTransmission(NICLA_I2C_ADDRESS);
Wire.write(command);
Wire.endTransmission();
delay(100);
}

int16_t getData16(){
int16_t data = 0;

Wire.requestFrom(0x1A, 2);

while (Wire.available()){
for (int i = 0; i < 2; i++){
data |= Wire.read() << (8 * i);
}
}

return data;
}

0 comments on commit f2fc6a7

Please sign in to comment.