Olá a todos, gostaria de saber se alguém poderia me ajudar com uma sketch, eu consigo através do monitor serial gravar dados no cartão e depois ler e mostrar no monitor serial, mas eu não consigo pegar esses valores para incrementar ou decrementar e ate mesmo fazer comparação, acredito que seja porque não esta sendo gravado na unidade correta, mas eu não estou entendendo como gravar os dados de maneira correta, o código que estou usando esta mesclado vários exemplos que achei na internet . Basicamente só quero gravar um numero no cartão depois somar e subtrai a ele, e fazer a leitura desse valor.

Exibições: 398

Responder esta

Respostas a este tópico

Boa noite.

como o seu projeto e seu código estão na sua cabeça e não na nossa, fica muito difícil ajudar sem saber

o que voce está fazendo.

Para que possamos tentar ajuda-lo, será preciso que você poste um arquivos com seu código,

(não cole codigo em area de texto do tópico).

Diga-nos como ele deveria funcionar e diga-nos como ele está funcionando e que componentes está usando.

Por exemplo eu imagino que voce está usando um sensor de digital ligado em um notebook com processador I7, e

que seu codigo está escrito em assembly e imprimindo em um impressora 3D.  Certo ou estou  errado?

RV  mineirin

o codigo esta anexado. Eu quero pegar um valor do monitor serial, converter para o tipo de dado que é gravado no cartao mifare, e com esses dados depois somar e subtrair. Tipo um sistema de passagens ou creditos.

Anexos

Bom dia,  

ainda não sei o que vc está usando.

Qual arduino, qual rfid, etc etc

RV mineirin

Bom dia, arduino uno, modulo rc522, cartao mifare

Boa tarde.

Qdo vc tem que entregar este seu TCC?

Vc pode me explicar o que vc quis fazer aqui:

"

  len = Serial.readBytesUntil('#', (char *) buffer, 30) ;
  for (byte i = len; i < 30; i++) buffer[i] = ' ';

"

RV mineirin

Boa tarde,

com estas instruções:

  len = Serial.readBytesUntil('#', (char *) buffer, 30) ;
  for (byte i = len; i < 30; i++) buffer[i] = ' ';

voce está determinando quantos bytes foram digitados,

salva os dados em "buffer" e limpa o resto dom buffer.

Mas os dados estão no formato caractere.

Por exemplo se voce digitar "1234#",

no buffer vai ficar buffer[0] 31 (Hex 49), buffer[2] 32 (Hex 50), 

buffer[3] 33 (Hex 51), buffer[4] 34 (Hex 52).

Sugiro que voce leia a serial com "Serial.parseInt();" poi assim vai receber o valor como digitado.

Depois então quando tiver operado com o  numero, voce transforma ele em array para gravar no cartão.

RV mineirin

Ok vamos la, estou tentando entender o que disse, eu sei mais o basico, essa parte de buffer e mexer com hexadecimal estou estudando pra tentar entender. Como eu disse eu peguei esse codigo ja pronto pra poder tentar entender, fiz pequenas modificações nele so pra chamar funções. Eu estou tentando entender essa parte

status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
if (status != MFRC522::STATUS_OK) {
Serial.print(F("MIFARE_Read() failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
}
//Mostra os dados do nome no Serial Monitor e LCD

for (byte i = 1; i < 16; i++)
{
Serial.print(char(buffer[i]));

}

É onde aparentemente lê os dados de um determinado bloco do cartão, não to entendendo o formato que ele ta sendo lido

Bom dia

Qdo vc tem que entregar este seu TCC?

RV mineirin

Bom dia, é um trabalho pra apresentar em maio

Bom dia, porque voce quer gravar o valor em vários setores?

Explique melhor seu projeto para que possamos ajudar.

Uma boa ajuda vem de perguntas com informações completas e bem explicadas.

Faça um resumo. (Como se voce fosse ajudar alguém).

RV mineirin

Seguinte, eu preciso apenas salvar um valor, em qualquer setor, apenas um numero inteiro ou float, preciso ler ele ao aproximar o cartao, subtrair um valor e gravar por cima o novo valor. Não parece muito complicado, mas eu não estou entendendo como usar as funções da biblioteca mfrc522, e como converter os valores variaveis em bytes pra gravar no cartao

Boa tarde.

veja se este code atende sua necessidade.

Ele pega os valores digitados na serial, transforma em long e

em seguida grava no no cartão.

Em seguida se voce ler o cartão os valores serão lidos e convertidos em long em uma variável de nome "rdValor", que pode ser usada para as suas operações aritméticas.

Acrescentei uma opção "4" que faz dump da memoria do seu cartão.

RV mineirin

RFID3.0.ino

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço