• Welcome to LusoRobótica - Robótica em Português.
 

Duas duvidas... Serial

Started by pedro12, 09 de July de 2010, 17:34

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

pedro12

Em primeiro lugar bom dia, venho aqui postar duas duvidas que gostava de ver esclarecidas, a primeira é se há alguma maneira de por exemplo fazer o seguinte:

Quote
if (Serial.available()) {
  int val = 0;
  val = Serial.read();
 
 
if (val == "PALAVRA E NAO UMA UNICA LETRA") {
digitalWrite(13, HIGH);
}

}


ou seja para que a acção fosse feita tinha de enviar uma palavra ou números tipo como se fosse um código

2ª duvida é como fazer com que se por exemplo eu carregar num botão o computador produza um certo som

desde ja agradeço o esclarecimento das duvidas  :)

preytender

A resposta a 1ª pergunta podes encontrar aqui: http://todbot.com.s3.amazonaws.com/spookyarduino/arduino_spooky_projects_class3.pdf na página 44

Dá uma vista de olhos no pdf todo porque tb tem umas dicas para responder a tua 2ª pergunta.

Abraço.

pedro12

Quote
 void readSerialString (char *strArray){
 int i = 0;
 if (Serial.available()){
 strArray = Serial.read();
 i++;
 Serial.println(strArray);
 }
 }



o codigo em cima e presente no PDF indicado mas ainda nao percebi como utiliza lo por isso gostava de um esclarecimento, quanto á segunda questao nao consegui resolvela nao encontrei nada sobre isso nos PDFs

mas agradço desde ja ao preytender

XicoMBD

Quanto à 2ª dúvida:


Experimenta usar o processing: http://processing.org/
Deve ser fácil perceberes a linguagem uma vez que utilizas o arduino.


Depois de instalares o programa podes ir a Files/Examples/Libraries/Serial e abrires o programa SimpleRead.
Quando pressionas o botão ligado ao arduino programado com o programa que lá está muda-se a cor de um quadrado. Depois se quiseres podes adaptar para fazer o som.




Espero que ajude  :)

preytender

#4
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.

pedro12

muito obrigado pelo esclarecimento das minhas duvidas!!!:)