View on GitHub

Interface Homme Machine à bus I²C

Description des classes IHMSSI , LED et BP développée en C# sous .NETMF 4.3 pour les cartes Netduino et FEZ (PANDA, COBRA...)

Download this project as a .zip file Download this project as a tar.gz file

Sommaire

  1. LE MATERIEL
    1. L'IHM SSI
    2. Les cartes Netduino
    3. Les cartes FEZ
  2. LE LOGICIEL
    1. Contenu du répertoire proposé au téléchargement
    2. Le NuGet MicroToolsKit
    3. Le wiki .NetMF v4.3
    4. Description et utilisation de la classe IHMSSI
  3. LIENS
    1. Exemples codés en C# pour les cartes Netduino et Fez (Panda 3, BrainPad)
    2. La page du projet MicroToolsKit

1. LE MATERIEL


1.1 L'IHM SSI


L' Interface Homme Machine SSI se compose :


1.2 Les cartes Netduino

Secret Labs

Netduino plus 2 Netduino 3 wifi
Netduino 3 Ethernet Netduino 3 wifi*

1.3 Les cartes FEZ

GHI Electonics (Extrait)

PANDA III COBRA III
PANDA III COBRA III* (compatible Gadgeteer)

2. LE LOGICIEL


2.1 Contenu du répertoire proposé au téléchargement

Le répertoire proposé au téléchargement (au format zip ou tar.gz) contient la solution IHMSSI composée :


2.2 Le NuGet MicroToolsKit

La dernière version compilée de la classe IHMSSI se situe dans la bibliothèque MicroToolsKit disponible sur nuget.org.

Organisation des classes contenues dans MicroToolsKit [lien]

Installer cette bibliothèque dans le projet simplifie l'utilisation de cette classe.


2.3 Le wiki .NetMF v4.3


2.4 Description et utilisation de la classe IHMSSI


Création d'un projet avec l'IDE Visual Studio

  1. Créer un nouveau projet en suivant la démarche décrite dans le chapitre "Premier programme en C# étape par étape" avec une carte Netduino ou avec une carte Fez (Panda 3, BrainPad, etc.). [lien]
  2. Utiliser le gestionnaire de paquets NuGet pour ajouter l'assembly MicroToolsKit (disponible sur nuget.org) dans le répertoire Références du projet.(clic droit sur Références puis Gérer les packages NuGet...)
  3. Ajouter les espaces de noms Microtoolskit.Hardware.IHM et Microtoolskit.Hardware.Displays dans l'en-tête du fichier source.
  4. Créer un objet en utilisant un des constructeurs IHMSSI.
  5. Utiliser les propriétés associées aux LED et aux BP de l'IHM pour accéder individuellement aux méthodes des objets. Utiliser les méthodes de la classe IHMSSI pour les gérer collectivement.

Exemple
using System.Threading;

using Microtoolskit.Hardware.Displays;
using MicroToolsKit.Hardware.IHM;

namespace FezPanda
{
    public class Program
    {
        public static void Main()
        {
            IHMSSI ihm = new IHMSSI(new I2CLcd(I2CLcd.LcdManufacturer.BATRON, 100));

            ihm.Lcd.PutString(0, 0, "IHM SSI");
            ihm.Lcd.PutString(8, 1, "WebGE");
            Thread.Sleep(3000);

            while (true)
            {
                ihm.D0.Write(ihm.BpPlus.Read());
                ihm.D1.Write(ihm.BpFleHaut.Read());
                ihm.D2.Write(ihm.BpFleBas.Read());
                ihm.D3.Write(ihm.BpMoins.Read());
                ihm.D4.Write(ihm.BpOk.Read());
                ihm.D5.Write(ihm.BpSet.Read());
                ihm.D6.Write(ihm.BpEchap.Read());
                ihm.D7.Write(ihm.BpEnter.Read());
                Thread.Sleep(10);
            }
        }
    }
}
			

Constructeurs

Syntaxe Description
IHMSSI() Instancie un objet "IHMSSI" composé :
  • de huit leds (identifiées D0 à D7 sur la carte) reliées à un PCF8574A (@ = 0x38) ,
  • de huit boutons-poussoir (identifiés Echap, Enter, Ok, Set, -, v, ^, + sur la carte) reliés à un PCF8574A (@ = 0x3f) ,
  • d'un afficheur lcd Midas (@=03A).

Fréquence du bus: 100kHz pour les trois circuits.

Remarque: Le constructeur initialise le lcd et éteint les leds.

