public static void Main() { var button = new InterruptPort(Pins.ONBOARD_SW1, true, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeBoth); button.OnInterrupt += new NativeEventHandler(Button_OnInterrupt); button.EnableInterrupt(); while (true) { if (_active) UploadData(new AnalogInput(Cpu.AnalogChannel.ANALOG_2)); } }
/// <summary> /// Parte l'evento dell'interruzione quando il livello del segnale di interruzione è alto (ovvero quando il pulsante viene premuto). /// Se si usa un bottone diverso dal built-in, è necessario collegare delle resistenze di pull-down per l'interruttore . /// Lady Ada è un eccelente tutorial su questo argomento: http://www.ladyada.net/learn/arduino/lesson5.html /// </summary> /// <param name="pin">Un pin digitale collegato al pulsante.</param> /// <param name="intMode">Definisce il tipo di cambio di livello innescando l'evento dell'interrupt.</param> /// <param name="target">Il gestore di eventi viene invocato quando si verifica un interrupt.</param> /// <param name="resistorMode">Configurazione interna della resistenza di pullup.</param> /// <param name="glitchFilter">Ingresso filtro antirimbalzo.</param> public Pulsante(Cpu.Pin pin, Port.InterruptMode intMode = Port.InterruptMode.InterruptEdgeLow, NativeEventHandler target = null, Port.ResistorMode resistorMode = Port.ResistorMode.Disabled, bool glitchFilter = true) { Input = new InterruptPort(pin, glitchFilter, resistorMode, intMode); if (target == null) { Input.OnInterrupt += InternalInterruptHandler; } else { Input.OnInterrupt += target; } Input.EnableInterrupt(); }
public static void Main() { try { var timeSet = false; NTP.UpdateTimeFromNtpServer("pool.ntp.org", 1); ReadConfiguration(); ReadValueCache(); loggingEndpoint = HttpClient.GetIPEndPoint(loggingHostName, loggingPortNumber); s0Port = new InterruptPort(Pins.GPIO_PIN_D12, false, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeLow); s0Port.OnInterrupt += new NativeEventHandler(S0PulseReceived); s0Port.EnableInterrupt(); var messageReader = new P1MessageReader(); messageReader.MessageReceived += new P1MessageReader.MessageReceivedDelegate(messageReader_MessageReceived); messageReader.Start(); while (true) { Thread.Sleep(60000); // Resync time and s0Counter at 3 o'clock at night if (!timeSet && System.DateTime.Now.Hour == 3) { timeSet = NTP.UpdateTimeFromNtpServer("pool.ntp.org", 1); s0Counter = 0; } else if (timeSet && System.DateTime.Now.Hour > 3) { timeSet = false; } CacheValuesOnSd(); } } catch (Exception ex) { Debug.Print(ex.ToString()); } }
public Bumper(Cpu.Pin interruptPin) { interruptPort = new InterruptPort(interruptPin, true, Port.ResistorMode.PullDown, Port.InterruptMode.InterruptEdgeHigh); interruptPort.OnInterrupt += InterruptPortOnInterrupt; interruptPort.EnableInterrupt(); }