Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

ESP32 stampare valore variabile

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] ESP32 stampare valore variabile

Messaggioda Foto Utentemagomelo » 16 dic 2019, 0:32

Ciao..
ho acquistato un ESP32 e sto facendo varie prove con alcuni sensori che gia avevo in casa, mi sono impantanato pero' sua cosa che davo quasi scontata...
ho collegato un lettore rfid RDM6300 e l'idea era leggere il tag, salvare il valore nella variabile X ed in fine stampare il valore del tag e della variabile X (che mi aspettavo fossero uguali) sul monitor seriale.
vi scrivo il sorgente completo cosi magari potete dirmi cos'è che sbaglio.
utilizzo Arduino IDE.
Codice: Seleziona tutto
#include <rdm6300.h>
#define RDM6300_RX_PIN 4
#define READ_LED_PIN 13

Rdm6300 rdm6300;

void setup()
{
  Serial.begin(115200);

  pinMode(READ_LED_PIN, OUTPUT);
  digitalWrite(READ_LED_PIN, LOW);

  rdm6300.begin(RDM6300_RX_PIN);

  Serial.println("\nAvvicina il tag all'antenna");
}

void loop()
{

  if (rdm6300.update())
  {
    Serial.println(rdm6300.get_tag_id(), DEC);
    int x=0;
    digitalWrite(READ_LED_PIN, rdm6300.is_tag_near());
    x=(rdm6300.get_tag_id());
    Serial.println(x);
  }
 

  delay(50);
}


in realtà avvicinando il tag appare scritto:
Codice: Seleziona tutto
Avvicina il tag all'antenna
515023
0


Grazie.
Avatar utente
Foto Utentemagomelo
5 4
 
Messaggi: 47
Iscritto il: 18 giu 2010, 8:25

0
voti

[2] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentelucaking » 16 dic 2019, 9:24

Premetto che non ho mai usato l' ESP32 ne tantomeno il lettore rfid in questione,
due domande:
- l' int nell' ESP32 è definito come uint_32_t?
- non è che la funzione rdm6300.get_tag_id() ritorni un array o piu probabilmente una stringa?
In attesa di utenti più esperti di me, puoi linkare il codice della libreria che sono curioso?
Avatar utente
Foto Utentelucaking
1.208 3 5 8
Expert
Expert
 
Messaggi: 1079
Iscritto il: 29 mag 2015, 14:28

0
voti

[3] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentemagomelo » 16 dic 2019, 20:36

