forked from dotnet/iot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DigitalInput.cs
73 lines (64 loc) · 2.24 KB
/
DigitalInput.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Collections.Generic;
using System.Device.Gpio;
using Iot.Device.GrovePiDevice.Models;
namespace Iot.Device.GrovePiDevice.Sensors
{
/// <summary>
/// DigitalInput is a generic calss for digital input
/// </summary>
public class DigitalInput
{
/// <summary>
/// Only Digital ports including the analog sensors (A0 = D14, A1 = D15, A2 = D16)
/// </summary>
public static List<GrovePort> SupportedPorts => new List<GrovePort>()
{
GrovePort.DigitalPin2,
GrovePort.DigitalPin3,
GrovePort.DigitalPin4,
GrovePort.DigitalPin5,
GrovePort.DigitalPin6,
GrovePort.DigitalPin7,
GrovePort.DigitalPin8,
GrovePort.DigitalPin14,
GrovePort.DigitalPin15,
GrovePort.DigitalPin16
};
internal GrovePi _grovePi;
/// <summary>
/// DigitalInput constructor
/// </summary>
/// <param name="grovePi">The GrovePi class</param>
/// <param name="port">The grove Port, need to be in the list of SupportedPorts</param>
public DigitalInput(GrovePi grovePi, GrovePort port)
{
if (!SupportedPorts.Contains(port))
{
throw new ArgumentException(nameof(port), "Grove port not supported");
}
_grovePi = grovePi;
Port = port;
_grovePi.PinMode(Port, PinMode.Input);
}
/// <summary>
/// Get the pin level, either high either low
/// </summary>
public PinValue Value => _grovePi.DigitalRead(Port);
/// <summary>
/// Returns the value as a string
/// </summary>
/// <returns>Returns the value as a string</returns>
public override string ToString() => Value.ToString();
/// <summary>
/// Get the name Digital Input
/// </summary>
public string SensorName => "Digital Input";
/// <summary>
/// grove sensor port
/// </summary>
public GrovePort Port { get; internal set; }
}
}