Fala galera..
Estou desenvolvendo uma aplicação de leitura de código de barras através do Arduino. Pesquisei varias maneiras de fazer isso e cheguei na conclusão que o melhor custo beneficio no momento (rsrs) é utilizar um leitor de código de barra ligado na entrada USB do PC e utilizar o Serial Monitor.
Enfim a dificuldade que eu encontrei é que o código que vou ler tem 13 caracteres (números) e não consigo utilizar uma variável pra definir esse código. Já testei todas que conheço.. E sempre retorna o erro: "error: integer constant is too large for 'long' type"
Alguém pode me ajudar nessa questão ?! Agradeço desde já..
Segue o código base que estou utilizando..
long LeitorProduto;
long ProdutoA=1231231231234;
long ProdutoB=3213213214321;
void setup()
{
Serial.begin(9600);
pinMode (31, OUTPUT);
pinMode (33, OUTPUT);
}
void loop()
{
while (Serial.available()) {
if (Serial.available()>0)
{
LeitorProduto = Serial.parseInt();
Serial.println(LeitorProduto);
if (LeitorProduto==ProdutoA){
digitalWrite(31,HIGH);
digitalWrite(33,LOW);
}
if (LeitorProduto==ProdutoB){
digitalWrite(33,HIGH);
digitalWrite(31,LOW);
}
LeitorProduto == 0;
}
}
}
OBS: Fiz o teste com códigos menores e o programa funciona. mas preciso que a variavel aceite 13 ou mais caracteres.
Quem puder ajudar.. fico agradecido..
Tags:
Valeu Vitor, mas a long double também não funcionou. aparece o mesmo erro "error: integer constant is too large for 'long' type".
To pesquisando bastante, mas até agora não encontrei algo similar e que resolva.
Mas valeu pela resposta. se puder indicar mais alguma ideia..
Fiz dessa maneira:
long double LeitorProduto;
long double ProdutoA=1231231231234;
long double ProdutoB=3213213214321;
void setup()
{
Serial.begin(9600);
pinMode (31, OUTPUT);
pinMode (33, OUTPUT);
}
void loop()
{
while (Serial.available()) {
if (Serial.available()>0)
{
LeitorProduto = Serial.parseInt();
Serial.println(LeitorProduto);
if (LeitorProduto==ProdutoA){
digitalWrite(31,HIGH);
digitalWrite(33,LOW);
}
if (LeitorProduto==ProdutoB){
digitalWrite(33,HIGH);
digitalWrite(31,LOW);
}
LeitorProduto == 0;
}
}
}
a declaração esta correta ?! porque permanece o mesmo erro.. rsrs
sim, também da erro.. na verdade o valor das minhas variáveis devem suportar um valor tipo 9999999999999, pois os códigos de barras que vou utilizar normalmente começão com 7 ou 9.
Tentei utilizar a String também, mas a função Serial.parseInt() parece que não aceita uma String...
Estou utilizando o ArduinoMega.. Blz entendi..
Será que existe alguma função que faz a leitura do Serial Monitor em partes ?! por exemplo, eu dividiria a leitura do código. Já viu algo assim ?!
Valeu Victor, obrigado pela atenção.
Vou pesquisar algo sobre o assunto, já havia pesquisado mas nada encontrei, acredito que não soube pesquisar..
Tem alguma ideia de onde devo pesquisar, ou melhor como devo pesquisar sobre isso ?!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por