Created
July 29, 2017 11:00
-
-
Save headHUB/275d6cb4f00581c666e9f3821682c79c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <VarServoSpeed> | |
//zoomkat 11-12-13 String capture and parsing | |
//from serial port input (via serial monitor) | |
//and print result out serial port | |
//copy test strings and use ctrl/v to paste in | |
//serial monitor if desired | |
// * is used as the data string delimiter | |
// , is used to delimit individual data | |
String readString; //main captured String | |
String device; //data String | |
String value; | |
String direction; | |
//String speed1; | |
//String altidude; | |
int ind1; // , locations | |
int ind2; | |
int newVal = 0; | |
int slow = 75; | |
int ind3; | |
//int ind4; | |
VarServoSpeed pan; | |
VarServoSpeed tilt; | |
void setup() { | |
Serial.begin(9600); | |
pan.attach(6); | |
tilt.attach(5); | |
// Serial.println("serial delimit test 11-12-13"); // so I can keep track of what is loaded | |
} | |
void loop() { | |
//expect a string like 90,low,15.6,125* | |
//or 130,hi,7.2,389* | |
if (Serial.available()) { | |
char c = Serial.read(); //gets one byte from serial buffer | |
if (c == '*') { | |
//do stuff | |
/* | |
Serial.println(); | |
Serial.print("captured String is : "); | |
Serial.println(readString); //prints string to serial port out | |
*/ | |
ind1 = readString.indexOf(','); //finds location of first , | |
device = readString.substring(0, ind1); //captures first data String | |
ind2 = readString.indexOf(',', ind1 + 1); //finds location of second , | |
direction = readString.substring(ind1 + 1, ind2 + 1); | |
ind3 = readString.indexOf(',', ind2+1 ); | |
value = readString.substring(ind2+1, ind3+1); | |
if (device == "S") { | |
if (direction == "P") { | |
newVal = map(value, -37000, 37000, 0, 179); | |
pan.write(newVal, slow); | |
} | |
else if (direction == "T") { | |
newVal = map((value * (-1)), -37000, 37000, 30, 140); | |
tilt.write(newVal, slow); | |
} | |
} else if (device == "M") { | |
if (direction == "F") { | |
newVal = map((value * (-1)), 0, 37000, 0, 254); | |
digitalWrite(in1, HIGH); | |
digitalWrite(in2, LOW); | |
digitalWrite(in3, LOW); | |
digitalWrite(in4, HIGH); | |
analogWrite(en1, newVal); | |
analogWrite(en2, newVal); | |
} | |
else if (direction == "B") { | |
newVal = map(value, 0, 37000, 0, 254); | |
digitalWrite(in1, LOW); | |
digitalWrite(in2, HIGH); | |
digitalWrite(in3, HIGH); | |
digitalWrite(in4, LOW); | |
analogWrite(en1, newVal); | |
analogWrite(en2, newVal); | |
} | |
else if (direction == "R") { | |
newVal = map(value, 0, 37000, 0, 254); | |
digitalWrite(in1, LOW); | |
digitalWrite(in2, HIGH); | |
digitalWrite(in3, LOW); | |
digitalWrite(in4, HIGH); | |
analogWrite(en1, newVal); | |
analogWrite(en2, newVal); | |
} | |
else if (direction == "L") { | |
newVal = map((value * (-1)), 0, 37000, 0, 254); | |
digitalWrite(in1, HIGH); | |
digitalWrite(in2, LOW); | |
digitalWrite(in3, HIGH); | |
digitalWrite(in4, LOW); | |
analogWrite(en1, newVal); | |
analogWrite(en2, newVal); | |
} | |
} | |
// ind3 = readString.indexOf(',', ind2+1 ); | |
// speed1 = readString.substring(ind2+1, ind3+1); | |
// ind4 = readString.indexOf(',', ind3+1 ); | |
// altidude = readString.substring(ind3+1); //captures remain part of data after last , | |
// | |
// Serial.print("angle = "); | |
// Serial.println(angle); | |
// Serial.print("fuel = "); | |
// Serial.println(fuel); | |
// Serial.print("speed = "); | |
// Serial.println(speed1); | |
// Serial.print("altidude = "); | |
// Serial.println(altidude); | |
// Serial.println(); | |
// Serial.println(); | |
readString=""; //clears variable for new input | |
device=""; | |
direction=""; | |
value=""; | |
//altidude=""; | |
} | |
else { | |
readString += c; //makes the string readString | |
} | |
delay(50);} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment