.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.
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.
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í.
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