spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Arduino

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 22-06-2015, 16.26.56
c3n2o c3n2o non è collegato
Nuovo robottaro
 
Data registrazione: 01-05-2015
Residenza: Genova
Messaggi: 8
Potenza reputazione: 0
c3n2o E' per ora ancora un mistero
Predefinito Problema con porta seriale o con PC?

Buongiorno,
mi chiamo Vincenzo ed è la prima volta che scrivo.. ho cercato se c'era nel forum una sezione di presentazione, ma non l'ho trovata.. quindi mi presento qua ;-D

Ho scritto (per meglio dire copiato) del codice che legge dalla porta seriale dell'input e lo riporta sul display. Il problema è che se io scrivo "12345678" sul display appare "1357".
Ho controllato il baud rate della porta se era configurato correttamente e direi di sì.

Secondo voi cosa può essere? Io ho pensato che dipende o dal mio PC o da Arduino.. cmq dalla porta seriale.. come posso provare a verificare? abbasso il baudrate?
PS se è la sezione sbagliata chiedo scusa..

Sotto riporto il codice:

Codice:

Codice:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);


void setup() {
  lcd.begin(20,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Digita il testo da");
  lcd.setCursor(0,1);
  lcd.print("terminale..");
  Serial.begin(9600);
  Serial.println("Digita il testo (max32 char)");
}

void loop() {
  char ch;
  int r=0, c=0;
  if(Serial.available()){
   delay(50);
   lcd.clear();
   while (Serial.available()>0){
     if(r!=2){
       lcd.setCursor(c++,r);
       lcd.write(Serial.read());
       if (c==20){
         c=0;
         r++;
       }else {
           Serial.read();
         }
     }
   }
  }
}

Ultima modifica di c3n2o : 29-06-2015 alle ore 09.36.14
Rispondi citando
  #2  
Vecchio 22-06-2015, 19.08.33
pm65 pm65 non è collegato
Nuovo robottaro
 
Data registrazione: 11-04-2014
Residenza: pavia
Messaggi: 10
Potenza reputazione: 0
pm65 E' per ora ancora un mistero
Predefinito Delay nel ciclo

Ciao,
Secondo me c'è troppo codice nel ciclo di lettura dalla seriale, a partire da delay(50), e quindi ticperdi qualche carattere. Prova semplicemente a copiare i caratteri ricevuti in una stringa e poi puoi manipolarla dopo.
Rispondi citando
  #3  
Vecchio 22-06-2015, 19.44.02
L'avatar di Caronte
Caronte Caronte non è collegato
Administrator
 
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 333
Caronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da c3n2o Visualizza messaggio
Buongiorno,
mi chiamo Vincenzo ed è la prima volta che scrivo.. ho cercato se c'era nel forum una sezione di presentazione, ma non l'ho trovata.. quindi mi presento qua ;-D

Ho scritto (per meglio dire copiato) del codice che legge dalla porta seriale dell'input e lo riporta sul display.
E la verità è il miglior biglietto da visita! Finalmente qualcuno (su qualche milionata) che ammette di aver copiato un codice!


Non è assolutamente il baudrate. Se fosse lui verrebbero mostrati caratteri incoerenti sul display (asterischi, lettere, disegnini, ecc.) e invece una coerenza c'è eccome ed è leggibile.

Comunque l'ho fatto girare e va bene ma non ho un lcd a disposizione per provarlo. Hai notato che se invii 12345678 ti da come output 1357? Non ti sembra che da qualche parte nel codice 'dice' di saltare di 2?

Ora sono fuso come un cammello ma prova a cipollare un po' con i valori del ciclo di invio nel loop. Inizia a vedere cosa succede se al posto di if(r!=2) se metti if(r!=1).....

magari non c'entra niente ma se fossi in te insisterei nel codice

Ultima modifica di Caronte : 22-06-2015 alle ore 19.46.17
Rispondi citando
  #4  
Vecchio 23-06-2015, 13.48.05
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 304
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Il programma prevede un display 20 caratteri x 2 righe, infatti imposta per ogni carattere la posizione del cursore (inutile il display avanza di suo) e raggiunto in carattere 20 incrementa r (la riga) al secondo incremento legge la seriale senza buttare nulla a video.

il tuo display è 20x2 o il più classico 16x2 o un 16x4?

prova a sostituire la loop
Codice:
void loop() {
  if(Serial.available()){
   lcd.clear();
   while (Serial.available()>0){
       lcd.write(Serial.read());
     }
   }
  }
}
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
  #5  
Vecchio 27-06-2015, 17.55.53
c3n2o c3n2o non è collegato
Nuovo robottaro
 
Data registrazione: 01-05-2015
Residenza: Genova
Messaggi: 8
Potenza reputazione: 0
c3n2o E' per ora ancora un mistero
Predefinito Non so come si fa..

Citazione:
Orginalmente inviato da pm65 Visualizza messaggio
Ciao,
Secondo me c'è troppo codice nel ciclo di lettura dalla seriale, a partire da delay(50), e quindi ticperdi qualche carattere. Prova semplicemente a copiare i caratteri ricevuti in una stringa e poi puoi manipolarla dopo.

Ci avevo pensato anch'io.. ma non so come si possa fare.. Se non ho capito male è un array quello che devo leggere e scriverlo su un altro array?
Rispondi citando
  #6  
Vecchio 27-06-2015, 20.37.39
L'avatar di greybear
greybear greybear non è collegato
Moderator
 
Data registrazione: 05-05-2003
Residenza: Roma
Età : 61
Messaggi: 1,345
Potenza reputazione: 185
greybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua fama
Invia un messaggio via Yahoo a greybear
Predefinito

A occhio i caratteri pare se li mangia l'istruzione "Serial.read();" dopo l'istruzione "else". Fai prove, tenta delle varianti ragionate.

Ultima modifica di greybear : 27-06-2015 alle ore 20.42.57
Rispondi citando
  #7  
Vecchio 27-06-2015, 20.40.59
L'avatar di greybear
greybear greybear non è collegato
Moderator
 
Data registrazione: 05-05-2003
Residenza: Roma
Età : 61
Messaggi: 1,345
Potenza reputazione: 185
greybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua famagreybear La sua reputazione è oltre la sua fama
Invia un messaggio via Yahoo a greybear
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
il tuo display è 20x2 o il più classico 16x2 o un 16x4?
La seconda che hai detto
Rispondi citando
  #8  
Vecchio 29-06-2015, 09.39.02
c3n2o c3n2o non è collegato
Nuovo robottaro
 
Data registrazione: 01-05-2015
Residenza: Genova
Messaggi: 8
Potenza reputazione: 0
c3n2o E' per ora ancora un mistero
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
il tuo display è 20x2 o il più classico 16x2 o un 16x4?
Il mio display è recuperato da una stampante.. è un 20x2.. ho anche dei diplay più grandi ma devo cercare il datasheet in rete per poi fare le prove
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Controllare porta seriale e motori s_e_b_a Motori e azionamenti 0 03-03-2012 21.29.46
Aiutino per la porta seriale in RX. WireLeo E. Analogica 2 26-06-2011 12.50.51
Porta seriale e programmatore di pic chiccow Elettronica 14 04-12-2006 22.12.30
modifica porta seriale volo86 Elettronica 3 24-12-2005 14.22.55
Robot controllato tramite porta seriale dark Progettazione 13 27-04-2004 07.23.39


Tutti gli orari sono GMT. Adesso sono le: 18.37.47.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB