TechEd Europe

.NET Gadgeteer – jak na vlastní moduly

  • Comments 4

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

  • >Čá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

Page 1 of 1 (4 items)
Leave a Comment
  • Please add 8 and 8 and type the answer here:
  • Post