IHMSSI( I2CLcd lcd) Instancie un objet "IHMSSI" composé :
  • de huit leds (identifiées D0 à D7 sur la carte) reliées à un PCF8574A (@ = 0x38) ,
  • de huit boutons-poussoir (identifiés Echap, Enter, Ok, Set, -, v, ^, + sur la carte) reliés à un PCF8574A (@ = 0x3f) ,
  • d'un afficheur lcd Midas (@=03A) ou BATRON (@=0x3B)

Paramètre:

lcd: objet I2CLcd

Remarque: Le constructeur initialise le lcd et éteint les leds.

IHMSSI( PCF8574 leds, I2CLcd lcd) Instancie un objet "IHMSSI" composé :
  • de huit leds (identifiées D0 à D7 sur la carte) pouvant être reliées à un PCF8574A (@ dans [0x38, 0x3F]) ou à un PCF8574 (@ dans [0x20, 0x27]) ,
  • de huit boutons-poussoir (identifiés Echap, Enter, Ok, Set, -, v, ^, + sur la carte) reliés à un PCF8574A (@ = 0x3f) ,
  • d'un afficheur lcd Midas (@=03A) ou BATRON (@=0x3B)

Paramètres:

leds: objet PCF8574

lcd: objet I2CLcd

Remarque: Le constructeur initialise le lcd et éteint les leds.

IHMSSI( PCF8574 leds, PCF8574 BPs, I2CLcd lcd) Instancie un objet "IHMSSI" composé :
  • de huit leds (identifiées D0 à D7 sur la carte) pouvant être reliées à un PCF8574A (@ dans [0x38, 0x3F]) ou à un PCF8574 (@ dans [0x20, 0x27]) ,
  • de huit boutons-poussoir (identifiés Echap, Enter, Ok, Set, -, v, ^, + sur la carte) pouvant être reliés à un PCF8574A (@ dans [0x38, 0x3F]) ou à un PCF8574 (@ dans [0x20, 0x27]) ,
  • d'un afficheur lcd Midas (@=03A) ou BATRON (@=0x3B)

Paramètres:

leds: objet PCF8574

BPs: objet PCF8574

lcd: objet I2CLcd

Remarque: Le constructeur initialise le lcd et éteint les leds.

Propriétés

Syntaxe Description
BpEchap Le bouton-poussoir Echap accède aux méthodes de la classe BP.

Exemple:

if (Ihm.BpEchap.Read() == true)
...
else
...

BpEnter Le bouton-poussoir Enter accède aux méthodes de la classe BP.
BpOk Le bouton-poussoir Ok accède aux méthodes de la classe BP.
BpSet Le bouton-poussoir Set accède aux méthodes de la classe BP.
BpMoins Le bouton-poussoir - accède aux méthodes de la classe BP.
BpPlus Le bouton-poussoir + accède aux méthodes de la classe BP.
BpFleBas Le bouton-poussoir v accède aux méthodes de la classe BP.
BpFleHaut Le bouton-poussoir ^ accède aux méthodes de la classe BP.
D0 La led D0 accède aux méthodes de la classe Led.

Exemple:

if (Ihm.BpPlus.Read() == true)
Ihm.D0.Write(true);
else
Ihm.D0.Write(false);

D1 La led D1 accède aux méthodes de la classe Led.
D2 La led D2 accède aux méthodes de la classe Led.
D3 La led D3 accède aux méthodes de la classe Led.
D4 la led D4 accède aux méthodes de la classe Led.
D5 La led D5 accède aux méthodes de la classe Led.
D6 La led D6 accède aux méthodes de la classe Led.
D7 La led D7 accède aux méthodes de la classe Led.
Lcd L'afficheur Lcd accède aux méthodes de la classe LCDI2C.

Exemple:

Ihm.Lcd.PutString(0, 0, "Classe IHMSSI");

Méthodes

Syntaxe Description
void BPsRead( out bool BPEchap,
out bool BPEnter, out bool BPOk,
out bool BPSet, out bool BPMoins, out bool BPFleBas, out bool BPFleHaut, out bool BPPlus)
Renvoie l'état des huit boutons-poussoir. Vrai si appuyé, faux si relâché.
void LedsOff() Eteint les leds D7 à D0.
void LedsOn() Eclaire les leds D7 à D0
void LedsWrite( byte value) Ecrit l'octet value sur les led D7 à D0. "0" => led éteinte, "1" => led éclairée

Classe BP


Méthodes

Syntaxe Description
bool Read() Renvoie l'état logique du bouton-poussoir.
Vrai si actionné. Faux si relâché

Classe Led


Méthodes

Syntaxe Description
void Write( bool state) Eclaire ou éteint la led .
Vrai => led éclairée. Faux => led éteinte