Go Down

Topic: Strani simboli su display lcd (Read 1 time) previous topic - next topic

aquilacieca

Riesci a descrivermi, come si fa con un bambino, esattamente come fai questi test?
buongiorno, provo a rispondere a tutte le tue domande:
Usi lo stesso dispositivo o fai i test su altri dispositivi?
uso lo stesso dispositivo, non ne ho altri al momento.

Lo stacchi tutte le volte dall'alimentazione? e dal cavo usb con cui lo programmi? e da tutti i dispositivi collegati?
l'ho staccato dall'alimentazione  e l'ho staccato dal cavo usb. la prima volta non ho staccato tutti gli altri dispositivi collegati (scheda relè  e dht); nelle prove successive li ho staccati.

Poi, quando dici "inchiodato" cosa intendi esattamente? perchè io mi immagino di vedere tondini di ferro a testa piatta uscire dagli angoli del display ;)
eheh, per inchiodato ti allego la foto. il display è rimasto fisso all'ultimo istante prima di caricare il nuovo codice.


Ma dove sei andato a prendere la libreria DS3231?
a me qualla del gestore librerie mi da errore:
questa è la libreria: http://www.rinkydinkelectronics.com/library.php?id=73

con gli esempi base il display va? rispondi solo SI'/NO.
Si va

e cita QUALE esempio hai usato
ho testato uno degli esempi della libreria, per l'esattezza questo: "HelloWord_i2c"

grazie a tutti per i suggerimenti, stasera cerco di sistemare e affrontare un problema alla volta.

maubarzi

Quindi, tornando al mio codice di test, staccando tutto e riattaccando (quindi partendo da un avvio pulito senza strascichi di vario tipo), all'avvio, nell'esecuzione del setup non stampa correttamente manco una volta, manco per sbaglio i valori di esempio che ho suggerito?

cioè un setup fatto così:

Code: [Select]

void setup() {
  lcd.begin(20,4);
  delay(1000);
  lcd.setCursor(0, 0);
  lcd.print("01234567890123456789");
  lcd.setCursor(0, 1);
  lcd.print("ABCDEFGHIJKLMNOPQRST");
  lcd.setCursor(0, 2);
  lcd.print("abcdefghijklmnopqrst");
  lcd.setCursor(0, 3);
  lcd.print("01234567890123456789");
  delay(2000);
}


Ancora non funziona?

Prova anche a ripulire un po' questa parte perchè hai incorporato di tutto e di più e anche un po' a caso probabilmente.

Code: [Select]

  #include <DS3231.h>
  #include <LiquidCrystal_I2C.h>
  #include <Wire.h>
  #include <Time.h>
  #include <TimeLib.h>
  #include <DHT.h>
  #include "DHT.h"
...
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

aquilacieca

cioè un setup fatto così:
Ancora non funziona?
no, ieri sera non ha funzionato, bloccandosi all'immagine che ho allegato al precedente post.
ricaricando poi il codice che girava da un mese non scrive piu nulla sul display, solo simboli strani.
stasera stacco tutto, carico solo il tuo codice e vediamo cosa succede, poi un pezzo alla volta ricollego il resto, ripulendo il codice.

grazie ancora

maubarzi

Quando fai queste prove le fai tenendo tutto inscatolato oppure porti fuori tutto e colleghi passando ad es. per una breadboard?

Perchè se ogni volta che tocchi qualcosa fisicamente, hai effetti diversi, il problema è sicuramente elettrico, magari quando tocchi sposti qualche cavo che capta disturbi diversi.

Se riesci, prova su banco, cioè fuori dalla scatola per evitare o quantomeno ridurre al minimo i problemi di disturbi.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

aquilacieca

Quando fai queste prove le fai tenendo tutto inscatolato oppure porti fuori tutto e colleghi passando ad es. per
le prove le ho fatte lasciando arduino nella scatola del progetto in cui si trova. stasera lo tiro fuori e tramite breadboard faccio i test uno ad uno. grazie ancora.

quello che non capisco è perché dai primi di gennaio (inizio del progetto) fino a 10 gg fa è filato tutto liscio e poi da un giorno all'altro sono iniziati i disturbi, non ho aggiunto nulla, solo implementato il codice.


maubarzi

Secondo me hai due problemi accavallati, lo dico a intuito, uno software e uno hardware.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

aquilacieca

software e uno hardware.
Per il software cerco di risolvere come mi avete suggerito.
Per l'hardware i problemi credi siano le interferenze? Cavi inadatti? O cosa?

maubarzi

si, qualcosa del genere, però se affronti un problema alla volta poi si semplifica tutto.
Io inizierei con il sistemare il software in modo che funzioni correttamente sul banco e poi se non mantiene il comportamento atteso dopo averlo inscatolato si valuta anche la parte hardware ma con un po' più di certezze sulle spalle.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

