.. note::

    Bonjour, bienvenue dans la communauté SunFounder des passionnés de Raspberry Pi, Arduino & ESP32 sur Facebook ! Explorez en profondeur le Raspberry Pi, l'Arduino et l'ESP32 avec d'autres passionnés.

    **Pourquoi nous rejoindre ?**

    - **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
    - **Apprendre & Partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences.
    - **Avant-premières exclusives** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus exclusifs.
    - **Réductions spéciales** : Profitez de remises exclusives sur nos nouveaux produits.
    - **Promotions festives et cadeaux** : Participez à des concours et promotions spéciales.

    👉 Prêt à explorer et créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !

2. Suivre @CheerLights
=======================================

Il s'agit d'un projet romantique. Rejoignez la communauté |link_cheerlights| de LED changeant de couleur, qui permet aux LED du monde entier de changer de couleur simultanément.

Vous pouvez le placer dans un coin de votre bureau pour vous rappeler que vous n'êtes pas seul.

Vous pouvez tweeter à @cheerlights en incluant le nom d'une couleur dans le tweet. Cela changera la couleur des LED à travers le monde en fonction de ce que vous avez spécifié.

**Composants requis**

Dans ce projet, nous aurons besoin des composants suivants.

Il est certainement pratique d'acheter un kit complet, voici le lien :

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

    *   - Nom	
        - DANS CE KIT
        - LIEN
    *   - Kepler Kit	
        - 450+
        - |link_kepler_kit|

Vous pouvez également les acheter séparément via les liens ci-dessous.

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

    *   - SN
        - COMPOSANT	
        - QUANTITÉ
        - LIEN

    *   - 1
        - :ref:`cpn_pico_w`
        - 1
        - |link_picow_buy|
    *   - 2
        - Câble Micro USB
        - 1
        - 
    *   - 3
        - :ref:`cpn_breadboard`
        - 1
        - |link_breadboard_buy|
    *   - 4
        - :ref:`cpn_wire`
        - Plusieurs
        - |link_wires_buy|
    *   - 5
        - :ref:`cpn_ws2812`
        - 1
        - |link_ws2812_buy|
    *   - 6
        - :ref:`cpn_lipo_charger`
        - 1
        -  
    *   - 7
        - Batterie 18650
        - 1
        -  
    *   - 8
        - Support de batterie
        - 1
        -  

**Étapes**

#. Montez le circuit.

    Le module chargeur Li-po utilisé ici alimentera votre circuit, vous permettant de déconnecter le câble USB et d'emmener votre projet où bon vous semble !

    .. warning:: 
        
        Assurez-vous que votre module chargeur Li-po est connecté comme indiqué sur le schéma. Sinon, un court-circuit risque d'endommager votre batterie et votre circuit.

    .. image:: img/wiring/2.cheerlights_bb.png
        :width: 800



#. Accédez au dossier où vous avez téléchargé le `code package <https://github.com/sunfounder/kepler-kit/archive/refs/heads/main.zip>`_ et ouvrez le fichier ``2_cheer_light.py`` situé dans ``kepler-kit-main/iot``.

#. Pour exécuter le script, cliquez sur le bouton **Run current script** ou appuyez sur F5, vous verrez alors l'indication de connexion, l'IP et la couleur (0xff0000 est rouge) dans le Shell.

    .. note::

        Avant d'exécuter le code, assurez-vous d'avoir les scripts ``do_connect.py`` et ``secrets.py`` sur votre Pico W, sinon reportez-vous à :ref:`iot_access` pour les créer.

    .. image:: img/2_cheerlight1.png


#. Après le lancement du script, la bande RGB WS2812 affichera une couleur, et celle-ci pourra parfois changer.

#. Si vous souhaitez que ce script soit exécuté au démarrage, enregistrez-le sur le Raspberry Pi Pico W sous le nom ``main.py``, comme suit.

    * Arrêtez le script en cours et cliquez sur **File** -> **Save as**.

        .. image:: img/2_cheerlight2.png

    * Sélectionnez **Raspberry Pi Pico** dans la fenêtre pop-up qui apparaît.

        .. image:: img/2_cheerlight3.png

    * Définissez le nom du fichier sur ``main.py``. Un message apparaîtra si un fichier du même nom existe déjà sur votre Pico W.

        .. image:: img/2_cheerlight4.png
    
    * Vous pouvez maintenant débrancher le câble USB et utiliser le module chargeur Li-po pour alimenter le Raspberry Pi Pico W. Placez-le dans un coin et il fonctionnera automatiquement.


**Comment ça marche ?**

Le Raspberry Pi Pico W doit être connecté à Internet, comme décrit dans :ref:`iot_access`. Pour ce projet, il suffit de procéder comme suit :

.. code-block:: python

    from do_connect import *
    do_connect()

Configurez la bande RGB WS2812. Veuillez vous référer à :ref:`py_neopixel` pour plus de détails sur son utilisation.

.. code-block:: python

    import machine
    from ws2812 import WS2812
    ws = WS2812(machine.Pin(18), 8)

Ensuite, nous avons besoin d'un moyen pour obtenir la couleur de @CheerLights. Il existe un système en arrière-plan qui prend les changements de couleur de Twitter
et les publie au format JSON à l'URL : http://api.thingspeak.com/channels/1417/field/2/last.json.

Si vous ouvrez cette URL directement dans votre navigateur, vous verrez quelque chose comme ceci. Tout ce dont nous avons besoin, c'est des données de ``field2``, qui sont une chaîne de caractères codée en couleur hexadécimale.

.. code-block:: 

    {"created_at":"2022-08-16T06:12:44Z","entry_id":870488,"field2":"#ff00ff"}

Nous devons utiliser le module ``urequests`` pour obtenir ces données et le module ``json`` pour les convertir en dictionnaire Python.
Le code suivant récupère la dernière couleur @CheerLights à partir de l'URL et renvoie une valeur de couleur utilisable par le WS2812.

.. code-block:: python

    def get_colour():
        url = "http://api.thingspeak.com/channels/1417/field/2/last.json"
        try:
            r = urequests.get(url)
            if r.status_code > 199 and r.status_code < 300:
                cheerlights = json.loads(r.content.decode('utf-8'))
                print(cheerlights['field2'])
                colour = int('0x'+cheerlights['field2'][1:7])#Convert from String to Integer
                r.close()
                return colour
            else:
                return None
        except Exception as e:
            print(e)
            return None

Enfin, utilisez une boucle pour que le WS2812 fonctionne une fois par minute.

.. code-block:: python

    while True:
        colour = get_colour()
        if colour is not None:
            ws.write_all(colour)
        time.sleep(60)

