.. note::

    Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

    **Perché unirti a noi?**

    - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team.
    - **Impara e condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze.
    - **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.
    - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
    - **Promozioni festive e concorsi**: Partecipa a concorsi e promozioni durante le festività.

    👉 Sei pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!

.. _1.1.7_py:

1.1.7 LCD1602 I2C
======================

Introduzione
------------------

LCD1602 è un display a cristalli liquidi di tipo carattere, che può visualizzare 32
(16*2) caratteri contemporaneamente.

Componenti Necessari
------------------------------

In questo progetto, abbiamo bisogno dei seguenti componenti. 

.. image:: ../img/list_i2c_lcd.png

È sicuramente comodo acquistare un kit completo, ecco il link: 

.. list-table::
    :widths: 20 20 20
    :header-rows: 1

    *   - Nome	
        - ARTICOLI IN QUESTO KIT
        - LINK
    *   - Kit Raphael
        - 337
        - |link_Raphael_kit|

Puoi anche acquistarli separatamente dai link qui sotto.

.. list-table::
    :widths: 30 20
    :header-rows: 1

    *   - INTRODUZIONE AI COMPONENTI
        - LINK PER L'ACQUISTO

    *   - :ref:`cpn_gpio_extension_board`
        - |link_gpio_board_buy|
    *   - :ref:`cpn_breadboard`
        - |link_breadboard_buy|
    *   - :ref:`cpn_wires`
        - |link_wires_buy|
    *   - :ref:`cpn_i2c_lcd`
        - |link_i2clcd1602_buy|

Schema Elettrico
---------------------

============ ========
T-Board Name physical
SDA1         Pin 3
SCL1         Pin 5
============ ========

.. image:: ../img/schematic_i2c_lcd.png


Procedure Sperimentali
-----------------------------

**Passo 1:** Costruisci il circuito.

.. image:: ../img/image96.png


**Passo 2**: Configura l'I2C (vedi :ref:`i2c_config`. Se hai già configurato l'I2C, salta questo passaggio.)

**Passo 3:** Cambia directory.

.. raw:: html

   <run></run>

.. code-block::

    cd ~/raphael-kit/python/

**Passo 4:** Esegui.

.. raw:: html

   <run></run>

.. code-block::

    sudo python3 1.1.7_Lcd1602.py

Dopo l'esecuzione del codice, vedrai visualizzato su LCD il messaggio ``Greetings!, From SunFounder``.

.. note::

    * Se ricevi l'errore ``FileNotFoundError: [Errno 2] No such file or directory: '/dev/i2c-1'``, devi fare riferimento a :ref:`i2c_config` per abilitare l'I2C.
    * Se ricevi l'errore ``ModuleNotFoundError: No module named 'smbus2'``, esegui ``sudo pip3 install smbus2``.
    * Se compare l'errore ``OSError: [Errno 121] Remote I/O error``, significa che il modulo è cablato male o è danneggiato.
    * Se il codice e i collegamenti sono corretti, ma l'LCD non visualizza ancora contenuti, puoi regolare il potenziometro sul retro per aumentare il contrasto.

**Codice** 

.. note::

    Puoi **Modificare/Reimpostare/Copiare/Eseguire/Interrompere** il codice qui sotto. Ma prima devi accedere al percorso del codice come ``raphael-kit/python``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto.


.. raw:: html

    <run></run>

.. code-block:: python

    import LCD1602
    import time

    def setup():
        LCD1602.init(0x27, 1)   # init(indirizzo slave, retroilluminazione)
        LCD1602.write(0, 0, 'Greetings!')
        LCD1602.write(1, 1, 'From SunFounder')
        time.sleep(2)

    def destroy():
        LCD1602.clear()

    if __name__ == "__main__":
        try:
            setup()
        except KeyboardInterrupt:
            destroy()



**Spiegazione del Codice**

.. code-block:: python

    import LCD1602

Questo file è un file open source per controllare l'I2C LCD1602. Ci consente di utilizzare facilmente l'I2C LCD1602.

.. code-block:: python

    LCD1602.init(0x27, 1) 

La funzione inizializza il sistema I2C con il simbolo del dispositivo designato. Il primo parametro è l'indirizzo del dispositivo I2C, che può essere rilevato tramite il comando i2cdetect (vedi Appendice per i dettagli). L'indirizzo dell'I2C LCD1602 è generalmente 0x27.

.. code-block:: python

    LCD1602.write(0, 0, 'Greetings!')

All'interno di questa funzione, 'Greetings!' è il carattere che sarà stampato sulla riga 0+1, colonna 0+1 dell'LCD. 
Ora puoi vedere “Greetings!! From SunFounder” visualizzato su LCD.

Immagine del Fenomeno
--------------------------

.. image:: ../img/image97.jpeg