8-[ non ho capito molto quello che mi hai scritto, in c++ per dichiarare una variabile di numeri interi ho sempre utilizzato la formula "int variabile" comunque sostituendo int con uint_32_t le cose peggiorano perche in fase di verifica appare l'errore 'uint_32_t' was not declared in this scope
la libreria l'ho presa qui --> https://github.com/arduino12/rdm6300/bl ... /rdm6300.h
Avatar utente
Foto Utentemagomelo
5 4
 
Messaggi: 47
Iscritto il: 18 giu 2010, 8:25

0
voti

[4] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentewruggeri » 16 dic 2019, 20:47

Da quello che scrivi, Foto Utentemagomelo, deduco due punti fondamentali:

1 - Non hai la minima idea di come funzioni un compilatore
2 - Non hai la minima idea di cosa sia un linguaggio di programmazione

Partendo da questi presupposti, sono portato a credere che tu abbia probabilmente solo una molto vaga infarinatura mnemonico-copiativa del C++, la quale è assolutamente insufficiente per la scrittura di qualsiasi codice sia più complesso del celebre "Hello world". Stante quanto finora dichiarato, ti invito caldamente a procurarti un bel testo introduttivo alla programmazione e leggerlo con in mente lo scopo di comprenderne ogni singolo verbo, aggettivo, sostantivo, avverbio e persino le congiunzioni e se presenti le interiezioni. Quando avrai fatto questo, potrai prendere in mano un testo introduttivo al C++ e studiarlo animato dallo stesso spirito. Infine, potrai procurarti datasheet e programming manuals relativi alla board di tuo interesse e provare a riscrivere il programma; solo a questo punto, in caso di fallimento, tornerai qui a porre la domanda, finalmente forte delle competenze necessarie a comprendere la risposta.

Puoi trovare utili e a mio avviso interessanti riferimenti bibliografici nell'articolo qui leggibile, del quale collateralmente ti notifico di essere l'autore.
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.514 2 8 13
Master EY
Master EY
 
Messaggi: 1134
Iscritto il: 25 nov 2016, 18:46

0
voti

[5] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentemagomelo » 16 dic 2019, 21:21

:ok: seguiro' il tuo consiglio...
grazie!
Avatar utente
Foto Utentemagomelo
5 4
 
Messaggi: 47
Iscritto il: 18 giu 2010, 8:25

0
voti

[6] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentelucaking » 17 dic 2019, 10:23

magomelo ha scritto: non ho capito molto quello che mi hai scritto, ...comunque sostituendo int con uint_32_t le cose peggiorano perche in fase di verifica appare l'errore 'uint_32_t' was not declared in this scope.

Non è questo che intendevo, comunque di norma è definito come
Codice: Seleziona tutto
uint32_t
(un solo underscore).

Per fortuna o purtroppo per noi ignoranti :oops:, in c/cpp nulla è per caso, è importante capire cosa prende una funzione come parametri e cosa ritorna.
A malincuore mi tocca dare ragione al sempre delicato Foto Utentewruggeri :D ma è anche vero però che la voglia di studiare viene anche spulciando tra il codice scritto da chi lo sa fare meglio che noi.
Quindi da quel che credo di aver capito della libreria
Codice: Seleziona tutto
uint32_t get_tag_id(void);

Codice: Seleziona tutto
uint32_t Rdm6300::get_tag_id(void)
{
   uint32_t tag_id = _tag_id;
   _tag_id = 0;
   return tag_id;
}

get_tag_id() non ritorna ne un array ne una stringa ma appunto un int a 32 bit. (tra l' altro mi piacerebbe averne conferma)
Ora secondo me per prima cosa quando scrivi
Codice: Seleziona tutto
int x = .......
bisogna sapere nell' architettura per cui stai compilando come è definito il tipo int, ad esempio nell' arduino uno è un signed da 16 bit, mentre in arduino due è 32 bit.
Hai controllato che il compilatore non dia dei warning di overflow o roba simile?

Comunque mi spiace, come avrai capito le mie competenze sono insufficienti e dovremo aspettare qualche voce più autorevole in materia.
Speriamo perché sono curioso anch' io. O_/
Avatar utente
Foto Utentelucaking
1.208 3 5 8
Expert
Expert
 
Messaggi: 1079
Iscritto il: 29 mag 2015, 14:28

0
voti

[7] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentewruggeri » 17 dic 2019, 10:51

Per spulciare il codice, Foto Utentelucaking, bisogna prima essere in grado di capirlo :roll:
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.514 2 8 13
Master EY
Master EY
 
Messaggi: 1134
Iscritto il: 25 nov 2016, 18:46

0
voti

[8] Re: ESP32 stampare valore variabile

Messaggioda Foto Utentexyz » 17 dic 2019, 11:10

Prima di tutto ESP32 è una architettura a 32 bit, tutti gli interi segnati e non segnati sono a 32 bit.

Non conosco il lettore RDM6300 ma comunque il programma è sicuramente sbagliato viene fatta una doppia lettura senza una richiesta valida della seconda lettura.

Il programma denota una scarsa conoscenza del linguaggio C/C++ e del RDM6300, credo che sia un tentativo di modifica di un esempio presente nella librerie in modo errato.

Soluzione, imparare a programmare nel linguaggio scelto nel scrivere il programma, conoscere architettura ESP32 altrimenti è inutile programmalo e conoscere anche come funziona il lettore RDM6300.
Avatar utente
Foto Utentexyz
6.350 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1679
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti