Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

lcd arduino non funziona

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[11] Re: lcd arduino non funziona

Messaggioda Foto Utentexyz » 10 feb 2017, 23:44

WALTERmwp ha scritto:
Codice: Seleziona tutto
LiquidCrystal_I2C lcd(0x27,16,2);
a cosa corrisponde ?

Il 27 è indirizzo I2C di default dell'adattatore, può essere cambiato ma si devono saldare 3 ponticelli SMD (da 20 a 27), non credo che sia stato fatto.I 2 numeri successivi sono 16 colonne 2 righe non compromettono il funzionamento hardware anche se sono sbagliati.

Prova con uno scanner I2C:

http://playground.arduino.cc/Main/I2cScanner

se non trova nessun dispositivo con indirizzo 0x1B (27 in decimale) hai problemi di collegamento o l'adattatore rotto o altro.
Avatar utente
Foto Utentexyz
6.665 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1720
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[12] Re: lcd arduino non funziona

Messaggioda Foto UtenteWALTERmwp » 11 feb 2017, 0:59

[FT]
xyz ha scritto:(...) se non trova nessun dispositivo con indirizzo 0x1B (27 in decimale) (...)

pensavo 0x27 fosse già espressione esadecimale.
[/FT]

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
25,7k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 7662
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[13] Re: lcd arduino non funziona

Messaggioda Foto Utentexyz » 11 feb 2017, 1:22

WALTERmwp ha scritto:[FT]
pensavo 0x27 fosse già espressione esadecimale.

Si è vero ho sbagliato a scrivere la prima volta #-o e ho convertito qualcosa da non convertire sorry.

Confermo indirizzo di defaulr è 0x27 (39 in decimale).
Avatar utente
Foto Utentexyz
6.665 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1720
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[14] Re: lcd arduino non funziona

Messaggioda Foto Utentesolideo » 11 feb 2017, 6:41

Anchio ho avuto lo stesso inghippo perché l'adattatore I2c me lo sono autocostruito e il problema era la corrispondenza dei pin del display con quegli dell'adattatore.
Il tuo sketch riporta
Codice: Seleziona tutto
LiquidCrystal_I2C lcd(0x27,16,2);
io per ovviare al problema ho scritto
Codice: Seleziona tutto
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x38, 4, 5, 6, 0, 1, 2, 3, 7, POSITIVE);
ti spiego:
il primo valore è l'indirizzo del modulo I2c nel mio caso è 0x38 te 0x27, comunque per essere sicuro dell'indirizzo puoi caricare questo sketch aprire il monitor Seriale e ti restituisce l'indirizzo I2c:
Codice: Seleziona tutto
// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }   
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
    delay(5000);
}

il resto dei numeri corrispondono hai pin dell'integrato , penso un pcf8574, con i rispettivi pin del display quindi il pin enable del display che è il 6 deve corrispondere al P4 dell'integrato , che se è il pcf8574 e il piedino 9, e cosi via l'ultimo valore serve per la retroilluminazione che di solito viene comandata sul pin positivo:
pcf8574.png
questo è il mio cablaggio
pcf8574.png (12.37 KiB) Osservato 3153 volte

Poi nel "Setup" metti :
Codice: Seleziona tutto
lcd.begin(16x2);  //sedici caratteri 2 righe

Quindi se questo fosse anche il tuo problema ti dovresti mettere con il tester e controllare come sono connessi pin del display con quegli dell'integrato.
Avatar utente
Foto Utentesolideo
100 1 6
New entry
New entry
 
Messaggi: 82
Iscritto il: 11 lug 2014, 6:20

0
voti

[15] Re: lcd arduino non funziona

Messaggioda Foto UtenteLeonardissimo21 » 11 feb 2017, 15:29

ok grazie, sono riuscito a risolvere il problema, invece di:
Codice: Seleziona tutto
LiquidCrystal_I2C lcd(0x27,16,2);

dovevo inserire:
Codice: Seleziona tutto
LiquidCrystal_I2C lcd(0x3F,16,2);

grazie mille dell'aiuto :ok:
Avatar utente
Foto UtenteLeonardissimo21
5 1 3
New entry
New entry
 
Messaggi: 69
Iscritto il: 21 giu 2016, 10:11

Precedente

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti