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..

Exibições: 579

Responder esta

Respostas a este tópico

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 ?!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço