As respostas para este tópico estão encerradas.
int leitura=0;
void setup(){
Serial.begin(9600);
Serial.println("digite 1 ou 2 e aperte enter");
}
void loop(){
if(Serial.available() >0){
leitura = Serial.read();
}
if(leitura=='1'){
Serial.println("vc digitou 1");
Serial.println("");
}
if(leitura == '2'){
Serial.println("vc digitou 2");
Serial.println("");
}
}
\\ espero ter te ajudado :D
Thomas,
Desculpe-me incomodá-lo novamente mas poderia me dizer
porque no sketch que você postou, ao executar, aparecem 5 vezes "vc digitou 1"
(usando 1).
Eu tenho semelhante que aparecem 4 vezes e se tirar "Serial.available"
aparece uma única vez.
Muitissimo obrigado
o motivo de não funcionar é o fato do void loop estar vazio o setup ele faz a leitura apenas uma vez enquanto o loop fica repetindo
Murta;
Muito obrigado.
Conheço quase todos os links mas não me lembro exatamente em qual vi
superficialmente algo sobre "nuvem", que irei procurar novamente.
Mas o que estou pesquisando são as funções que funcionam no setup.
Já testei: for, delay e return as quais funcionaram e if que não funcionou.
Tenho muita curiosidade para saber porque o if não funciona no setup
Vou continuar com outras.
É tudo puritanismo para eu fazer comparações com "main" do C.
Você vislumbra minha utopia?
Teoricamente tudo funciona no setup();
O unico detalhe é que como no main(); vc não pode deixar terminar o programa, deve fazer ao final um loop infinito forçado.
A solução mais simples que o arduino adotou foi dividir em 2 funções. Uma para setup e outra para loop mas o loop fica em loop mesmo que vc não peça.
Possivelmente se vc desmontar o compilador (ou libs) vai descobrir que existe um main() que tem dentro um:
main()
{ setup();
while(1) loop();
}
Ou algo assim.
Sobre o if, certamente funciona. No seu exemplo inicial o q ocorre com a leitura é que seu valor é atualizado somente se houver um novo caracter disponivel no buffer da serial (available). Se não tiver ele fica com o mesmo valor de antes. Imprimindo assim disparado.
Se vc quer que imprima somente uma vez mude o colchete para frente de forma que só seja executado o segundo if (==) se for encontrada a condição anterior (available).
A sua duvida é tipica de fundamentalista que busca argumentação. Em geral na informática a primeira tentativa é fazer do jeito que deve ser feito. Deixando as soluções criativas para caso não consiga do jeito certo. Assim se faz setup() para inicializações e loop() para o loop. Como um axioma.
Max
Por favor da proxima vez, não coloque seu sketch como uma imagem, pois dá trabalho ficar digitando tudo de novo e ai o foco deixa ser de encontrar o erro.
Bem, acho que ´que você quer tá nos sketchs abaixo.
Fiz de duas formas diferentes, escolhe a que achar mais legal
FORMA 1
int mostre=1; // variavel simples que permitira mostrar o titulo apenas uma vez ao inves de ficar enchendo a tela
int leitura=0;
void setup(){
Serial.begin(9600);
while(true){
if(mostre==1){
Serial.println("digite 1 ou 2 e aperte enter");
mostre=0;
}
if(Serial.available() > 0){
leitura = Serial.read();
mostre=1;
}
if(leitura=='1' ){
Serial.println("vc digitou 1");
Serial.println(" ");
delay(500);
leitura=0;
}
if(leitura == '2' ){
Serial.println("vc digitou 2");
Serial.println(" ");
delay(500);
leitura=0;
}
}
}
void loop(){}
FORMA 2
int leitura=0;
void setup(){
Serial.begin(9600);
while(true){
Serial.println("digite 1 ou 2 e aperte enter");
while( !Serial.available() ){}
leitura = Serial.read();
if(leitura=='1' ){
Serial.println("vc digitou 1");
Serial.println(" ");
delay(500);
leitura=0;
}
if(leitura == '2' ){
Serial.println("vc digitou 2");
Serial.println(" ");
delay(500);
leitura=0;
}
}
}
void loop(){}
Weider, Muito obrigado.
Qual seria a melhor forma de apresentar o sketch?
Alguém exigiu (bravo!) que eu postasse a imagem (não entendi)
Concordo contigo mas diga-me qual a melhor apresentação?
Quanto aos sketches irei, hoje, testá-los
Novamente obrigado
Max,
Se você copiar da IDE do arduino e colar aqui tá de bom tamanho, se for um sketch muuuuuito grande, ai você upa ele como arquivo anexo, mas no geral basta copiar e colar da IDE.
Ah, essa segunda maneira que coloquei ai é a mais legal, só deu o vacilo de esquecer de comentar, mas é porque eu resolvi o problema proposto quase 1 da matina, tava com sono, mas no geral o que fiz foi colocar um loop eterno com a função while(true){} isso fará com que o void setup passe a fazer o mesmo que o void loop faz, ou seja, fique em loop eterno.
Fora isso no segundo exemplo coloquei um segundo while() aguardando algo da serial e ficando preso dentro de um loop até acontecer algo, quando acontece ele sai do loop e faz o que tiver abaixo, mas como ele ta dentro do while(true) ele entra em laço e volta a fazer tudo novamente.
Sendo assim, se seu objetivo é deixar o void loop em branco, tá ai como é que se faz.
Weider
Tentei copiar e colar mas não consegui (copia mas não cola, não aparece
a janela das opções).
Vou tentar novamente (sou muito lerdo)
Obrigado.
obs. tentei as duas opções e aparece depois da resposta,
duas vezes a frase "digite 1 ...."
Mudando Serial.println('digite.....") para imediatamente após "begin"
tudo ocorre corretamente.
Bom dia MW.
Não cole seu sketch na área de texto do tópico.
Alem de perde a formatação pode perder caracter .
Ou anexe como um arquivo, ou post no www.pastebin.com, e post o link aqui.
RV
Faça o seguinte teste e entenderá o que estou dizendo:
Digite um sinal de igual (=) seguido de dois sinais de menor (<) e dê " "adicionar resposta", e veja o que ocorre.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por