This my COde that takes values like or or further as you can see on further processing the ‘<’ & ‘>’ are removed and subsequently pl and pr are also removed and just the number is left that is then fed into analogWrite for pwm, The problem is for the first time it works but for the second time it shows Zero it means the second time the code is going haywire which im not till now able to find why.
char inData[20]; // Allocate some space for the string
char inChar = 0; // Where to store the character read
int index = 0; // Index into array; where to store the character
int slaveSel = 0;
String Data;
int intData, pan;
boolean started, ended, panTimer;
long previousMillis = 0;
long interval = 2420;
int pan1 = 9;
int pan2 = 6;
int tilt1 = 5;
int tilt2 = 3;
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(pan1, OUTPUT);
pinMode(pan2, OUTPUT);
pinMode(tilt1, OUTPUT);
pinMode(tilt2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
while(Serial.available() > 0) // Don't read unless
// there you know there is data
{
inChar = Serial.read(); // Read a character//read the character
if(inChar =='<') //not sure what to put in if statement to run until end
{
started = true;
index=0;
}
else if(inChar =='>')
{
ended = true;
break;
}
if(started)
{
inData[index] = inChar; // Store it
index++; // Increment where to write next
inData[index] = '\0'; // Null terminate the string
}
}
if (ended)
{
Data = inData;//values of acclerometer like "545X" etc enter and stored in Data
//char CharData = Data.charAt(6);
//intData = int(CharData);
process();
}
}
void process()
{
Data = Data.replace('<', ' ');
Data = Data.replace('>', ' ');
Data = Data.trim();
char chkPan = Data.charAt(0);
char chkPan1 = Data.charAt(1);
if (chkPan == 'p' && chkPan1 == 'r')
{
Data = Data.replace('p', ' ');
Data = Data.replace('r', ' ');
Data = Data.trim();
char DataChar[5];//char Array to store the char conversion values from DataToInt
Data.toCharArray(DataChar, sizeof(DataChar));
intData = atoi(DataChar);
//if (panTimer == true) pan=0; else panTimer = true;
analogWrite(pan1, intData);
digitalWrite(pan2, LOW);
Serial.println(intData);
for(int i=0;i<10;i++)
{
inData[i]=0;
}
index=0;
intData = 0;
Serial.flush();
}
if (chkPan == 'p' && chkPan1 == 'l')
{
Data = Data.replace('p', ' ');
Data = Data.replace('l', ' ');
Data = Data.trim();
char DataChar[5];//char Array to store the char conversion values from DataToInt
Data.toCharArray(DataChar, sizeof(DataChar));
intData = atoi(DataChar);
//if (panTimer == true) pan=0; else panTimer = true;
analogWrite(pan2, intData);
digitalWrite(pan1, LOW);
Serial.println(intData);
for(int i=0;i<10;i++)
{
inData[i]=0;
}
index=0;
intData = 0;
Serial.flush();
}
if (Data == "pstp") {
digitalWrite(pan1, LOW);
digitalWrite(pan2, LOW);
Serial.println(Data);
for(int i=0;i<10;i++)
{
inData[i]=0;
}
index=0;
intData = 0;
Serial.flush();
}
if (Data == "tfr")//Here put the condition as per the values received from the Accelerometer
{
digitalWrite(tilt1,HIGH);
digitalWrite(tilt2, LOW);
Serial.println(Data);
//Serial.println(millis());
for(int i=0;i<10;i++)
{
inData[i]=0;
}
index=0;
intData = 0;
Serial.flush();
}
if (Data == "tst") {
digitalWrite(tilt1, LOW);
digitalWrite(tilt2, LOW);
Serial.println(Data);
for(int i=0;i<10;i++)
{
inData[i]=0;
}
index=0;
intData = 0;
Serial.flush();
}
if (Data == "tbk")//Here put the condition as per the values received from the Accelerometer
{
digitalWrite(tilt1,LOW);
digitalWrite(tilt2, HIGH);
Serial.println(Data);
//Serial.println(millis());
for(int i=0;i<10;i++)
{
inData[i]=0;
}
index=0;
intData = 0;
Serial.flush();
} /*
if (panTimer == true) {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
pan++;
if (pan == 7) {
digitalWrite(pan1, LOW);
digitalWrite(pan2, LOW);
panTimer == false;
pan = 0;
}
}
}*/
}