08.11.2017 Views

arduino_básico_Michael_McRoberts

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capítulo 9 ■ Servomecanismos<br />

225<br />

Escrevemos para ambos os servos um valor de 90, que corresponde ao ponto central,<br />

de modo que iniciem na posição central:<br />

servo1.write(90);<br />

servo2.write(90);<br />

// Coloca o servo1 na posição inicial<br />

// Coloca o servo2 na posição inicial<br />

Então a palavra “STARTING...” é exibida na janela do monitor serial, para que você saiba<br />

que o dispositivo está pronto para receber comandos:<br />

Serial.println("STARTING...");<br />

No loop principal, verifique se dados foram enviados pela linha de comunicação serial:<br />

if (Serial.available() > 0) { // Verifica se dados foram digitados<br />

Se afirmativo, deixe que o buffer encha e obtenha o comprimento da string, garantindo<br />

que ele não ultrapasse o máximo de dez caracteres. Assim que o buffer estiver cheio,<br />

chame a rotina splitString, enviando o array de buffer à função:<br />

int index=0;<br />

delay(100); // Deixa o buffer encher<br />

int numChar = Serial.available(); // Encontra o comprimento da string<br />

if (numChar>10) {<br />

numChar=10;<br />

}<br />

while (numChar--) {<br />

// Preenche o buffer com a string<br />

buffer[index++] = Serial.read();<br />

}<br />

splitString(buffer); // Executa a função splitString<br />

A função splitString recebe o array de buffer, faz sua divisão em comandos separados,<br />

caso tenha sido digitado mais de um, e chama a rotina setServo, com o parâmetro<br />

retirado da string de comando recebida pela linha serial:<br />

void splitString(char* data) {<br />

Serial.print("Data entered: ");<br />

Serial.println(data);<br />

char* parameter;<br />

parameter = strtok (data, " ,"); // De string para tokens<br />

while (parameter != NULL) { // Se ainda não atingimos o fim da string...<br />

setServo(parameter); // ...execute a função setServo<br />

parameter = strtok (NULL, " ,");<br />

}<br />

// Limpa o texto e os buffers seriais<br />

for (int x=0; x

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!