Go Down

Topic: [HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth (Read 82 times) previous topic - next topic

Testato

X lesto, per mettere un pin a 1 basta metterlo a vcc, la resistenza serve nel caso debba connettersi sia a 1, che a 0 alternativamente.

Per il discorso master ho postato un link dove si descrive la sostiyuzione del firmware, ma nel tuo caso conviene ricomprarlo.
In pratica tutti i moduli si possono riflashare per diventare hc05
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

lollotek

ho progammato un HC05 con i comandi :

Code: [Select]

AT+ROLE=0
AT+UART=57600,0,0

Quindi come uno slave che si collega a 57600bps e con un 1 bit stop e parity none.

Ora stavo inviando da arduino al cellulare, ma ho notato che l'informazione viene alterata: se voglio inviare il carattere 0xAA (170 decimale), nella controparte sull'app lo vedo come un FFFFFFFFFFFFFFAA (-86 decimale), come se al posto degli 00 ci siano FF, può essere una configurazione del bluetooth? io non ci trovo nulla, è una questione di party bit\stop ?

lollotek

ok, ho scoperto l'inghippo, c'è una divergenza tra tipi dato.
Per arduino il byte è da 0 a 255, mentre i java è da -128 a 127, quindi vedevo il dato sfalsato.
per vedere il dato corretto bisogna dichiararlo come int, oppure applicare l'operazione
Code: [Select]
valhex = (mybite & 0x00FF)
estraendo così correttamente gli ultimi 2 bit meno significativi.

lesto

Quote
estraendo così correttamente gli ultimi 2 bit meno significativi.

?? che significa?
la speigazione è che in java non esistono gli unsigned, e quando fai il cast automatico java prende il bit più a sinistra e lo usa come bit del segno.
facendo l'and bitwise con 0xff (o 0x00ff, stessa roba) invece non fai entrare in campo il cast, 0xFF, anche se vale "solo" 255 è un int, e l'and logico non necessita di cast, ma semplicemente si "accontenta" di fare l'and sui bit della variabile di tipo più piccolo.
Non ho provato, ma in teoria anche questo dovrebbe funzionare;
Code: [Select]
valhex = (mybite | 0)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lollotek


Quote
estraendo così correttamente gli ultimi 2 bit meno significativi.

?? che significa?
la speigazione è che in java non esistono gli unsigned, e quando fai il cast automatico java prende il bit più a sinistra e lo usa come bit del segno.
facendo l'and bitwise con 0xff (o 0x00ff, stessa roba) invece non fai entrare in campo il cast, 0xFF, anche se vale "solo" 255 è un int, e l'and logico non necessita di cast, ma semplicemente si "accontenta" di fare l'and sui bit della variabile di tipo più piccolo.
Non ho provato, ma in teoria anche questo dovrebbe funzionare;
Code: [Select]
valhex = (mybite | 0)

alla fine ho risolto usando int al posto di byte nel programma, grazie

Go Up