pero ahora cambio un poco el codigo para ponerlo en un attiny85, no tengo serial pero tengo softwareserial, pero este no tiene "find"
¿como busco la cadena "led1on" o "led1off" dentro de los datos recibidos por softwareserial?
Hola.
Según creo, el método find no está implementado en la clase Serial, sino en la clase Stream, de la que heredan tanto Serial como SoftwareSerial, así que muy probablemente también puedas utilizarlo en un objeto softwareserial.
noter:
Hola.
Según creo, el método find no está implementado en la clase Serial, sino en la clase Stream, de la que heredan tanto Serial como SoftwareSerial, así que muy probablemente también puedas utilizarlo en un objeto softwareserial.
al compilar me sale:
error: ‘class SoftwareSerial’ has no member named ‘find’
al usarlo como:
Tienes bien instalada la librería?
Puedes poner vínculo a la librería en concreto?
Ahora no puedo probarlo, pero aseguraría que ayer me compiló sin problemas.
noter:
Tienes bien instalada la librería?
Puedes poner vínculo a la librería en concreto?
Ahora no puedo probarlo, pero aseguraría que ayer me compiló sin problemas.
lleva instalada toda la vida, puede ser que mi version sea demasiado prehistorica?
gracias a todos por responder, me he dado cuenta del fallo (pero aun no tengo solucion). Este fallo me sale cuando cambio la placa en el IDE de Arduino UNO a ATTiny85. Con Arduino no da fallos, con el tinny me da el fallo que he puesto antes, entonces pregunto:
¿cómo hago un find en una entrada de datos softwareserial en un attiny85?
en caso de no poder, he probado el siguiente código:
#include <SoftwareSerial.h>
const int rx=3;
const int tx=1;
SoftwareSerial mySerial(rx,tx);
int i=0;
char buf[12];
void setup()
{
pinMode(rx,INPUT);
pinMode(tx,OUTPUT);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available()>0){
buf[i]= mySerial.read();
if (int(buf[i])==13 || int(buf[i])==10 ){ //If Carriage return has been reached
mySerial.println(buf);
for(int x=0;x<=10;x++){
buf[x]=' ';
}
i=0; //start over again
} //if enter
i++;
} //If mySerial.available
}//LOOP
ese codigo supersimple, saca por serie, lo que recibe por serie al pulsar intro. Lo he probado en mi attiny85 y fuinciona, peeeeero, de vez en cuando:
enviar "hola"
recibido "hola"
enviar "hola"
recibido "0x00//hola"
enviar "hola"
recibido "0x00//hola"
y no me gusta, por lo que necesitaría hacer una búsqueda de la cadena "hola" en la cadena recibida, para quitar la morralla que pueda meterse por medio. Yo en mi linux haría algo como:
if [ $(grep -c hola $recibido) -ne 0 ]
then
echo "se recibe hola";
else
echo "no se recibe hola";
fi