module ADcon
open System
open System.Threading
open RaspberryPiDotNet
type ADcon() =
static let SPICLK = new GPIOMem(GPIOPins.V2_Pin_P1_23)
static let SPIMISO = new GPIOMem (GPIOPins.V2_Pin_P1_21)
static let SPIMOSI = new GPIOMem (GPIOPins.V2_Pin_P1_19)
static let SPICS = new GPIOMem (GPIOPins.V2_Pin_P1_24)
static let mutable distance: int array = Array.zeroCreate 4
static let IrLED : GPIOMem array =
[| new GPIOMem(GPIOPins.V2_Pin_P1_07);
new GPIOMem (GPIOPins.V2_Pin_P1_11);
new GPIOMem (GPIOPins.V2_Pin_P1_13);
new GPIOMem (GPIOPins.V2_Pin_P1_15) |]
do
for i =0 to IrLED.Length-1 do
IrLED.[i].PinDirection = GPIODirection.Out |> ignore
SPICLK.PinDirection <- GPIODirection.Out
SPIMISO.PinDirection <- GPIODirection.In
SPIMOSI.PinDirection <- GPIODirection.Out
SPICS.PinDirection <- GPIODirection.Out
member public this.adGet=
for adcnum=0 to 3 do
IrLED.[adcnum].Write(true)
let mcp3208 = new MCP3008(adcnum, SPICLK,SPIMOSI,SPIMISO,SPICS)
distance.[adcnum] <- mcp3208.AnalogToDigital
IrLED.[adcnum].Write(false)
member public this.Distance(i:int)=
distance.[i]
|
1
2
3
4
5
6
7 SPIのプロトコルに対応した
8 ピンのオブジェクトを作る
9
10
11 4つの距離測定値を入れる配列
12
13 LEDのオブジェクトの配列
14
15
16
17
18
19 LEDを出力に設定する
20
21 SPIの各々のピンの入出力を設定
22
23
24
25
26
27
28 LED点灯
29
30 反射光測定
31 LED消灯
32 距離値を返す関数
33
|