Boa tarde, 

estou iniciando no mundo do Arduino e me deparei com o seguinte problema:

Montei um código para digitar uma frequência pela entrada Serial e com isso emitir um som com o buzzer

Segue código abaixo:

[code]
char tom[4];
int tomint;

void setup() {
Serial.begin(9600);
while(Serial.available())
Serial.read();
pinMode(11,OUTPUT);

}

void loop() {
if (Serial.available() > 0) {
int index = 0;
delay(200);
int numcar = Serial.available();
if (numcar > 4) {
numcar = 4;
}
while (numcar--) {
tom[index++] = Serial.read();
}
tomint = strtol(tom,NULL,10);
Serial.print("Hz escolhida: ");
Serial.println(tomint);
delay(500);
}
tone(11,tomint);
delay(2000);
noTone(11);
delay(2000);
}

[/code]

O problema é que se eu digitar 1 por exemplo o meu código considera 1000, se eu quiser colocar valores abaixo de 1000 tenho que colocar 0001 por exemplo.

Como faço para consertar isso?

Outra dúvida, em C++ eu colocar cin variável, e o programa aguarda até a resposta do usuário, é possível fazer isso no Arduino, veja que a programação acima ficaria muitooooo menor.

Desde já obrigado!

Exibições: 121

Responder esta

Respostas a este tópico

Felipe, boa tarde.

expereimente com Serial.parseInt  ao inves de  Serial.read.

Serial.read retorna o valor Hexadecimal e parseInt() retorna o vlor inteiro digitado.

E  configure o Serial monitor com "no line ending"

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço