Galera sou novo por aqui e tenho uma duvida, estou tentando criar uma função que acenda qualquer led através do que eu escrever na Serial, por exemplo se eu digita 13 o arduino acendera a porta 13, o codigo seria algo assim.
int numero = 0;
void setup() //funcao que é executada ao iniciar a aplicação
{
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
}
int ligaLed(int n) \\minha função para ligar leds
{
digitalWrite(n,HIGH);
}
void loop()
{
if (Serial.available() > 0)
{
numero = Serial.read();
Serial.print(numero);
ligaLed(numero);
}
}
Mas o problema que estou tendo e que quando digito 13 por exemplo na serial ele me retorno no modelo ASCI com valor 4951, tem alguma biblioteca para eu fazer a conversão do ASCI para decimal ? Ou algum meio que eu poderia estar recebendo o numero digitado?
Agradeço desde jah!
Tags:
Faça assim:
int numero = 0;
void setup() //funcao que é executada ao iniciar a aplicação
{
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
}
int ligaLed(int n) \\minha função para ligar leds
{
digitalWrite(n,HIGH);
}
void loop()
{
if (Serial.available() > 0)
{
numero = Serial.parseInt();
Serial.print(numero);
ligaLed(numero);
}
}
Obrigado Mauro Funcionou perfeitamente!!
Nada, bicho, legal que deu certo.
Gostei desse código fica muito melhor do que eu costumava usar mais uma duvida como ficaria para desligar os leds tbm?
Muito obrigado, 9 anos depois. Posso substituir Serial.read() por este Serial.parseInt()? Ou seria somente para variaveis do tipo Int?
Boa tarde,
recomendo não pegar carona em tópico de outros amigos, principalmente um tópico com
mais de 8 anos.
Crie seu próprio tópico, post seu projeto e sua dificuldade.
É de graça... Não cobramos nada se a pergunta for inteligente......
Quanto maior a informação que vc fornecer melhor teremos condições de ajuda-lo.
NÃO cole código na área de texto do tópico. Anexe um arquivo com seu código .
RV mineirin
Obrigado mineririn, tu acreditas que eu criei um tópico e exclui pois eu havia achado que só estaria tumultuando? Em breve vou reescrever.
49 = 1
51 = 3
Quando você digita o número 1 (caractere) você obtem o valor 49 (decimal)
Quando você digita o número 3 (caractere) você obtem o valor 51 (decimal)
Eu fiz uma função que converte inteiro em decimal veja abaixo:
{*
Função para converter inteiro em hexadecimal
Autor:Almir Bispo
Data:11/01/2014
Slogan:Yehovah é o Nome do Santo
*}
function Intparahex(intvalor:integer;forma:string):string;
var o1,o2,o3,o4:tstringlist;
i,ii,iii,iiii,ord:integer;
str,formato:string;
begin
if forma='0' then begin formato:='$';end;
if forma='1' then begin formato:='0x';end;
o1:=tstringlist.create;
o2:=tstringlist.create;
o3:=tstringlist.create;
o4:=tstringlist.create;
o1.Delimiter:=char(';');
o2.Delimiter:=char(';');
o3.Delimiter:=char(';');
o4.Delimiter:=char(';');
o1.DelimitedText:=('0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f');
o2.DelimitedText:=('0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f');
o3.DelimitedText:=('0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f');
o4.DelimitedText:=('0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f');
ord:=0;
for i:= 0 to o1.Count-1 do
begin
for ii:= 0 to o2.count-1 do
begin
for iii:= 0 to o3.count-1 do
begin
for iiii:= 0 to o4.count-1 do
begin
if ord =intvalor then
begin
str:=o1.Strings[i]+o2.strings[ii]+o3.strings[iii]+o4.strings[iiii];
Result :=formato+str;
exit;
end;
inc(ord);
end;
end;
end;
end;
o1.free;
o2.free;
o3.free;
o4.free;
end;
///fim
Uma outra forma que desenvolvi para receber um exadecimal pela porta e transformar em inteiro é:
variavel_string := inttostr(int64(chr(variant(porta.ReadData))));
Estes códigos é usando o "velho e bom pascal" e deve colocar a unidade strutils em USES.
Este código uso perfeitamente com Lazarus e componentes 5dpo para acesso a serial
gibroh_webmaster@hotmail.com
Amigo, me ajude, estou com um numero em hexadecimal no monitor serial, e quero passar pro arduino em decimal, como faço ? Estou usando o modulo bluetooth e ele fornece a intensidade do sinal de outro modulo em hexadecimal ( o ultimo da linha - 7FFF). Quero passar este numero para o arduino e transformar para decimal.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por