.NET Gadgeteer – jak na vlastní moduly

I když je momentálně k dispozici několik desítek modulů pro .NET Gadgeteer, tak se vám může stát, že budete potřeboval připojit i jiná rozhraní, než jsou k dispozici. K tomu slouží Extender module. Tento modul pouze vyvádí jednotlivé piny .NET Gadgeteer konektoru na pájecí otvory a je pouze na vás, jak je využijete. Máte k dispozici 7 konfigurovatelných pinů, zem, +5 V a +3.3 V. Modul koupíte pouze s pájecími otvory. Já jej doplnil o zásuvkovou lištu se standardní roztečí otvorů 2.54 mm.

clip_image002

Zapojení

Jako ukázku jsem si připravil velmi jednoduchou aplikaci, kdy jedním tlačítkem postupně rozsvěcíte LED, a když svítí všechny, tak je stiskem tlačítka zhasnete.

clip_image004

Pro zapojení LED a tlačítka jsem použil nepájivé kontaktní pole.

  • LED – piny P3, P4, P5
  • Tlačítko – P8

Nezapomínejte, že tlačítko může kmitat a je to velmi závislé na kvalitě tlačítka. Částečně je toto chování schopen eliminovat přímo software, ale občas je vhodné zvolit reakci na uvolnění tlačítka místo na jeho stisknutí.

clip_image006

Zdrojový kód

 using System;
 using System.Threading;
 using Microsoft.SPOT;
 using Microsoft.SPOT.Presentation;
 using Microsoft.SPOT.Presentation.Controls;
 using Microsoft.SPOT.Presentation.Media;
 using Microsoft.SPOT.Touch;
  
 using Gadgeteer.Networking;
 using GT = Gadgeteer;
 using GTM = Gadgeteer.Modules;
 using Gadgeteer.Modules.GHIElectronics;
  
 namespace ExtenderDemo
 {
     public partial class Program
     {
         GT.Interfaces.DigitalOutput led1;
         GT.Interfaces.DigitalOutput led2;
         GT.Interfaces.DigitalOutput led3;
         GT.Interfaces.InterruptInput btn;
  
         void ProgramStarted()
         {
             Debug.Print("Program Started");
  
  
             // jednotlivé piny na Extender module můžete nkonfigurovat podle potřekby
             btn = extender.SetupInterruptInput(GT.Socket.Pin.Eight, GT.Interfaces.GlitchFilterMode.On, GT.Interfaces.ResistorMode.PullUp, GT.Interfaces.InterruptMode.RisingEdge);
             btn.Interrupt += new GT.Interfaces.InterruptInput.InterruptEventHandler(btn_Interrupt);
  
             led1 = extender.SetupDigitalOutput(GT.Socket.Pin.Three, false);
             led2 = extender.SetupDigitalOutput(GT.Socket.Pin.Four, false);
             led3 = extender.SetupDigitalOutput(GT.Socket.Pin.Five, false);
         }
  
         void btn_Interrupt(GT.Interfaces.InterruptInput sender, bool value)
         {
             if (!led1.Read())
             {
                 led1.Write(true);
             }
             else if (!led2.Read())
             {
                 led2.Write(true);
             }
             else if (!led3.Read())
             {
                 led3.Write(true);
             }
             else
             {
                 led1.Write(false);
                 led2.Write(false);
                 led3.Write(false);
             }
         }
     }
 }

Doprovodné video

Štěpán