comando if con stringa

Ciao a tutti!
Ho un piccolo problema da risolvere a causa della mia poca esperienza…
Allora ho realizzato un programma che visualizza su un lcd le parole che invio dal Serial Monitor e con un pulsante che cancella la variabile string che imagazzina le parole. Fino a qui tutto funziona alla grande.
Adesso mi piacerebbe che si accendesse il led sul pin 13 quando invio una data parola o carattere…
questo e il codice del programma:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,4);
int val =0;
int i=0;
char s[100];
#define pCANC 2
#define LED 13
int CANC=0;

void setup()
{
Serial.begin(9600);
lcd.init();
pinMode(pCANC, INPUT);
pinMode(LED, OUTPUT);

}

void loop(){
CANC=digitalRead(pCANC);
lcd.backlight();
if(Serial.available()){
val=Serial.read();
lcd.backlight();
s*=char(val);*

  • i++;*
  • lcd.setCursor(0,0);*
  • lcd.print(s);*
  • lcd.setCursor(0,1);*
  • lcd.print(i);*
  • }*
  • if(CANC==LOW){*
  • delay(250);*
  • lcd.clear();*
  • memset( s, ‘\0’, strlen( s ) );*
  • free( s );*
  • val=0;*
  • i=0;*
  • }*
    }
    spero in un vostro aiuto
    grazie
    [/size]

per controllare la presenza di una stringa all'interno dell'altra puoi usare la funzione strstr

strstr(s1, s2) controlla l'occorrenza in qualsiasi punto della stringa s2 nella stringa s1 e restituisce un valore booleano

ad esempio potresti usarla così

if (strstr(s, "accendi_led")) digitalWrite(13, HIGH);

per usare la funzione devi includere string.h

Puoi usare la funzione indicata da uccio, ma per farlo devi prima dichiarare una variabile stringa (un array di tipo char) della lunghezza massima che prevedi di scrivere, quindi devi immettere gli stessi caratteri che ricevi ed invii all'LCD nella stringa che dovrai anche cancellare e gestire nel medesimo modo con il quale l'LCD ti mostra i caratteri.

Per maggiore chiarezza: la gestione della tua stringa la devi fare in modo da evitare ad esempio il superamento dei limiti della lunghezza prevista (nel tuo caso se intendi usare la stessa già dichiarata sarà 100), perchè nel C le stringhe non te le controlla nessuno...

grazie mille uccio adesso funzia! Menomale che esiste il forum arduino e persone come te disposte ad aiutare i nabbi ;D ;D

di nulla :)

torna sul forum e contribuisci anche te!

prova con la libraria wstring.h http://www.arduino.cc/en/Tutorial/TextString

usi il comando if(inString.contains("parola desiderata"))

cercherò di fare quel che posso