AppDesigner - Arduino Introduction

Le pilotage des instruments, ou d'appareils électroniques est plus convivial lorsque l'utilisateur dispose d'une interface graphique. Il en est de même pour des cartes à microcontrôleurs.

Dans cet article nous allons créer une interface graphique pour piloter la carte Arduino Uno.


Pour un début, l'interface à créer est toute simple: elle n'a qu'un bouton. Lorsque l'utilisateur va cliquer sur ce bouton, la LED connectée sur la sortie D5 de la carte Arduino s'allume.

Matériel nécessaire:

 

    • Arduino Uno;
    • Une LED;
    • Une résistance de 330 Ohm 1/4 W;
    • AppDesigner

 

Schéma du montage:

 

montage tuto1 arduino appdesigner

 

Préparation de l'environnement:


Pour piloter Arduino avec Matlab, il faut d'abord installer l'Add On Arduino pour Matlab. Pour cela Il suffit de cliquer sur Add On, puis sur Get Hardware Support Package:

 

get hardware packge matlab

 

Puis suivre la procédure.
Pour plus de détails sur cette procédure d'installation, il faudra se reporter vers le lien du site officiel de Mathworks, proposé en bas de page.

Une fois terminé, pour vérifier que l'installation s'est bien passée, on crée un objet qu'on va nommer myUno par exemple:
Dans la fenêtre des commandes taper:

>> myUno = arduino();

Puis taper :

>> myUno

Pour avoir en réponse:

myUno =

arduino with properties:

                Port: 'COM3'
               Board: 'Uno'
       AvailablePins: {'D2-D13', 'A0-A5'}
AvailableDigitalPins: {'D2-D13', 'A0-A5'}
    AvailablePWMPins: {'D3', 'D5-D6', 'D9-D11'}
 AvailableAnalogPins: {'A0-A5'}
  AvailableI2CBusIDs: [0]
           Libraries: {'I2C', 'SPI', 'Servo'}

Show all properties

Ci-dessus, sont listées toutes les informations sur la carte, le port sur lequel elle est branchée, les entrées sorties, ainsi que les librairies installées.

Effacer l'objet myUno en tapant dans la fenêtre des commandes:

>> clear

 

Programmation avec AppDesigner:


Lancer AppDesigner, puis cliquer sur Blank App. Nommer le fichier puis, enrégistrer. Sur la face avant, placer l'objet Bouton; ensuite basculer vers le code source en cliquant sur code view:

Créer d'abord une variable partagée myUno; Cliquer sur l'onglet Properties et modifier pour avoir:


    properties (Access = private)
        myUno % Description
    end

 

Puis initialiser le programme et le montage:


        function startupFcn(app)
           app.myUno = arduino('com3','uno'); 
           configurePin(app.myUno,'D5','DigitalOutput');
        end

 

Dans le programme d'initialisation, l'object myUno, est créé avec la fonction prédéfinie arduino('com3','uno').
La carte Arduino est connectée sur le port série COM3; ensuite la broche d'entrée-sortie numérique D5 est configurée en tant que sortie numérique.

Callback du bouton:


Un clic sur le bouton entraîne l'écriture d'un niveau logique haut sur la sortie D5:


        function ButtonPushed(app, event)
             writeDigitalPin(app.myUno,'D5', 1);
        end

 

On exécute le programme une fois terminé. Lorsque l'utilisateur clique sur le bouton, la LED s'allume. Pour l'éteindre il suffit de changer la valeur envoyée de 1 en 0; dans le callback l'instruction d'écriture deviendra:

 

        writeDigitalPin(app.myUno,'D5', 0);

 

Allumer et éteindre une led avec un seul bouton:


Pour réaliser cette opération, quelques modifications seront apportées au programme précédent.
D'abord une seconde variable partagée ledState sera ajoutée au programme.


    properties (Access = private)
        myUno % Description
        ledState
    end

 

Puis dans la fonction d'initialisation, la variable ledState sera initialisée à 0.


        function startupFcn(app)
           app.myUno = arduino('com3','uno'); 
           configurePin(app.myUno,'D5','DigitalOutput');
           app.ledState = 0;
        end

 
Pour ce qui est du callback, chaque action sur le bouton va écrire le complément de la variable ledState sur la sortie numérique D5.

 


        function ButtonPushed(app, event)
             writeDigitalPin(app.myUno,'D5',~app.ledstate);
             app.ledstate = ~app.ledstate;
        end

 

 
Si on exécute ce programme, chaque clic sur le bouton pourra allumer ou éteindre la LED branchée sur la sortie numérique D5.

 

Varier la luminosité d'une LED:


Pour faire varie la luminosité de la LED, on va se servir d'un bouton rotatif. Dans un premier temps on supprime le bouton précédent, ainsi que son callback, puis on met en commentaire la variable partagée ledState puis son initialisation.
Le callback du bouton rotatif va lire (KnobValueChanging), la valeur du bouton puis le résultat est stocké dans la variable cValue. Le contenu de cette variable est directement envoyé vers la sortie numérique D5 grâce à l'instruction: writePWMVoltage(), qui transforme une valeur numérique en un signal modulé en largeur d'impulsions (PWM) sur la sortie D5. Cette sortie n'a pas été choisie pour cet exemple au hasard c'est l'une broche de la carte Arduino capable d'assurer cette fonction. Il en existent d'autres il faut alors en cas de besoins se référer à la documentation de la carte utilisée.

Ci-dessous l'ensemble des fonctions:


La variable partagée


    properties (Access = private)
        myUno % Description
        % ledState
    end

 

Initialisation:


        function startupFcn(app)
           app.myUno = arduino('com3','uno'); 
           configurePin(app.myUno,'D5','DigitalOutput');
           % app.ledState = 0;
        end

 

Le callback:

 

        function KnobValueChanging(app, event)
            cValue = event.Value;
            writePWMVoltage(app.myUno,'D5',cValue/50);
        end

 

Lorqu'on exécute le programme, tout mouvement sur le bouton entraîne une variation de luminosité de la LED. Le résumé se trouve dans la vidéo ci-après:

 

 

Conclusion:

Ces exemples simples nous ont permi d'envoyer des commandes d'écriture sur les ports Arduino à partir d'une interface graphique AppDesigner. Il serait aussi intéressant de lire l'état des ports ou d'un capteur connecté sur l'un d'entre eux.

JtBB

Le lien ci-dessous renvoie vers la procédure d'installation des Add On Arduino:

https://www.mathworks.com/help/simulink/supportpkg/arduino_ug/install-support-for-arduino-hardware.html

Autrement on pourra aussi se reporter sur cet autre lien:

https://www.mathworks.com/help/matlab/supportpkg/intro.html

 

Ce site web utilise des cookies

Certains d’entre eux sont essentiels pour son fonctionnement et d’autres nous aident à améliorer l’expérience utilisateur (cookies traceurs). Vous pouvez décider vous-même si vous autorisez ou non ces cookies. Merci de noter que, si vous les rejetez, certaines fonctionnalités du site pourront être défaillantes.