Hey everyone
I am currently working on a project for a wearable. I'm making an activity tracker. I bought Adafruits Flora and i am writing an application in Visual Studio. I put Arduino leonardo in the description cause they are basicly the same , and i think most of the people wouldn't know what a flora is.
Now for the question : I am able to write from visual S to my flora and make it do stuff. But I'm not able to send something back.
I want to send the command (allsend" to VS and make it close the connection and proceed on.
Can someone spot the problem ?
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_NeoPixel.h>
Adafruit_GPS GPS(&Serial1);
Adafruit_NeoPixel pixelring = Adafruit_NeoPixel(16, 10, NEO_GRB + NEO_KHZ800);
// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console
// Set to 'true' if you want to debug and listen to the raw GPS sentences
#define GPSECHO false
// this keeps track of whether we're using the interrupt
// off by default!
boolean usingInterrupt = false;
boolean alreadyGreen = false;
boolean alreadyRed = false;
boolean syncingInProgress = true;
uint16_t lastPixelOnNeoRing=0;
String distance;
int heartRate;
int longtitude;
int latitude;
int duration;
boolean distanceLogged = false;
void setup()
{
// connect at 115200 so we can read the GPS fast enough and echo without dropping chars
// also spit it out
Serial.begin(115200);
while(!Serial);
Serial.println("Adafruit GPS library basic test!");
// 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800
//GPS.begin(9600);
// uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
// uncomment this line to turn on only the "minimum recommended" data
//GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
// For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since
// the parser doesn't care about other sentences at this time
// Set the update rate
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
// For the parsing code to work nicely and have time to sort thru the data, and
// print it out we don't suggest using anything higher than 1 Hz
//delay(1000);
// Ask for firmware version
Serial1.println(PMTK_Q_RELEASE);
pixelring.begin();
pixelring.show();
}
uint32_t timer = millis();
void loop() // run over and over again
{
if(syncingInProgress == false)
{
// read data from the GPS in the 'main loop'
char c = GPS.read();
// if you want to debug, this is a good time to do it!
if (GPSECHO)
if (c) Serial.print(c);
// if a sentence is received, we can check the checksum, parse it...
if (GPS.newNMEAreceived()) {
// a tricky thing here is if we print the NMEA sentence, or data
// we end up not listening and catching other sentences!
// so be very wary if using OUTPUT_ALLDATA and trytng to print out data
//Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false
if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false
return; // we can fail to parse a sentence in which case we should just wait for another
}
// if millis() or timer wraps around, we'll just reset it
if (timer > millis()) timer = millis();
// approximately every 2 seconds or so, print out the current stats
if (millis() - timer > 2000) {
timer = millis(); // reset the timer
Serial.print("\nTime: ");
Serial.print(GPS.hour, DEC); Serial.print(':');
Serial.print(GPS.minute, DEC); Serial.print(':');
Serial.print(GPS.seconds, DEC); Serial.print('.');
Serial.println(GPS.milliseconds);
Serial.print("Date: ");
Serial.print(GPS.day, DEC); Serial.print('/');
Serial.print(GPS.month, DEC); Serial.print("/20");
Serial.println(GPS.year, DEC);
Serial.print("Fix: "); Serial.print((int)GPS.fix);
Serial.print(" quality: "); Serial.println((int)GPS.fixquality);
if (GPS.fix) {
if(alreadyGreen == false)
{
NeonPixelGPSLocked();
startActivity();
}
Serial.print("Location: ");
Serial.print(GPS.latitude, 4); Serial.print(GPS.lat);
Serial.print(", ");
Serial.print(GPS.longitude, 4); Serial.println(GPS.lon);
Serial.print("Speed (knots): "); Serial.println(GPS.speed);
Serial.print("Angle: "); Serial.println(GPS.angle);
Serial.print("Altitude: "); Serial.println(GPS.altitude);
Serial.print("Satellites: "); Serial.println((int)GPS.satellites);
}
else
{
if(alreadyRed == false)
{
NeonPixelGPSLost();
}
}
}
}
else//if it is in sync mode
{
char character;
while(Serial1.available()>0)
{
character = Serial1.read();
switch(character){
case 'd' :
Serial.println("allsend");
}
// if(character == 'd')
// {
// Serial.print("allsend");
//// if(distanceLogged == true)
//// {
//// distanceLogged == false;
//// Serial.println('distance : ' + distance);
//// Serial.println('allsend');
//// }
//// else
//// {
//// distanceLogged = true;
//// }
////
//// }
//// if(distanceLogged == true)
//// {
//// LogDistance(character);
// }
}
}
}
void LogDistance(char incomingChar)
{
distance.concat(incomingChar);
}
void NeonPixelGPSLost()
{
for(int i=0; i<pixelring.numPixels();i++)
{
pixelring.setPixelColor(i,pixelring.Color(255,0,0));
pixelring.show();
}
alreadyRed = true;
alreadyGreen = false;
}
void NeonPixelGPSLocked()
{
for(int i=0; i<pixelring.numPixels();i++)
{
pixelring.setPixelColor(i,pixelring.Color(124,252,0));
pixelring.show();
}
alreadyGreen = true;
alreadyRed = false;
}
void startActivity()
{
}