View on GitHub

ST7735 - 262K Color Single-Chip TFT Controller/Driver

Description des classes ST7735 et Color développées en C# sous .NETMF v4.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. Les modules Adafruit 1,8'' Color TFT Shield et Breakout
    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 ST7735
  3. LIENS
    1. Les 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 Les modules Adafruit 1,8'' Color TFT Shield et Breakout


1.2 Les cartes Netduino

Wilderness Labs

Netduino plus 2 Netduino 3 wifi
Netduino + 2 Netduino 3 wifi* (compatible Gadgeteer)

1.3 Les cartes FEZ

GHI Electonics (Extrait)

BrainPad PANDA III COBRA III
BrainPad V1 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 ST7735 composée :


2.2 Le NuGet MicroToolsKit

La dernière version compilée des classes ST7735 et Color se situe dans la bibliothèque MicroToolsKit disponible sur nuget.org.

Organisation des classes contenues dans MicroToolsKit [lien]

Important : Installer cette bibliothèque dans le projet simplifie l'utilisation de ces classes.


2.3 Le wiki .NetMF v4.3


2.4 Description et utilisation des classes ST7735 et Color



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 la bibliothèque MicroToolsKit ( nuget.org) dans le projet. (Dans l'explorateur de solution, clic droit sur les Références du projet puis choisir Gérer les packages NuGet.... Installer le paquet.)
  3. Ajouter l'espace de noms Microtoolskit.Hardware.Displays.TFTColor dans l'en-tête du fichier source.
  4. Créer un objet en utilisant le constructeur ST7735.
  5. Dessinez du texte et des formes géométriques avec les méthodes décrites ci-dessous.

Exemple pour la carte Panda
using System.Threading;

using Microtoolskit.Hardware.Displays.TFTColor;
using GHI.Pins;
						
namespace PANDA_3_ST7735
{
	public class Program
	{
		public static void Main()
		{
			ST7735 DisplayShield = new ST7735(FEZPandaIII.Gpio.D8, FEZPandaIII.Gpio.D10, FEZPandaIII.SpiBus.Spi1);
			int i = 0;
						
			// Rectangle
			DisplayShield.DrawFilledRectangle(0, 0, 160, 128, Color.Black);
						
			DisplayShield.DrawLargeText(20, 30, ".NEMF v4.3", Color.Yellow);
						
			while (true)
			{
				DisplayShield.DrawText(30, 60, "Count: " + i++, Color.Magenta);
				Thread.Sleep(10);
			}
		}
	}
}
				

La lasse ST7735


Constructeurs

Syntaxe Description
ST7735( Cpu.Pin CtrlPin, Cpu.Pin ChipSelect, Cpu.Pin SpiBus) Instancie un objet "ST7735".
  • CtrlPin: A relier à la broche D/C de sélection des données / commandes de l'afficheur.
    • Panda3 : FEZPandaIII.Gpio.D8
    • Netduino : Pins.GPIO_PIN_D8
  • ChipSelect: broche du bus SPI pour la sélection de la puce ST7735 de l'afficheur.
    • Panda3 : FEZPandaIII.Gpio.D10
    • Netduino : Pins.GPIO_PIN_D10
  • SpiBus: objet contrôlant les signaux SCK, MISO et MOSI du BUS SPI. Voir le lien pour la connexion du breakout à une carte compatible Arduino.
    • Panda3 : FEZPandaIII.SpiBus.Spi1
    • Netduino : SPI_Devices.SPI1
Exemple :
ST7735 DisplayShield = new ST7735(FEZPandaIII.Gpio.D8, FEZPandaIII.Gpio.D10, FEZPandaIII.SpiBus.Spi1);

Constantes

Syntaxe Description
Heignt Hauteur de l'écran en pixels. (160px)
Width Largeur de l'écran en pixels. (128px)

Méthodes

Syntaxe Description
void TurnOff() Désactive le rétroéclairage de l'écran.
void TurnOn() Active le rétroéclairage de l'écran.
void Clear()

Efface l'écran.

Example
DisplayShield.Clear();
void SetPixel( int x, int y, Color color)

Dessine un point à la position ( x, y) dans la couleur color).

Example
DisplayShield.SetPixel(30, 30, Color.Green);
void DrawLine( int x0, int y0, int x1, int y1, Color color)

Dessine une ligne entre les points de coordonnées ( x0, y0) et ( x1, y1) dans la couleur color.

Example
DisplayShield.DrawLine(10, 10, 50, 50, Color.Yellow);
void DrawRectangle( int x, int y, int width, int height, Color color)

Dessine le contour d'un rectangle ( width par height) à la position ( x, y) dans la couleur color.

