Buenas ¡¡
a ver si me pueden ayudar diciendome la mejor manera de hacer esto :
basicamente lo que quiero es mandar un string a arduino tipo :
con 6 valores que irian cambiando podria ser ( 122,133,255,12,80,47)
estos valores tendrian que ser separados para que afectaran el cambio de pwm de los 6 pwm pines .
el problema es que no se cual es la mejor manera , he intentado por un lado esto
int pins[] = {11,10,9};
int input[3];
void setup () {
Serial.begin(9600);//starts serial at 9600
}
void loop () {
if (Serial.available() >= 3) {
for ( int i = 0; i < 3; i++)
analogWrite(pins[i],Serial.read());
}
delay(10); // wait 10 milliseconds
}
le mando los 3 valores en ascii desde vvvv , esto solo funciona si cambio los valores por separado si estan todos cambiando se vuelve loquito .
el segundo intento es usando char , aqui encontre varias dificultades : primero como separar los valores encontre este codigo http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1226107230 que lo hace :
#include <string.h>
char sz[] = "Here; is some; sample;100;data;1.414;1020";
void setup()
{
char *p = sz;
char *str;
Serial.begin(9600);
while ((str = strtok_r(p, ";", &p)) != NULL) // delimiter is the semicolon
Serial.println(str);
}
void loop(){}
luego intente ponerlo en el void loop , pasarlo a int y printearlo el codigo carga pero no va intente de varias maneras lo cargaba simepre pero nada asi que ando perdido en este tema , este fue el ultimo intento debe de estar fatal pero ahi lo pego
#include <string.h>
char theString [] = "122;255;20;100;180;50;";
int charToInt[6];
void setup()
{
Serial.begin(9600);
}
void loop(){
char *p = theString;
char *str;
while ((str = strtok_r(p, ";", &p)) != NULL) // delimiter is the semicolon
for (int i=0; i <= 6; i++){
int charToInt = atoi(str);
Serial.println(charToInt,i);
}
}
quizas el tema de los char tampoco sea la mejor manera , vi que en el codigo de sympleMessageSystem Arduino Playground - SimpleMessageSystem usan tambien en el .cpp strtok_r para separar los valores .
saludines y gracias