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.
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.
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í.
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);
Štěpán
>Částečně je toto chování schopen eliminovat přímo software
A téměř úplně hardware - ~100nF kondenzátor paralelně k výstupu tlačítka :)
Děkuji za informaci. Elektronika není má silná stránka.
Tohle se mi libi. Existuje moznost, jak dostat ten .NET Micro Framework do jinych modulu, konkretne Libelium (Arduino) ? I za cenu mensiho prostoru v pameti pro vlastni kod.
To jejich vyvojove prostredi Waspmote IDE je naprosta zoufalost.
Existují přímo desky, které odpovídají Arduino, např. FEZ Panda II. Pokud vás zajímají možnosti portace, tak se podívejte na www.microsoft.com/.../details.aspx