hi everyone im having a hack at a dedicated servo arduino mainly for learning.
ok so it reads from serial something like
$SERVO,123,30,100,180,55*
checks it mainly starts with $SERVO
then finds the , and the final *
my problem is that i need to convert the "123" into a int but seen as its split up into
linea[8]=49 <char
linea[9]=50 <char
linea[10]=51 <char
i know i can just subtract 48 to get the int i want but i need to cram the remaning "1"2"3" into
servo[1] = 123 <int
if someone unserstands me please help!
heres my code:
#include <string.h>
#include <ctype.h>
int servo[5] = {'1', '2', '3', '4', '5'}; //'1-5' = output pins
int rotation[5] = {90, 90, 90, 90, 90};
int pw = 0;
int inputbyte =-1;
char linea[300] = "";
char servopin[7] = "$SERVO";
int conta = 0;
int cont = 0;
int indices[5];
int match=0;
void setup(){
Serial.begin(9600);
for(int f=0; f<5; f++){
pinMode(servo[f], OUTPUT);
}
for (int i=0;i<300;i++){ // Initialize a buffer for received data
linea[i]=' ';
}
}
void loop(){
//put bytes from serial into linea
conta=0;
match=0;
inputbyte=Serial.read();
if(inputbyte == -1){
//servos();
} else {
for(int h=0; h<=60; h++){
linea[h]=inputbyte; // If there is serial port data, it is put in the buffer
inputbyte=Serial.read();
delay(2);
}
//serial Checker (prints linea)
Serial.println("linea =");
for(int y=0; y<60; y++){
Serial.print(linea[y]);
}
Serial.println("");
Serial.println("");
//prints the servopin 2 serial 2 check it
Serial.println("servopin = ");
for (int i=0;i<7;i++){
Serial.print(servopin[i]);
}
Serial.println("");
Serial.println("");
//Checks the start = servopin
for (int i=0;i<7;i++){
if (linea[i+1]==servopin[i]){
match++;
Serial.println("positave");
} else {
Serial.println("negitave");
}
}
Serial.println("");
Serial.println("");
//if 5 or more characters match
if(match==5){
Serial.println("got to here!");
Serial.println("");
Serial.println("");
//find the , seperators and the * end
for (int i=0;i<300;i++){
if (linea[i]==','){ // check for the position of the "," separator
indices[cont]=i;
cont++;
}
if (linea[i]=='*'){ // ... and the "*"
indices[5]=i;
cont++;
}
}
for(int j=0; j<5; j++){
Serial.print("indices ");
Serial.print(j);
Serial.print(" = ");
Serial.println(indices[j]);
}
//THIS BIT HERE!!!!!
for(int c=0; c<5; c++){
for(int i=0; i<5; i++){
Serial.println(linea[i]);
Serial.println(servo[i]);
}
}
}
}
}
yes i know theres a lot of junk in there its just because im debugging it
thanks so mych in advance