diff --git a/Raspberry.IO.Components/Controllers/Pca9685/PwmChannel.cs b/Raspberry.IO.Components/Controllers/Pca9685/PwmChannel.cs
old mode 100644
new mode 100755
index 696d332..99ae1ec
--- a/Raspberry.IO.Components/Controllers/Pca9685/PwmChannel.cs
+++ b/Raspberry.IO.Components/Controllers/Pca9685/PwmChannel.cs
@@ -17,5 +17,9 @@ public enum PwmChannel
C9 = 9,
C10 = 10,
C11 = 11,
+ C12 = 12,
+ C13 = 13,
+ C14 = 14,
+ C15 = 15
}
}
\ No newline at end of file
diff --git a/Raspberry.IO/Raspberry.IO.csproj b/Raspberry.IO/Raspberry.IO.csproj
index e58e755..b40fd49 100644
--- a/Raspberry.IO/Raspberry.IO.csproj
+++ b/Raspberry.IO/Raspberry.IO.csproj
@@ -59,4 +59,4 @@
-->
-
+
\ No newline at end of file
diff --git a/RaspberrySharp.IO.sln b/RaspberrySharp.IO.sln
index def0123..a905ee0 100644
--- a/RaspberrySharp.IO.sln
+++ b/RaspberrySharp.IO.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raspberry.IO.GeneralPurpose", "Raspberry.IO.GeneralPurpose\Raspberry.IO.GeneralPurpose.csproj", "{281C71ED-C36D-408E-8BAA-75C381DC17E7}"
EndProject
@@ -66,6 +66,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raspberry.IO.Interop", "Ras
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Gpio.Ds1307", "Tests\Test.Gpio.Ds1307\Test.Gpio.Ds1307.csproj", "{E9412139-F9EA-4E39-AB7C-CE775ED06C82}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Components.Sensors.Distance.HcSr04", "Tests\Test.Components.Sensors.Distance.HcSr04\Test.Components.Sensors.Distance.HcSr04.csproj", "{A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -172,6 +174,10 @@ Global
{E9412139-F9EA-4E39-AB7C-CE775ED06C82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E9412139-F9EA-4E39-AB7C-CE775ED06C82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E9412139-F9EA-4E39-AB7C-CE775ED06C82}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -198,6 +204,7 @@ Global
{99EB3D1A-F0B7-454E-BB50-9B2F5349BC5B} = {C39D0CC3-C0F2-4B58-8779-2CCB5B52534C}
{CAF876A0-0FCB-44F7-96F1-53704CB6015F} = {C39D0CC3-C0F2-4B58-8779-2CCB5B52534C}
{E9412139-F9EA-4E39-AB7C-CE775ED06C82} = {15ECD485-B3FD-4B6F-8491-7489DFFC89BC}
+ {A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5} = {15ECD485-B3FD-4B6F-8491-7489DFFC89BC}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
Policies = $0
diff --git a/Tests/Test.Components.Sensors.Distance.HcSr04/App.config b/Tests/Test.Components.Sensors.Distance.HcSr04/App.config
new file mode 100644
index 0000000..731f6de
--- /dev/null
+++ b/Tests/Test.Components.Sensors.Distance.HcSr04/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tests/Test.Components.Sensors.Distance.HcSr04/Program.cs b/Tests/Test.Components.Sensors.Distance.HcSr04/Program.cs
new file mode 100644
index 0000000..75ed430
--- /dev/null
+++ b/Tests/Test.Components.Sensors.Distance.HcSr04/Program.cs
@@ -0,0 +1,157 @@
+using System;
+using Raspberry.IO.Components.Sensors.Distance.HcSr04;
+using Raspberry.IO.GeneralPurpose;
+using UnitsNet;
+using System.Threading;
+
+namespace Test.Components.Sensors.Distance.HcSr04
+{
+ class Program
+ {
+ private static GpioConnectionDriver driver;
+ private static HcSr04Connection sensor;
+ private static GpioOutputBinaryPin triggerGpioPin;
+ private static GpioInputBinaryPin echoGpioPin;
+
+ private static int triggerGpioPinSetting = 0;
+ private static int echoGpioPinSetting = 0;
+ private static int delay = 500;
+ private static int readError = 0;
+
+ static void Main(string[] args)
+ {
+ //Configure GPIO pins bellow or provide in console
+ //triggerGpioPinSetting = 20;
+ //echoGpioPinSetting = 26;
+
+ //Reads GPIO pins from console
+ if (triggerGpioPinSetting == 0)
+ triggerGpioPinSetting = GetGpioPin("trigger");
+ if (echoGpioPinSetting == 0)
+ echoGpioPinSetting = GetGpioPin("echo");
+
+ Console.CursorVisible = false;
+
+ //Creating sensor
+ driver = new GpioConnectionDriver();
+ triggerGpioPin = new GpioOutputBinaryPin(driver, (ProcessorPin)triggerGpioPinSetting);
+ echoGpioPin = new GpioInputBinaryPin(driver, (ProcessorPin)echoGpioPinSetting);
+ sensor = new HcSr04Connection(triggerGpioPin, echoGpioPin);
+
+ while(true)
+ {
+ if (Console.KeyAvailable)
+ KeyPressed();
+
+ try
+ {
+ //Get data from sensor and print them
+ Length distance = sensor.GetDistance();
+ PrintHeader();
+ PrintData(distance);
+ PrintFooter();
+ }
+ catch
+ {
+ readError++;
+ }
+
+ Thread.Sleep(delay);
+ }
+ }
+
+ ///
+ /// Console read key support
+ ///
+ private static void KeyPressed()
+ {
+ ConsoleKeyInfo cki = Console.ReadKey();
+ switch (cki.Key)
+ {
+ case ConsoleKey.UpArrow:
+ delay = delay > 50 ? delay - 50 : delay;
+ break;
+ case ConsoleKey.DownArrow:
+ delay = delay < 1000 ? delay + 50 : delay;
+ break;
+ case ConsoleKey.Escape:
+ Environment.Exit(0);
+ break;
+ }
+
+ if (Console.KeyAvailable)
+ KeyPressed();
+ }
+
+ ///
+ /// Get GPIO pins from console
+ ///
+ /// GPIO pin usage
+ /// Error message
+ ///
+ private static int GetGpioPin(string pinName, string message = "")
+ {
+ PrintHeader();
+ Console.WriteLine();
+
+ if (!string.IsNullOrEmpty(message))
+ {
+ Console.WriteLine(message);
+ Console.WriteLine();
+ }
+
+ Console.Write(string.Format(" Please enter GPIO pin number for {0} pin: ", pinName));
+
+ string answer = Console.ReadLine();
+ int pin;
+ bool result = int.TryParse(answer, out pin);
+ if(result)
+ {
+ if (pin > 32)
+ return GetGpioPin(pinName, string.Format(" Error. Value {0} is to big", pin));
+ return pin;
+ }
+ else
+ {
+ return GetGpioPin(string.Format(pinName, "Error. Unable parse string {0}", answer));
+ }
+ }
+
+ #region Print Methods
+
+ private static void PrintHeader()
+ {
+ Console.Clear();
+ Console.WriteLine();
+ Console.WriteLine(" #################################");
+ Console.WriteLine(" # Demo pogram for sensor HCSR04 #");
+ Console.WriteLine(" #################################");
+ Console.WriteLine();
+ if(triggerGpioPinSetting != 0)
+ Console.WriteLine(" Trigger pin GPIO{0}", triggerGpioPinSetting);
+ if(echoGpioPinSetting != 0)
+ Console.WriteLine(" Echo pin GPIO{0}", echoGpioPinSetting);
+ }
+
+ private static void PrintData(Length length)
+ {
+ Console.WriteLine(" Reads {0:0.0} per secound [Hz]", 1000.0 / delay);
+ Console.WriteLine();
+ Console.WriteLine(" Read errors {0}", readError);
+ Console.WriteLine(" Length {0,5:0.0} cm", length.Centimeters);
+ Console.WriteLine(" Length {0,5:0.0} inch", length.Inches);
+ }
+
+ private static void PrintFooter()
+ {
+ if (Console.WindowHeight < 17)
+ return;
+ Console.SetCursorPosition(0, Console.WindowHeight - 4);
+ Console.WriteLine(" Press arrow up to increase read sppead");
+ Console.WriteLine(" Press arrow down to decrease read sppead");
+ Console.WriteLine(" Press escape key to exit");
+ }
+
+ #endregion
+ }
+}
diff --git a/Tests/Test.Components.Sensors.Distance.HcSr04/Properties/AssemblyInfo.cs b/Tests/Test.Components.Sensors.Distance.HcSr04/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3f53fc0
--- /dev/null
+++ b/Tests/Test.Components.Sensors.Distance.HcSr04/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Test.Components.Sensors.Distance.HcSr04")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Test.Components.Sensors.Distance.HcSr04")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a2d800af-749c-4b8f-8cc6-7b5e99f3eac5")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Tests/Test.Components.Sensors.Distance.HcSr04/Test.Components.Sensors.Distance.HcSr04.csproj b/Tests/Test.Components.Sensors.Distance.HcSr04/Test.Components.Sensors.Distance.HcSr04.csproj
new file mode 100644
index 0000000..d32e889
--- /dev/null
+++ b/Tests/Test.Components.Sensors.Distance.HcSr04/Test.Components.Sensors.Distance.HcSr04.csproj
@@ -0,0 +1,79 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {A2D800AF-749C-4B8F-8CC6-7B5E99F3EAC5}
+ Exe
+ Properties
+ Test.Components.Sensors.Distance.HcSr04
+ Test.Components.Sensors.Distance.HcSr04
+ v4.6.1
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\packages\UnitsNet.3.49.0\lib\net35\UnitsNet.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+ {8388cfca-e3db-43f7-b049-2cb195211ce8}
+ Raspberry.IO.Components
+
+
+ {281c71ed-c36d-408e-8baa-75c381dc17e7}
+ Raspberry.IO.GeneralPurpose
+
+
+ {ace64f17-87e5-43e7-97a0-bdde19059c61}
+ Raspberry.IO
+
+
+
+
+
\ No newline at end of file
diff --git a/Tests/Test.Components.Sensors.Distance.HcSr04/packages.config b/Tests/Test.Components.Sensors.Distance.HcSr04/packages.config
new file mode 100644
index 0000000..4d06382
--- /dev/null
+++ b/Tests/Test.Components.Sensors.Distance.HcSr04/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file