Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I need help with MIT app inventor and my Arduino. Could someone look at my attached code and block in the app inventor and tell

I need help with MIT app inventor and my Arduino. Could someone look at my attached code and block in the app inventor and tell me why it wont run. The idea behind the app is to preset a value to the Arduino. The Arduino will utilize the gyroscope and every up down motion will count as 1. Once the preset value has been met the red LED will turn on. I am getting a lot of errors when I run the 2 together. Please help.

image text in transcribed

#include //This is the library for the gyroscope

#include //The bluetooth library

float X,Y,Z;//Float variable to be used in the gyroscope

#define LED 13//defines LED as pin 13

///Establishes GUUID along wiith the three characteristics

const char * UUID_RepTrackservice = "84582cd0-3df0-4e73-9496-29010d7445dd" ;

const char * UUID_repCharacteristic = "84582cd1-3df0-4e73-9496-29010d7445dd" ;

const char * UUID_targetCharacteristic = "84582cd2-3df0-4e73-9496-29010d7445dd" ;

const char * UUID_resetCharacteristic = "84582cd3-3df0-4e73-9496-29010d7445dd" ;

//Establishes the service along with defining the characteristics as a float

BLEService RepTrackservice ( UUID_RepTrackservice );

BLEIntCharacteristic repCharacteristic( UUID_repCharacteristic, BLERead | BLENotify );

BLEIntCharacteristic targetCharacteristic ( UUID_targetCharacteristic, BLEWrite | BLENotify );

BLEIntCharacteristic resetCharacteristic( UUID_resetCharacteristic, BLERead | BLENotify );

int presetValue = 5;// max value for z axis to detect rep count

int currentValue = 0;//Current z axis value

int repAmount=0;//variable used to hold rep amount sent to app commented out for troubleshooting

int repTarget=0;//variable used to hold repetitions wanted sent from app commented out for troubleshooting

int reset=0;//Variable to reset the count sent from app commented out for troubleshooting

//Setting up the arduinos outputs

void setup ()

{

Serial.begin(115200);//begin the bluetooth

uint32_t t=millis();

while (!Serial) // delay 5sec connection

{

if ((millis()-t) > 5000) break;

}

bool err=false;

if (!IMU.begin())

{

Serial.println("IMU: failed");

err=true;

}

Serial.println("IMU: ok");

// init BLE

if (!BLE.begin())

{

Serial.println("BLE: failed");

err=true;

}

Serial.println("BLE: ok");

// error: flash led forever

if (err)

{

Serial.println("Init error. System halted");

}

BLE.setLocalName("RepTrack2.0");//sets the local name

BLE.setDeviceName("RepTrack");

BLE.setAdvertisedService (RepTrackservice);//setting the service to be advertised

//Adds services to their own charcteristics

RepTrackservice.addCharacteristic ( repCharacteristic ) ;

RepTrackservice.addCharacteristic ( targetCharacteristic ) ;

RepTrackservice.addCharacteristic ( resetCharacteristic ) ;

BLE.addService ( RepTrackservice);//service is added to he BLE

//Sets values so that they do not transmit random values

repCharacteristic.writeValue ( 0 );

targetCharacteristic.writeValue ( 0 );

resetCharacteristic.writeValue ( 0 );

BLE.advertise();//Publishes the service to start

pinMode (LED, OUTPUT);//sets LED as an output

digitalWrite(LED, LOW);//turns off LED in case it was on

}

void loop()

{

static long preMillis = 0;

int command=0;

// looks for BLE central devices

BLEDevice central = BLE.central();

// Checks for connection

if (central)

{

Serial.print("Connected to central: ");

Serial.println(central.address()); // prints address

// Loop while connected

while (central.connected())

{

if (targetCharacteristic.written())

{

command = targetCharacteristic.value(); // retrieve value from app

repTarget=command;

Serial.print(F("commmand value: "));

Serial.println(command);

}

long curMillis = millis();

if (preMillis>curMillis) preMillis=0;

if (curMillis - preMillis >= 10) // check values every 10mS

{

preMillis = curMillis;

updateApp(); // Calls function to send values to app

}

}

// To disconnect

Serial.print(F("Disconnected from central: "));

Serial.println(central.address());

}

}

//Updating the app function

void updateApp()

{

//Starting the scan to monitor the gyroscope

//Checking to see if the Gyro is online and then Reads all 3 axis

if (IMU.gyroscopeAvailable())

{

IMU.readGyroscope(X, Y, Z);

currentValue =Z;//sets current value to the value of Z from the gryo

}

//Comparison that is the current value of z is greater than or equal to the preset, then you increase the rep amount. This means a rep was done

if (currentValue >= presetValue)

{

repAmount=repAmount+1;

repCharacteristic.writeValue(repAmount);//updates the live value

}

//If it was not greater then the repamount stays the same

else

{

//repAmount=repAmount;

repAmount=repAmount;

}

//displays values for visual purpose

Serial.print("Z:");

Serial.print(Z);

Serial.print("Current Value:");

// Serial.println(currentValue);

// Serial.println(repAmount);//Sends repamout to app

Serial.println();

delay(100);

//Checks to see if the repAmount is greater than or equal to the rep target, if yes then the LED will light up

if (repAmount >= repTarget)

{

digitalWrite(LED, HIGH);

}

//If not then LED stays off

else

{

digitalWrite(LED, LOW);

}

delay(1000);// Delay to keep the system from readding two reps within a second

//Reset for the rep amount, recieved from the app

if (reset==1)

{

digitalWrite(LED,LOW);

repAmount=0;

targetCharacteristic.writeValue(repAmount);

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions