Resposta a 1ª Pergunta - Este codigo esta pronto a funcionar dá uma vista de olhos e se tiveres duvidas avisa.
// Variavel global para guardar os comandos recebidos
// maximo de 20 caracteres se precisares de comandos maiores aumenta este numero
char meuComando[20];
void setup() {
// Inicializar Comunicação Serial
Serial.begin(19200);
Serial.println("Arduino Ready...");
}
void loop() {
// Caso exista algum dado a ser recebido via serial chamar a funcao readserialstring
if (Serial.available()) {
readserialstring();
}
// Verificar se existe algum comando para ser processado
// Nota: O caracter '\0' representa o fim da string por isso uma string vazia tem esse caracter na posição 0.
if (meuComando[0]!='\0') {
Serial.print("Encontrado um comando:");
if (strcmp("blink",meuComando)==0) {
// Caso o comando seja a palavra "blink" executa este código.
// Cuidado: "blink" é diferente de "Blink"
Serial.println("Executar Comando Blink");
} else {
// Caso não seja codigo válido da erro e não faz nada
Serial.println("Comando Invalido");
}
// No fim limpar a variavel do comando para não voltar a executar
meuComando[0]='\0';
}
delay(250);
}
// Função para ler uma string de serial
// Basicamente vai colocando um caracter de cada vez na variavel meuComando até ja não haver mais.
// No fim a variavel meuComando tem a string completa
void readserialstring() {
int i=0;
while (Serial.available()) {
meuComando[i]=Serial.read();
i++;
}
meuComando[i]='\0';
}
Com relação a 2ª pergunta concordo com a sugestão do XicoMBD porque o processing é parecido com o arduino mas se estiveres mais a vontade com outras linguagens de programação como por exemplo Java,C,VB,C# podes utilizar qualquer uma delas.
Abraço.