{{ :suivant.png?nolink&30|}} {{ :retour.png?nolink&30|}} [[brainpad:accueilbp2|{{ :iconemaison.jpg?nolink&30|Sommaire BP2}}]]
===== Les classes de la carte BrainPad 2 =====
{{ :netmf43:brainpadico.png?nolink&150}}
[Mise à jour le 4/9/2020]
**La carte BrainPad 2**
{{ :tinyclros:brainpadv2.png?nolink&300 |}}
**Un guide en français pour débuter**
[[http://files.ghielectronics.com/downloads/Documents/Guides/BrainPad%20Beginners%20Guide/BrainPad%20Beginners%20Guide%20-%20fr.pdf|{{ :tinyclros:bp2french.png?nolink |A télécharger sur le site GHI}}]]
----
**Liste des classes de la bibliothèque BrainPad**
^ ^ Nom ^ Description ^
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Accelerometer** |Accès à l'accéléromètre MMA8453Q de la carte. Lecture de l'accélération sur les axes X, Y et Z.|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Buttons** |Accès aux 4 touches de la carte par scrutation ou par événements.|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Buzzer** |Accès au buzzer (déclenchement, arrêt, génération d'une note (fréquence), diffusion de musique)|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Display** |Contrôle de l'afficheur monochrome (128 x 64) à circuit [[https://webge.fr/doc/wikis/pdf/Hardware/Divers/SSD1306.zip|SSD1306]] (I2C). Texte, tracé de forme géométrique etc. **Ressource documentaire** : [[materiels:afficheurs:graphique|Les afficheurs graphiques]]|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Expansion** |Définition des entrées / sorties du connecteur d'extension.|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**LightBulb** |Accès à la Led RVB haute luminosité.|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**LightSensor** |Accès au capteur de luminosité (LDR).|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Picture** |Affichage d'une image.|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**ServoMotors** |Accès aux sorties dédiées à la commande des servomoteurs 1 et 2.|
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**TemperatureSensor** |Accès au capteur analogique de température MCP9701. |
|{{:tinyclros:class_yellow_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**Wait** |Offre des méthodes de temporisation (en secondes ou millisecondes)..|
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
----
==== Accelerometer ====
L'accéléromètre est un périphérique d'entrée qui mesure la **force d'accélération** sur trois axes (**x**, **y** et **z**). On appelle habituellement cette force **g-force** et on l'exprime comme un multiple de la force de gravité. Par exemple, si un pilote d’avion reçoit une force de 2 g dans un virage à 60 degrés, cela signifie qu'il est poussé dans son siège avec une force égale au double de son poids. Les pilotes de chasse peuvent recevoir jusqu'à 9 g. Le BrainPad renvoie une valeur d'accélération égale à la force g multipliée par 100.
Si le BrainPad est à plat sur une table avec l'écran à votre droite, l'axe des x est horizontal de gauche à droite, l'axe des y est horizontale et s'éloigne de vous, et l'axe des z s'étend verticalement de haut en bas. Si le BrainPad est immobile dans cette position, les axes x et y indique 0, mais l'axe z indique -100. En effet, la force de gravité pousse sur l'accéléromètre avec une force égale à 1 g (la force de gravité de la Terre). Si vous retournez le BrainPad, l'axe des z indique 100. Le seul cas où tous les axes sont à zéro est le moment où le BrainPad est en chute libre.
__Remarque__ : la valeur renvoyée par les méthodes ci-dessous est l'accélération multipliée par 100. (1g = 9,81m/s²)
**Attribut**
^ ^ Syntaxe ^ Description ^
|{{:brainpad:Property_20x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|**EnableFullRange** |Si la valeur est définie sur false, les valeurs de l’accéléromètre vont de -100 à 100 (-1 g à 1 g). Si la valeur est true, les valeurs de l’accéléromètre sont comprises entre -200 et 200 (-2 g à 2 g).|
BrainPad.Accelerometer.EnableFullRange = true;
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//int// **ReadX**() |Renvoie une valeur entière comprise entre -100 et 100 (ou -200 à 200 si BrainPad.Accelerometer.EnableFullRange = true) en fonction de l'accélération sur l'axe x.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//int// **ReadY**() |Renvoie une valeur entière comprise entre -100 et 100 (ou -200 à 200 si BrainPad.Accelerometer.EnableFullRange = true) en fonction de l'accélération sur l'axe y.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//int// **ReadZ**() |Renvoie une valeur entière comprise entre -100 et 100 (ou -200 à 200 si BrainPad.Accelerometer.EnableFullRange = true) en fonction de l'accélération sur l'axe z.|
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple//
static void Main()
{
BrainPad.Display.Clear();
while (true)
{
BrainPad.Display.Clear();
BrainPad.Display.DrawSmallText(0, 0, "X : " + BrainPad.Accelerometer.ReadX().ToString("F2"));
BrainPad.Display.DrawSmallText(0, 10, "Y : " + BrainPad.Accelerometer.ReadY().ToString("F2"));
BrainPad.Display.DrawSmallText(0, 20, "Z : " + BrainPad.Accelerometer.ReadZ().ToString("F2"));
BrainPad.Display.RefreshScreen();
BrainPad.Wait.Milliseconds(100);
}
}
Le projet **TCLR_BRAINPAD_Accel_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_Accel.zip|ici]]
----
==== Buttons ====
Les quatre** boutons** directionnels (**haut**, **bas**, **gauche** et **droi**t) servent d'entrées et peuvent être lus par votre programme pour déterminer si le bouton est enfoncé ou non. Ils peuvent être testés de deux manières différentes.
* Une solution consiste à **vérifier périodiquement** si le bouton est enfoncé (**scrutation**).
Cela fonctionne bien, mais il est possible de manquer une action sur un bouton si votre programme ne le vérifie pas assez souvent. L'action sur un bouton du clavier peut être déterminée par scrutation à l'aide des méthodes ({{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}) ci-dessous.
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//bool// **IsDownPressed**() |Renvoie la valeur //vrai// si le bouton **Down** a été pressé, la valeur faux sinon. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//bool// **IsLeftPressed**() |Renvoie la valeur //vrai// si le bouton **Left** a été pressé, la valeur faux sinon. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//bool// **IsRightPressed**() |Renvoie la valeur //vrai// si le bouton **Right** a été pressé, la valeur faux sinon. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//bool// **IsUpPressed**() |Renvoie la valeur //vrai// si le bouton **Up** a été pressé, la valeur faux sinon. |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple 1 : scrutation du clavier//
class Program
{
static int increment = 0;
static void Main()
{
while (true) // Scrutation du clavier (pas d'anti-rebond)
{
if (BrainPad.Buttons.IsUpPressed())
increment += 10;
if (BrainPad.Buttons.IsDownPressed())
increment -= 10;
BrainPad.Display.Clear();
BrainPad.Display.DrawSmallText(0, 0, "Valeur: " + increment.ToString());
BrainPad.Display.RefreshScreen();
BrainPad.Wait.Milliseconds(100);
}
}
}
Le projet **TCLR_BRAINPAD_BP_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_BP.zip|ici]]
* L'autre façon de vérifier les boutons consiste à utiliser un **gestionnaire d'événements**.
Un gestionnaire d'événements vérifiera en permanence si un bouton a été appuyé ou relâché. Une fois qu'un gestionnaire d'événement est configuré, le BrainPad lance un écouteur d'événement qui vérifie le bouton pour vous. Cela permet à votre programme d’effectuer d’autres tâches sans vous soucier de manquer un événement de bouton. Une fois le bouton enfoncé (ou relâché), l'écouteur d'événements appelle votre gestionnaire d'événements. Le gestionnaire d'événements est un code que vous écrivez pour indiquer au BrainPad comment réagir lorsqu'un bouton est enfoncé (ou relâché).
Bien qu’un gestionnaire d’événements soit un peu plus difficile à configurer, il **permet au programme de s’occuper d’autres tâches tout en ne manquant jamais un événement** de bouton.
Les **évènements** ({{:tinyclros:event_16x.png?nolink|}}) disponibles sont listés ci-dessous.
**Evènements** (type ButtonEventHandler)
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:event_16x.png?nolink|}}|**WhenUpButtonPressed** |Un événement est déclenché quand le bouton **Up** est appuyé. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenUpButtonReleased** |Un événement est déclenché quand le bouton **Up** est relâché. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenLeftButtonPressed** |Un événement est déclenché quand le bouton **Left** est appuyé. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenLeftButtonReleased** |Un événement est déclenché quand le bouton **Left** est relâché. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenRightButtonPressed** |Un événement est déclenché quand le bouton **Right** est appuyé. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenRightButtonReleased** |Un événement est déclenché quand le bouton **Right** est relâché. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenDownButtonPressed** |Un événement est déclenché quand le bouton **Down** est appuyé. |
|{{:tinyclros:event_16x.png?nolink|}}|**WhenDownButtonReleased** |Un événement est déclenché quand le bouton **Down** est relâché. |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple 2 : gestion du clavier avec des évènements//
class Program
{
static void Main()
{
BrainPad.Buttons.WhenUpButtonPressed += Buttons_WhenUpButtonPressed;
BrainPad.Buttons.WhenDownButtonPressed += Buttons_WhenDownButtonPressed;
while (true)
{
BrainPad.Wait.Minimum(); // Endort régulièrement la tâche Main
}
}
private static void Buttons_WhenDownButtonPressed()
{
BrainPad.LightBulb.TurnOff();
}
private static void Buttons_WhenUpButtonPressed()
{
BrainPad.LightBulb.TurnBlue();
}
}
Le projet **TCLR_BRAINPAD_BP_Event_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_BP_Event.zip|ici]]
----
==== Buzzer ====
Le buzzer est plutôt un petit haut parleur capable de jouer de la musique et même de diffuser une voix.
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **Beep**() |Génère un bip court. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **StartBuzzing**(//double// frequency) |Joue un son dont la fréquence prend la valeur //frequency//. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **StopBuzzing**() |Coupe le son. |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple 1 : réglage de la fréquence jouée par le buzzer avec les boutons Up et Down //
static void Main()
{
int frequency = 0, increment = 0;
BrainPad.Display.Clear();
BrainPad.Display.DrawSmallText(0, 0, "Frequence = " + frequency);
BrainPad.Display.RefreshScreen();
while (true)
{
if (BrainPad.Buttons.IsUpPressed())
{
increment = 100;
}
if (BrainPad.Buttons.IsDownPressed())
{
increment = -100;
}
if (increment != 0)
{
frequency = frequency + increment;
BrainPad.Display.Clear();
BrainPad.Display.DrawSmallText(0, 0, "Frequence = " + frequency);
BrainPad.Display.RefreshScreen();
increment = 0;
BrainPad.Buzzer.StartBuzzing(frequency);
BrainPad.Wait.Seconds(0.2);
BrainPad.Buzzer.StopBuzzing();
}
}
}
Le projet **TCLR_BRAINPAD_Buzzer1_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_Buzzer1.zip|ici]]
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple 2 : Mélodie//
static void Main()
{
const int NoteC = 261;
const int NoteD = 294;
const int NoteE = 330;
const int NoteF = 349;
const int NoteG = 391;
const int Whole = 1000;
const int Half = Whole / 2;
const int QuarterDot = Whole / 3;
const int Quarter = Whole / 4;
const int Eighth = Whole / 8;
int[] note = {
NoteE, NoteE, NoteF, NoteG, NoteG, NoteF, NoteE,
NoteD, NoteC, NoteC, NoteD, NoteE, NoteE, NoteD,
NoteE, NoteD, NoteC, NoteC, NoteD, NoteE, NoteD,
NoteC, NoteC
};
int[] duration = {
Quarter, Quarter, Quarter, Quarter, Quarter, Quarter,
Quarter, Quarter, Quarter, Quarter, Quarter, Quarter, QuarterDot,
Eighth, Half, Quarter, Quarter, Quarter, Quarter, Quarter, Quarter,
Quarter, Quarter, Quarter, Quarter, Quarter, Quarter, QuarterDot,
Eighth,Whole
};
while (true)
{
for (int i = 0; i < note.Length; i++)
{
BrainPad.Buzzer.StopBuzzing();
BrainPad.Buzzer.StartBuzzing(note[i]);
BrainPad.wait(duration[i]);
}
Thread.Sleep(100);
}
}
Le projet **TCLR_BRAINPAD_Buzzer2_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_Buzzer2.zip|ici]]
----
==== Display ====
L'unité d'affichage est le pixel. Les commandes affectent uniquement la mémoire dédiée à l'écran (buffer d'affichage). Rien ne s'affiche tant que //BrainPad.Display.RefreshScreen ()// n'est pas exécuté.
**Ressource documentaire** : [[arduino:graphique|Les afficheurs graphiques]]
**Attributs**
^ ^ Syntaxe ^ Description ^
|{{:brainpad:Property_20x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//int// **Height** |Retourne la hauteur de l'affichage en pixels (64). |
|{{:brainpad:Property_20x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//int// **Width**| Retourne la largeur de l'affichage en pixels (128). |
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawSmallNumber**(//int// x, //int// y, //long// number) |Ecrit le nombre **number** à la position (**x,y**) dans un petit format. \\ **//Surchargée//** : //double// number|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawNumber**(//int// x, //int// y, //long// number) |Ecrit le nombre **number** à la position (**x,y**) dans un format large. \\ **//Surchargée//** : //double// number|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawSmallText**(//int// x, //int// y, //string// text) |Ecrit le texte **text** à la position (**x,y**) dans un petit format. \\ Les caractères accentués provoquent une exception //System.IndexOutOfRangeException//. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawText**(//int// x, //int// y, //string// text) |Ecrit le texte **text** à la position (**x,y**) dans un format large. \\ Les caractères accentués provoquent une exception //System.IndexOutOfRangeException//. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawScaledText**(//int// x, //int// y, //string// text, //int// HScale, //int// VScale) |Ecrit le texte **text**, pouvant être agrandit, à la position (**x,y**). **HScale** change la hauteur. **VScale** change la largeur. \\ Par exemple HScale = 2 double la largeur du texte à l'écran. \\ - HScale=1, VScale=1 => DrawSmallText \\ - HScale=2, VScale=2 => DrawText \\ Les caractères accentués provoquent une exception //System.IndexOutOfRangeException//.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **CreatePicture**(//int// width, //int// height,//byte[]// data) |Stocke une image de largeur **width** et de hauteur **height** constituée des n pixels enregistrés sous la forme d'octets dans le tableau **data**. Un pixel prend les valeurs 0 (éteint) ou 1 (éclairé).|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **CreateScaledPicture**(//int// width, //int// height,//byte[]// data, //int// scale) |Stocke une image susceptible d'une agrandit par le facteur d'échelle **scale**. Par exemple, régler le facteur d'échelle à 2 affichera l'image avec le double de sa taille d'origine. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawCircle**(//int// x, //int// y, //int// r) |Dessine un cercle de rayon **r** à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawRectangle**(//int// x, //int// y, //int// width, //int// height) |Dessine un rectangle de largeur **width** et de hauteur **height** à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawFilledRectangle**(//int// x, //int// y, //int// width, //int// height) |Dessine un rectangle plein de largeur **width** et de hauteur **height** à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawLine**(//int// x0, //int// y0, //int// x1, //int// y1) | Dessine une ligne entre la position (**x0,y0**) et (**x1,y1**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPoint**(//int// x, //int// y) |Dessine un point à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPicture**(//int// x, //int// y, //Picture// picture) |Dessine l'image **picture** à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPictureFlippedHorizontally**(//int// x, //int// y, //Picture// picture) |Retourne horizontalement l'image **picture** et la dessine à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPictureFlippedVertically**(//int// x, //int// y, //Picture// picture) |Retourne verticalement l'image **picture** et la dessine à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPictureRotated180Degrees**(//int// x, //int// y, //Picture// picture) |Tourne l'image **picture** d'un angle égale à **180°** dans le sens des aiguilles d'une montre et la dessine à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPictureRotated270Degrees**(//int// x, //int// y, //Picture// picture) |Tourne l'image **picture** d'un angle égale à **270°** dans le sens des aiguilles d'une montre et la dessine à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **DrawPictureRotated90Degrees**(//int// x, //int// y, //Picture// picture) |Tourne l'image **picture** d'un angle égale à **90°** dans le sens des aiguilles d'une montre et la dessine à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ClearPartOfScreen**(//int// x, //int// y, //int// width, //int// height) |Efface un rectangle de largeur **width** et de hauteur **height** dont le coin supérieur gauche est situé à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ClearPoint**(//int// x, //int// y) |Efface un point à la position (**x,y**). |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ClearScreen**() |Efface l'écran. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **InvertColors**(//bool// invert) |Inverse l'état des pixels sur l'écran. Les pixels allumés seront éteints et vice versa. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **RefreshScreen()**() |Ecrit l'intégralité du tampon d'affichage sur l'écran. Indispensable pour faire apparaître le contenu du buffer d'affichage.|
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple : Le programme suivant dessine un point, une ligne, un rectangle, un cercle et un cœur dans deux dimensions.//
static void Main()
{
BrainPad.Display.DrawPoint(64, 32);
BrainPad.Display.DrawLine(0, 52, 127, 52);
BrainPad.Display.DrawRectangle(48, 20, 32, 24);
BrainPad.Display.DrawCircle(64, 32, 20);
byte[] pictureData = new byte[]
{ 0, 0, 1, 0, 0 ,0, 1, 0, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0,
};
BrainPad.Display.DrawPicture(0, 0, BrainPad.Display.CreatePicture(9, 9, pictureData));
BrainPad.Display.DrawPicture(10, 10, BrainPad.Display.CreateScaledPicture(9, 9, pictureData, 2));
BrainPad.Display.RefreshScreen();
}
Le projet **TCLR_BRAINPAD_Display1_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_Display1.zip|ici]]
----
==== Light Bulb ====
Le Light Bulb contient trois diodes électroluminescentes (LED) dans un seul boîtier. Une LED est rouge, l’autre est verte et l’autre est bleue. L'intensité lumineuse produite par chaque LED peut être réglée indépendamment pour créer jusqu'à un million de couleurs.
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **TurnColor**(//double// red, //double// green, //double// blue ) |Permet de créer une variété de couleurs en contrôlant la luminosité des LED rouge, verte et bleue. L'intensité de la couleur **minimum** est 0 et la **maximum** est **100**. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **TurnRed**() |Le Light Bulb s'éclaire en rouge. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **TurnBlue**() |Le Light Bulb s'éclaire en bleu. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **TurnGreen**() |Le Light Bulb s'éclaire en vert. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **TurnWhite**() |Le Light Bulb s'éclaire en blanc. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **TurnOff**() |Le Light Bulb s'éteind. Correspond à red = 0.0, green = 0.0, blue = 0.0 |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple//
static void Main()
{
while (true)
{
BrainPad.LightBulb.TurnRed();
BrainPad.Wait.Seconds(1);
BrainPad.LightBulb.TurnBlue();
BrainPad.Wait.Seconds(1);
BrainPad.LightBulb.TurnGreen();
BrainPad.Wait.Seconds(1);
BrainPad.LightBulb.TurnColor(5, 25, 100);
BrainPad.Wait.Seconds(1);
}
}
Le projet **TCLR_BRAINPAD_LightBulb_vx.x.x** est **téléchargeable** [[https://webge.fr/doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_LightBulb.zip|ici]]
----
==== Light Sensor ====
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//double// **ReadLightLevel**() |Lit la luminosité ambiante. Renvoie une valeur comprise entre 0 à 100. |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
// Exemple : Le Light Bulb s'éclaire si la luminosité est < 50 //
static void Main()
{
double level = 0;
while (true)
{
level = BrainPad.LightSensor.ReadLightLevel();
if (level < 50)
{
BrainPad.LightBulb.TurnWhite();
}
else
{
BrainPad.LightBulb.TurnOff();
}
}
}
Le projet **TCLR_BRAINPAD_LightSensor_vx.x.x** est **téléchargeable** [[https://webge.fr//doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_LightSensor.zip|ici]]
----
==== Temperature Sensor ====
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//double// **ReadTemperatureInCelsius**() |Lit la température et renvoie sa valeur en degrés Celcius. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//double// **ReadTemperatureInFahrenheit**() |Lit la température et renvoie sa valeur en degrés Fahrenheit. |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple : Affiche la température ambiante en degrés Celcius sur l'écran du BrainPad//
static void Main()
{
while (true)
{
BrainPad.Display.Clear();
BrainPad.Display.DrawSmallText(20, 12, "Temperature en dC");
BrainPad.Display.DrawNumber(35, 24, BrainPad.TemperatureSensor.ReadTemperatureInCelsius());
BrainPad.Display.RefreshScreen();
BrainPad.Wait.Minimum();
}
}
Le projet **TCLR_BRAINPAD_TempSensor_vx.x.x** est **téléchargeable** [[https://webge.fr//doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_TempSensor.zip|ici]]
----
==== ServoMotors ====
La carte BrainPad prend en charge deux servomoteurs. Ceux-ci peuvent être des servomoteurs à rotation continue ou asservis en position.
**Méthodes**
^ ^ Syntaxe ^ Description ^
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoOne.ConfigureAsContinuous**(//bool// inverted) |Défini le servomoteur 1 comme étant à rotation continue. //inverted//=vraie fera tourner le servo 1 dans la direction opposée.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoTwo.ConfigureAsContinuous**(//bool// inverted) |Défini le servomoteur 2 comme étant à rotation continue. //inverted//=vraie fera tourner le servo 2 dans la direction opposée.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoOne.ConfigureAsPositional**(//bool// inverted) |Défini le servomoteur 1 comme étant asservi en position. //inverted//=vraie inverse les repères mini et maxi du servo 1. 0° devient 180 et vice versa.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoTwo.ConfigureAsPositional**(//bool// inverted) |Défini le servomoteur 2 comme étant asservi en position. //inverted//=vraie inverse les repères mini et maxi du servo 2. 0° devient 180 et vice versa.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoOne.ConfigurePulseParameters**(//double// minimumPulseWidth, //double// maximumPulseWidth) | Règle les largeurs d'impulsion du servo 1 en ms.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoTwo.ConfigurePulseParameters**(//double// minimumPulseWidth, //double// maximumPulseWidth) | Règle les largeurs d'impulsion du servo 2 en ms.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoOne.Set**(//double// value) |Pour un servomoteur 1 asservi en position, value doit être compris entre 0 et 180 degrés. Pour un servomoteur 1 à rotation continu, value doit être compris entre -100% et 100%.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoTwo.Set**(//double// value) |Pour un servomoteur 2 asservi en position, value doit être compris entre 0 et 180 degrés. Pour un servomoteur 2 à rotation continu, value doit être compris entre -100% et 100%.|
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoOne.Stop**() |Désactive le signal de commande du servomoteur. |
|{{:tinyclros:method_16x.png?nolink|}}{{:tinyclros:s_16x.png?nolink|}}|//void// **ServoTwo.Stop**() |Désactive le signal de commande du servomoteur. |
Pour tester les exemples, suivre la démarche sur la page [[brainpad:tclr_bp2pap|Premiers programmes en C# avec une carte BrainPad v1 ou v2 "Étape par Étape"]]
//Exemple : Commande d'un servomoteur asservi en position//
static void Main()
{
BrainPad.ServoMotors.ServoOne.ConfigureAsPositional(false);
BrainPad.ServoMotors.ServoOne.ConfigurePulseParameters(1.0, 2.0);
while (true)
{
BrainPad.ServoMotors.ServoOne.Set(0.0);
BrainPad.Wait.Seconds(2.0);
BrainPad.ServoMotors.ServoOne.Set(180.0);
BrainPad.Wait.Seconds(2.0);
}
}
Le projet **TCLR_BRAINPAD_ServoPos_vx.x.x** est **téléchargeable** [[https://webge.fr//doc/wikis/code/GHI/TinyCLR/BrainPad/TCLR_BRAINPAD_Servo.zip|ici]]
----
==== Pour aller plus loin ====
Le connecteur **mikroBUS** permet d'étendre les fonctionnalités de la carte BrainPad (GPIO, I2C, SPI, UART). \\ Voir la page [[brainpad:tclr_csharp_bp2|Exemples codés en C# pour la carte BrainPad BP2 (STM32F401)]].