Example
DisplayShield.DrawRectangle(20, 20, 50, 50, Color.Cyan);
void DrawFilledRectangle( int x, int y, int width, int height, Color color)

Dessine un rectangle plein ( width par height) à la position ( x, y) dans la couleur color.

Example
DisplayShield.DrawFilledRectangle(15, 15, 60, 60, Color.Yellow);
void DrawCircle( int x, int y, int r, Color color)

Dessine un cercle de rayon r à la position ( x, y) dans la couleur color.

Example
Color maCouleur = new Color(100, 100, 100);
DisplayShield.DrawCircle(20, 20, 10, maCouleur);
void DrawPicture( int x, int y, int width, int height, Color color, byte[] data )

Dessine une image monochrome décrite par un tableau d'octets data (valeur "1" ou "0") de largeur width et de hauteur height à la position (x,y) dans la couleur color.

Example
byte[] pictureData = new byte[] {
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,
0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
}; DisplayShield.DrawPicture(80,40,16,16,Color.Green,pictureData);
void DrawNumber( int x, int y, double number, Color color) Ecrit un nombre number, en petits caractères, à la position ( x, y) dans la couleur color.

Surchargée : long number

Example
double resultat = 12;
DisplayShield.DrawNumber(50, 50, resultat,Color.White);
void DrawLargeNumber( int x, int y, double number, Color color) Ecrit un nombre number, de grande taille, à la position ( x, y) dans la couleur color.
Surchargée : long number
void DrawExtraLargeNumber( int x, int y, double number, Color color) Ecrit un nombre number, de très grande taille, à la position ( x, y) dans la couleur color.
Surchargée : long number
void DrawLetter( int x, int y, char letter, Color color)

Ecrit une lettre letter de petite taille, à la position ( x, y), dans la couleur color.

Example
DisplayShield.DrawLetter(50, 50,'E', Color.White);
void DrawLargeLetter( int x, int y, char letter, Color color) Ecrit une lettre letter de grande taille à la position ( x, y) dans la couleur color.
void DrawExtraLargeLetter( int x, int y, char letter, Color color) Ecrit une lettre letter de très grande taille à la position ( x, y) dans la couleur color.
void DrawText( int x, int y, string text, Color color)

Ecrit un texte text, en petits caractères, à la position ( x, y) dans la couleur color.

Example
DisplayShield.DrawText(50, 50, "Un petit texte", Color.Magenta);
void DrawLargeText( int x, int y, string text, Color color) Ecrit un texte text, de grande taille, à la position ( x, y) dans la couleur color.
void DrawExtraLargeText( int x, int y, string text, Color color) Ecrit un texte text, de très grande taille, à la position ( x, y) dans la couleur color.

La classe Color

Constructeurs

Syntaxe Description
Color()

Construit une nouvelle instance de la classe couleur (couleur personnalisée).

Example
Color uneCouleur = new Color();
uneCouleur.B = 150;
Remarque : S'ils ne sont pas définis R et V sont égaux à 0;
Color ( byte red byte green byte blue )

Construit une nouvelle instance de la classe couleur en précisant le niveau de rouge, de vert et de bleu (couleur personnalisée).

Example
Color maCouleur = new Color(100, 100, 100);

Champs

Syntaxe Description
Black Couleur prédéfinie. (Color)
Blue Couleur prédéfinie. (Color)
Cyan Couleur prédéfinie. (Color)
Green Couleur prédéfinie. (Color)
Magenta Couleur prédéfinie. (Color)
Red Couleur prédéfinie. (Color)
Yellow Couleur prédéfinie. (Color)

Propriétés

Syntaxe Description
As565

Obtient la couleur au format As565 . Dans ce format, la couleur est codée sur 16 bits. Le rouge R correspond aux 5 bits de poids faible de l'octet Rouge; Le vert V correspond aux 6 bits de poids faible de l'octet Vert; Le bleu B correspond aux 5 bits de poids faible de l'octet Bleu;

Example
Color maCouleur = new Color(20,60,30);
int maCouleurAs565 = maCouleur.As565 // Donne maCouleurAs565 = 2048*20 + 32*60 + 1*30 = 42910
// Soit 2048*R + 32*V+1*B avec Rmax= 31, Vmax=63 et Bmax=31
B

Définit ou obtient le niveau de bleu sur un octet.

Examples
Color uneCouleur = new Color();
Ex1: uneCouleur.B = 150;

Remarque : S'ils ne sont pas définis R et V sont égaux à 0;

Ex2: byte bleu = uneCouleur.B; // Donne bleu = 150
G Définit ou obtient niveau de vert sur un octet.
R Définit ou obtient niveau de rouge sur un octet.