aquilacieca

si, qualcosa del genere
Grazie mille ancora.... Stasera smonto e inizio a pulire e testare il software....

Datman

Non puoi cominciare riportando il software a come era 10 giorni fa?
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

aquilacieca

Non puoi cominciare riportando il software a come era 10 giorni fa?
L'ho fatto ieri, le sere precedenti e anche 10 giorni fa quando ha iniziato a dare i valori strani. L'unico codice che ho visualizzato correttamente è stato HelloWord_i2c... Tutti gli altri codici mi davano valori strani

aquilacieca

#41
Mar 06, 2019, 10:40 pm Last Edit: Mar 06, 2019, 10:45 pm by aquilacieca
eccomi,
ho testato il codice di maubarzi e funziona, vedi foto. funziona anche l'esempio helloword, vedi foto.
ho poi testato l'rtc da solo e nel seriale ho dei simboli strani.
che sia tutta colpa sua?  :)
sotto il codice usato:

Code: [Select]
// DS3231_Temperature
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// A quick demo of how to use my DS3231-library to
// quickly send the current temperature over a serial link
//
// To use the hardware I2C (TWI) interface of the Arduino you must connect
// the pins as follows:
//
// Arduino Uno/2009:
// ----------------------
// DS3231:  SDA pin   -> Arduino Analog 4 or the dedicated SDA pin
//          SCL pin   -> Arduino Analog 5 or the dedicated SCL pin
//
// Arduino Leonardo:
// ----------------------
// DS3231:  SDA pin   -> Arduino Digital 2 or the dedicated SDA pin
//          SCL pin   -> Arduino Digital 3 or the dedicated SCL pin
//
// Arduino Mega:
// ----------------------
// DS3231:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA pin
//          SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL pin
//
// Arduino Due:
// ----------------------
// DS3231:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
//          SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
//
// The internal pull-up resistors will be activated when using the
// hardware I2C interfaces.
//
// You can connect the DS3231 to any available pin but if you use any
// other than what is described above the library will fall back to
// a software-based, TWI-like protocol which will require exclusive access
// to the pins used, and you will also have to use appropriate, external
// pull-up resistors on the data and clock signals.
//

#include <DS3231.h>

// Init the DS3231 using the hardware interface
DS3231  rtc(SDA, SCL);

void setup()
{
  // Setup Serial connection
  Serial.begin(115200);
  // Uncomment the next line if you are using an Arduino Leonardo
  //while (!Serial) {}

  // Initialize the rtc object
  rtc.begin();
}

void loop()
{
  // Send current temperature
  Serial.print("Temperature: ");
  Serial.print(rtc.getTemp());
  Serial.println(" C");
  delay (1000);
}

aquilacieca

eccomi,

come non detto, provando l'esempio di seguito l'rtc nel seriale riporta correttamente.



Code: [Select]

// Arduino DS3232RTC Library
// https://github.com/JChristensen/DS3232RTC
//
// Example sketch illustrating Time library with Real Time Clock.
// This example is identical to the example provided with the Time Library,
// only the #include statement has been changed to include the DS3232RTC library.

#include <DS3232RTC.h>      // https://github.com/JChristensen/DS3232RTC

void setup()
{
    Serial.begin(9600);
    setSyncProvider(RTC.get);   // the function to get the time from the RTC
    if(timeStatus() != timeSet)
        Serial.println("Unable to sync with the RTC");
    else
        Serial.println("RTC has set the system time");
}

void loop()
{
    digitalClockDisplay();
    delay(1000);
}

void digitalClockDisplay()
{
    // digital clock display of the time
    Serial.print(hour());
    printDigits(minute());
    printDigits(second());
    Serial.print(' ');
    Serial.print(day());
    Serial.print(' ');
    Serial.print(month());
    Serial.print(' ');
    Serial.print(year());
    Serial.println();
}

void printDigits(int digits)
{
    // utility function for digital clock display: prints preceding colon and leading 0
    Serial.print(':');
    if(digits < 10)
        Serial.print('0');
    Serial.print(digits);
}


maubarzi

forse il problema sul seriale deriva da una diversa velocità impostata.
Ho trovato questo
Serial.begin(115200);
Se le velocità impostate non sono corrette ottieni i caratteri strani che hai riportato.

Ora, il display funziona, l'rtc funziona
puoi provare ad inserire un pezzo alla volta tutto quello che ti serve in un singolo sketch testando il risultato prima di passare al pezzo successivo.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

aquilacieca

Ora, il display funziona, l'rtc funziona

sto inserendo un pezzo alla volta, seguono aggiornamenti.
grazie ancora

Go Up