Ciao a tutti,
mi succede una cosa strana con questo codice:
#include <Servo.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int incomingByte = 0; // for incoming serial data
char sComando[7];
char sByte[7];
int sValue;
int count=0;
int ledPin = 13;
int Servo1Pin = 9;
String mc="forward1";
Servo SXServo;
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
SXServo.attach(Servo1Pin);
}
char Comp(char* _value){
count=0;
while(Serial.available() > 0) {
if(count<7){
// read the incoming byte:
incomingByte = Serial.read();
sByte[count] = incomingByte;
count++;
sByte[count] = '\0';
}
Serial.println(count);
}
if(count==6){
strncpy(sComando,sByte,3);
Serial.println(sComando);
Serial.println(sByte);
}
// sComando[4] = '\0';
if(strcmp(sComando, _value) == 0 & count==6){
resetString(sComando);
int index=0;
for (int i=3; i<6; i++){
sComando[index]=sByte[i];
index++;
}
Serial.println(sComando);
sValue=atoi(sComando);
Serial.println(sValue);
resetString(sComando);
resetString(sByte);
if (sValue>0 & sValue<180){
return(sValue);
}
}
else {
return(-1);
}
}
void resetString(char* _value){
for(int i=0; i<7; i++){
_value[i]=0;
}
}
void loop() {
int iValue;
iValue=Comp("ma1");
if(iValue >= 0){
Serial.println("ok!");
MotoreSXavanti(iValue);
}
}
void MotoreSXavanti(int _value){
SXServo.write(_value);
}
La cosa strana è questa se io elimino la riga Serial.println(count); il programma per qualche motivo non entra nell'istruzione if(count==6){. Inserendola come in questo funziona.
Il codice non è dei migliori e debbo risistemarlo è una bozza.
Qualcuno potrebbe darmi qualche suggerimento?
Grazie