
Problemi con USB.Init()
Moderatori: MassimoB,
WALTERmwp,
xyz
29 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
Pensavo di risolvere e ho provato a sostituire il display a 7 segmenti con un lcd 1602 ma anche in questo caso il codice che inizializza la porta USB mi crea un problema analogo che consiste nel non visualizzare nulla sul display lcd. O meglio, se scrivo esplicitamente una stringa, lcd.print("Hello, me"), lo fa senza problemi, ma se quella stringa la metto in una variabile, non lo fa. Per garantirmi la correttezza del codice, faccio stampare la stessa cosa sul Serial Monitor, sul quale appare tutto correttamente.
0
voti
Riporta la dichiarazione e l'inizializzazione della variabile, oltre alla chiamata della funzione lcd.print che dovrebbe generare l'output utilizzando la variabile stessa.
Saluti
Saluti
W - U.H.F.
-
WALTERmwp
27,6k 4 8 13 - G.Master EY
- Messaggi: 8303
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
Riporto la parte di codice che mi crea il problema.
Succede che se dal cellulare tramite bluetooth invio le tre parole in sequenza ( uno, due,tre)
uno --> sull'LCD "f"
due --> sull'LCD "ff"
tre --> rimane "ff"
sul Serial Monitor adesso appare la sequenza
ÿÿÿuÿÿnÿÿoÿÿ
ÿÿÿÿÿÿdÿÿÿÿÿÿuÿÿeÿÿ
ÿÿÿÿÿÿtÿÿÿÿÿÿrÿÿÿÿÿÿeÿÿ
Cioè, le parole vengono anche inviate ma appaiono anche quel carattere "ÿ" ripetuto che non capisco da dove arrivi
Succede che se dal cellulare tramite bluetooth invio le tre parole in sequenza ( uno, due,tre)
uno --> sull'LCD "f"
due --> sull'LCD "ff"
tre --> rimane "ff"
sul Serial Monitor adesso appare la sequenza
ÿÿÿuÿÿnÿÿoÿÿ
ÿÿÿÿÿÿdÿÿÿÿÿÿuÿÿeÿÿ
ÿÿÿÿÿÿtÿÿÿÿÿÿrÿÿÿÿÿÿeÿÿ
Cioè, le parole vengono anche inviate ma appaiono anche quel carattere "ÿ" ripetuto che non capisco da dove arrivi
- Codice: Seleziona tutto
#include <LiquidCrystal.h>
#include <USB.h>
#include <usbh_midi.h>
LiquidCrystal lcd(12, 11, 8, 7, 6, 5);
USB USB;
USBH_MIDI Midi(&USB);
String titolo;
void setup()
{
Serial.begin(115200); //start serial
lcd.begin(16, 2);
if (USB.Init() == -1) // QUESTA RIGA E LA SUCCESSIVA
{while(1);} // CAUSANO IL PROBLEMA
} // end void setup
void loop() {
if( Serial.available()) { //check for serial
char ch = Serial.read(); //serial message
if (ch == '<') { //song name starts after this
titolo = ""; //empty the variable
for (int i=0; i<99; i++) { //counter to make sure you don't get stuck in an infinite loop
char ch2 = Serial.read(); //read the serial, and store to ch2
if (ch2 == '>') //last character of the transmission, so break
break;
else //otherwise, add the character to the song name
titolo += ch2;
}
//lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print(titolo);
Serial.println(titolo);
}
}
}
0
voti
Come detto in precedenza e spero di non ripeterlo, dal codice che hai allagato se il dispositivo USB per qualche motivo non viene rilevato il micro controllore viene bloccato in un loop vuoto e da li non si sposta più.
I problemi sui caratteri strani ricevuti dalla seriale di solito dipende da una non corretta impostazione tra la seriale che trasmette e quella che riceve.
I problemi sui caratteri strani ricevuti dalla seriale di solito dipende da una non corretta impostazione tra la seriale che trasmette e quella che riceve.
0
voti
Visto che io sono tonto e tu gentilissimo con le parole, potresti dirmi dove hai espresso lo stesso concetto? Grazie
Edit: qui non si tratta che il programma vada in loop se non trova device perché i device li trova.
Edit: qui non si tratta che il programma vada in loop se non trova device perché i device li trova.
0
voti
jova ha scritto:Visto che io sono tonto e tu gentilissimo con le parole, potresti dirmi dove hai espresso lo stesso concetto?
Alla risposta [2] di questo thread. Nell'ultimo codice esiste lo stesso codice in [1] con l'aggiunto del commento:
- Codice: Seleziona tutto
...
if (USB.Init() == -1) // QUESTA RIGA E LA SUCCESSIVA
{while(1);} // CAUSANO IL PROBLEMA
...
Se il device USB viene inizializzato correttamente quel commento in teoria non ci dovrebbe essere.
0
voti
Mi sarò spiegato male nel primo post, però al 3° ti avevo risposto.
Dalla tua risposta sembra che tu mi dica...guarda che se non trova il device, si inchioda in quel loop e cosi facendo non va ad attivare i pin che dici. Invece il device lo trova e fa tutto quello che dovrebbe fare tranne attivare quei pin. Ma adesso ho abbandonato l'idea del displa a 7 segmenti e vorrei risolvere con un lcd ma lo stesso loop, da cui esce, è il vincolo che impedisce al display di visualizzare bene qualcosa.
Semplicemente non ci stiamo intendendo, magari un po' irritando, quello sì ma non serve a risolvere
Dalla tua risposta sembra che tu mi dica...guarda che se non trova il device, si inchioda in quel loop e cosi facendo non va ad attivare i pin che dici. Invece il device lo trova e fa tutto quello che dovrebbe fare tranne attivare quei pin. Ma adesso ho abbandonato l'idea del displa a 7 segmenti e vorrei risolvere con un lcd ma lo stesso loop, da cui esce, è il vincolo che impedisce al display di visualizzare bene qualcosa.
Semplicemente non ci stiamo intendendo, magari un po' irritando, quello sì ma non serve a risolvere

1
voti
Ok ho capito che USB funziona
Francamente consiglio di levare il commento se alleghi di nuovo il codice.
Il codice del LCD pare coretto.
Consiglio di verificare se coincidono bene i parametri di comunicazione tra i 2 dispositivi seriali.

Il codice del LCD pare coretto.
Consiglio di verificare se coincidono bene i parametri di comunicazione tra i 2 dispositivi seriali.
0
voti
Arduino e l'HC05 dovrebbero condividere lo stesso protocollo, con un baud rate di 115200, no parità e 1 bit di stop. Dico dovrebbero, perché i messaggi MIDI viaggiano anch'essi sulla seriale e vengono riconosciuti 

29 messaggi
• Pagina 2 di 3 • 1, 2, 3
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti