Adds classes for raspberry pi
This commit is contained in:
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@@ -11,6 +11,7 @@
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="useAutoImport" value="true" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
|
||||
11
.idea/libraries/Gradle__com_pi4j_pi4j_core_1_1.xml
generated
Normal file
11
.idea/libraries/Gradle__com_pi4j_pi4j_core_1_1.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Gradle: com.pi4j:pi4j-core:1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.pi4j/pi4j-core/1.1/a9d5bdad79287c6e91d49ccbbc388141ad3b6b4e/pi4j-core-1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.pi4j/pi4j-core/1.1/a0d03930cc29bc66a5807f9cf68536b9a8feb81a/pi4j-core-1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
1
.idea/modules/IOBoard_main.iml
generated
1
.idea/modules/IOBoard_main.iml
generated
@@ -11,6 +11,7 @@
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Gradle: org.apache.commons:commons-math3:3.6.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: io.mraa:mraa:1.5.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.pi4j:pi4j-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
1
.idea/modules/IOBoard_test.iml
generated
1
.idea/modules/IOBoard_test.iml
generated
@@ -12,6 +12,7 @@
|
||||
<orderEntry type="module" module-name="IOBoard_main" />
|
||||
<orderEntry type="library" name="Gradle: org.apache.commons:commons-math3:3.6.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: io.mraa:mraa:1.5.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.pi4j:pi4j-core:1.1" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" name="Gradle: com.google.guava:guava:21.0" level="project" />
|
||||
<orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
|
||||
416
.idea/workspace.xml
generated
416
.idea/workspace.xml
generated
@@ -2,9 +2,16 @@
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="c1cece9d-ba4a-4cc9-b680-4dc0f1ec17bf" name="Default" comment="">
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/gradle.xml" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/modules.xml" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/modules/IOBoard.iml" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogOut.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOutPi.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/gradle.xml" afterPath="$PROJECT_DIR$/.idea/gradle.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/modules/IOBoard_main.iml" afterPath="$PROJECT_DIR$/.idea/modules/IOBoard_main.iml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/modules/IOBoard_test.iml" afterPath="$PROJECT_DIR$/.idea/modules/IOBoard_test.iml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/boardtest.py" afterPath="$PROJECT_DIR$/boardtest.py" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/build.gradle" afterPath="$PROJECT_DIR$/build.gradle" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/.gradle/" />
|
||||
<ignored path="$PROJECT_DIR$/build/" />
|
||||
@@ -29,7 +36,98 @@
|
||||
</system>
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file leaf-file-name="MuxSetup.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="DigitalOut.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="17" column="9" lean-forward="false" selection-start-line="15" selection-start-column="8" selection-end-line="17" selection-end-column="9" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AnalogIn.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogIn.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="696">
|
||||
<caret line="100" column="17" lean-forward="true" selection-start-line="96" selection-start-column="16" selection-end-line="100" selection-end-column="17" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AnalogInPi.java" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogInPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="471">
|
||||
<caret line="71" column="0" lean-forward="true" selection-start-line="71" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="DigitalInPi.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalInPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="95">
|
||||
<caret line="26" column="2" lean-forward="false" selection-start-line="26" selection-start-column="2" selection-end-line="26" selection-end-column="41" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AnalogOutPi.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogOutPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="720">
|
||||
<caret line="48" column="33" lean-forward="false" selection-start-line="48" selection-start-column="33" selection-end-line="48" selection-end-column="33" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="MuxSetupPi.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetupPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="472">
|
||||
<caret line="114" column="17" lean-forward="true" selection-start-line="114" selection-start-column="17" selection-end-line="114" selection-end-column="17" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#2278#2279#0" expanded="true" />
|
||||
<element signature="e#2315#2316#0" expanded="true" />
|
||||
<element signature="e#2351#2352#0" expanded="true" />
|
||||
<element signature="e#2389#2390#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="DigitalOutPi.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOutPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="632">
|
||||
<caret line="64" column="23" lean-forward="true" selection-start-line="64" selection-start-column="23" selection-end-line="64" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
@@ -54,7 +152,7 @@
|
||||
<component name="GradleLocalSettings">
|
||||
<option name="myGradleHomes">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="/usr/local/Cellar/gradle/3.5/libexec" />
|
||||
<entry key="$PROJECT_DIR$" value="$USER_HOME$/.gradle/wrapper/dists/gradle-3.5-all/exhrs6ca08n232b14ue48lbye/gradle-3.5" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="myGradleVersions">
|
||||
@@ -229,8 +327,8 @@
|
||||
</option>
|
||||
<option name="modificationStamps">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="4492443303000" />
|
||||
<entry key="$PROJECT_DIR$/build.gradle" value="209246541" />
|
||||
<entry key="$PROJECT_DIR$" value="4492970445000" />
|
||||
<entry key="$PROJECT_DIR$/build.gradle" value="142808790" />
|
||||
<entry key="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" value="1114575256" />
|
||||
<entry key="$PROJECT_DIR$/settings.gradle" value="4252457423" />
|
||||
</map>
|
||||
@@ -407,22 +505,30 @@
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/src/main/java/DigitalIn.class" />
|
||||
<option value="$PROJECT_DIR$/build.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/boardtest/DigitalIn.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/boardtest/DigitalInMux.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/boardtest/DigitalOut.java" />
|
||||
<option value="$PROJECT_DIR$/settings.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalInMux.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalIn.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogIn.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java" />
|
||||
<option value="$PROJECT_DIR$/boardtest.py" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogOut.java" />
|
||||
<option value="$PROJECT_DIR$/build.gradle" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalInPi.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOutPi.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogOutPi.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetupPi.java" />
|
||||
<option value="$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogInPi.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="y" value="23" />
|
||||
<option name="width" value="1680" />
|
||||
<option name="height" value="1050" />
|
||||
<option name="height" value="1027" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectView">
|
||||
@@ -440,7 +546,7 @@
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scratches" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
@@ -453,15 +559,54 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="IOBoard" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="IOBoard" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="src" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="IOBoard" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="IOBoard" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="src" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="main" />
|
||||
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="java" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="io" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scratches" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="FullScreen" value="true" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
@@ -698,7 +843,8 @@
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="0" y="0" width="1680" height="1050" extended-state="0" />
|
||||
<frame x="0" y="23" width="1680" height="1027" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
@@ -706,7 +852,7 @@
|
||||
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32901296" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32901296" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
@@ -738,6 +884,70 @@
|
||||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="17" column="9" lean-forward="false" selection-start-line="15" selection-start-column="8" selection-end-line="17" selection-end-column="9" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogIn.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1590">
|
||||
<caret line="108" column="0" lean-forward="true" selection-start-line="9" selection-start-column="4" selection-end-line="108" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogInPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1005">
|
||||
<caret line="72" column="42" lean-forward="true" selection-start-line="72" selection-start-column="42" selection-end-line="72" selection-end-column="42" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetupPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1320">
|
||||
<caret line="95" column="0" lean-forward="true" selection-start-line="95" selection-start-column="0" selection-end-line="95" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#2278#2279#0" expanded="true" />
|
||||
<element signature="e#2315#2316#0" expanded="true" />
|
||||
<element signature="e#2351#2352#0" expanded="true" />
|
||||
<element signature="e#2389#2390#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOutPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1230">
|
||||
<caret line="82" column="55" lean-forward="true" selection-start-line="82" selection-start-column="55" selection-end-line="82" selection-end-column="55" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalInPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1065">
|
||||
<caret line="78" column="0" lean-forward="true" selection-start-line="78" selection-start-column="0" selection-end-line="78" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1260">
|
||||
@@ -750,9 +960,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="630">
|
||||
<caret line="46" column="25" lean-forward="false" selection-start-line="46" selection-start-column="25" selection-end-line="46" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -761,7 +969,7 @@
|
||||
<state relative-caret-position="315">
|
||||
<caret line="27" column="44" lean-forward="false" selection-start-line="27" selection-start-column="44" selection-end-line="27" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="imports" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@@ -786,9 +994,7 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="630">
|
||||
<caret line="46" column="25" lean-forward="true" selection-start-line="46" selection-start-column="25" selection-end-line="46" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -797,7 +1003,7 @@
|
||||
<state relative-caret-position="315">
|
||||
<caret line="27" column="44" lean-forward="false" selection-start-line="27" selection-start-column="44" selection-end-line="27" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="imports" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@@ -812,37 +1018,10 @@
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/DigitalIn.java" />
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/boardtest/DigitalIn.java" />
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1260">
|
||||
<caret line="89" column="9" lean-forward="false" selection-start-line="89" selection-start-column="9" selection-end-line="89" selection-end-column="9" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogIn.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="831">
|
||||
<caret line="100" column="17" lean-forward="false" selection-start-line="100" selection-start-column="17" selection-end-line="100" selection-end-column="17" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/settings.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="270">
|
||||
<caret line="18" column="0" lean-forward="true" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="n#!!doc" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/gradlew.bat">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -850,27 +1029,6 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="420">
|
||||
<caret line="28" column="4" lean-forward="false" selection-start-line="28" selection-start-column="4" selection-end-line="28" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="n#!!doc" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="630">
|
||||
<caret line="46" column="25" lean-forward="false" selection-start-line="46" selection-start-column="25" selection-end-line="46" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -878,6 +1036,120 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="315">
|
||||
<caret line="27" column="44" lean-forward="false" selection-start-line="27" selection-start-column="44" selection-end-line="27" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/boardtest.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="522">
|
||||
<caret line="40" column="20" lean-forward="false" selection-start-line="40" selection-start-column="20" selection-end-line="40" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/settings.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="17" column="28" lean-forward="true" selection-start-line="17" selection-start-column="28" selection-end-line="17" selection-end-column="28" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build.gradle">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="390">
|
||||
<caret line="32" column="0" lean-forward="true" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogOut.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="360">
|
||||
<caret line="24" column="0" lean-forward="false" selection-start-line="24" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOut.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="17" column="9" lean-forward="false" selection-start-line="15" selection-start-column="8" selection-end-line="17" selection-end-column="9" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetup.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/src.zip!/java/time/Duration.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="559">
|
||||
<caret line="647" column="7" lean-forward="false" selection-start-line="647" selection-start-column="7" selection-end-line="647" selection-end-column="7" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalOutPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="632">
|
||||
<caret line="64" column="23" lean-forward="true" selection-start-line="64" selection-start-column="23" selection-end-line="64" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogIn.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="696">
|
||||
<caret line="100" column="17" lean-forward="true" selection-start-line="96" selection-start-column="16" selection-end-line="100" selection-end-column="17" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/DigitalInPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="95">
|
||||
<caret line="26" column="2" lean-forward="false" selection-start-line="26" selection-start-column="2" selection-end-line="26" selection-end-column="41" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/MuxSetupPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="472">
|
||||
<caret line="114" column="17" lean-forward="true" selection-start-line="114" selection-start-column="17" selection-end-line="114" selection-end-column="17" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#2278#2279#0" expanded="true" />
|
||||
<element signature="e#2315#2316#0" expanded="true" />
|
||||
<element signature="e#2351#2352#0" expanded="true" />
|
||||
<element signature="e#2389#2390#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogOutPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="720">
|
||||
<caret line="48" column="33" lean-forward="false" selection-start-line="48" selection-start-column="33" selection-end-line="48" selection-end-column="33" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/io/AnalogInPi.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="471">
|
||||
<caret line="71" column="0" lean-forward="true" selection-start-line="71" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
|
||||
430
HPOCV11/HPOCV11.ino
Executable file
430
HPOCV11/HPOCV11.ino
Executable file
@@ -0,0 +1,430 @@
|
||||
#include <SPI.h>
|
||||
|
||||
#define ON 1
|
||||
#define OFF 0
|
||||
#define TIMREADA2D 0
|
||||
#define TIMCLICKRELAY 1
|
||||
#define TIMFLASHEDISONLED 2
|
||||
#define TIMWRITED2A 3
|
||||
#define TIMREADDIGS 4
|
||||
|
||||
void AnalogIn(void);
|
||||
void AnalogOut(void);
|
||||
void FlashEdisonLED(void);
|
||||
void Relays(void);
|
||||
void ReadDigitals(void);
|
||||
void Timers(void);
|
||||
|
||||
unsigned int anout1; // Analog output value 1 - 0xFFFF (0 - 20mA)
|
||||
unsigned int anout2; // Analog output value 2 - 0xFFFF (0 - 20mA)
|
||||
unsigned int anin1; // Analog output value 1 - 0xFFFF (0-20mA, 0-10V, 0-5V)
|
||||
unsigned int anin2; // Analog output value 2 - 0xFFFF (0-20mA, 0-10V, 0-5V)
|
||||
unsigned int anin3; // Analog output value 3 - 0xFFFF (0-20mA, 0-10V, 0-5V)
|
||||
unsigned int anin4; // Analog output value 4 - 0xFFFF (0-20mA, 0-10V, 0-5V)
|
||||
|
||||
// unsigned char edisonled; // flag for led on edison cannot use since messes with SPI
|
||||
unsigned char redled; // flag for red status led
|
||||
unsigned char greenled; // flag for green status led
|
||||
unsigned char relay1, relay2, relay3, relay4, relay5, relay6; // Flags for control of relays
|
||||
unsigned char digin1, digin2, digin3, digin4, digin5, digin6, digin7, digin8; // Flags show dig input state
|
||||
unsigned long oldticker;
|
||||
unsigned int ticker; // Millisecond counter
|
||||
unsigned int timers[10];
|
||||
|
||||
void setup()
|
||||
{
|
||||
anout1 = 0;
|
||||
anout2 = 0;
|
||||
relay1 = 0;
|
||||
relay2 = 0;
|
||||
relay3 = 0;
|
||||
relay4 = 0;
|
||||
relay5 = 0;
|
||||
relay6 = 0;
|
||||
redled = 0;
|
||||
greenled = 0;
|
||||
pinMode(0, OUTPUT); // Relay 1
|
||||
pinMode(1, OUTPUT); // Relay 2
|
||||
pinMode(2, OUTPUT); // Relay 3
|
||||
pinMode(3, OUTPUT); // Relay 4
|
||||
pinMode(4, OUTPUT); // Relay 5
|
||||
pinMode(5, OUTPUT); // Relay 6
|
||||
pinMode(6, OUTPUT); // D2A CS
|
||||
pinMode(8, OUTPUT); // Red board LED
|
||||
pinMode(9, OUTPUT); // Green board LED
|
||||
pinMode(11, OUTPUT); // SPI Out data
|
||||
pinMode(12, INPUT); // SPI In data
|
||||
pinMode(13, OUTPUT); // SPI CLK & Board LED)
|
||||
pinMode(A5, INPUT);
|
||||
pinMode(A0, OUTPUT); // Channel select LSB
|
||||
pinMode(A1, OUTPUT); // Channel select 2nd bit
|
||||
pinMode(A2, OUTPUT); // Channel select MSB
|
||||
pinMode(A3, INPUT); // Result from reading digital inputs
|
||||
|
||||
|
||||
// SPISettings settingsA(2000000, MSBFIRST, SPI_MODE1);
|
||||
// SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));
|
||||
SPI.begin();
|
||||
SPI.setBitOrder(MSBFIRST);
|
||||
Serial.begin(9600);
|
||||
pinMode(SS, OUTPUT);
|
||||
}
|
||||
|
||||
void Relays(void)
|
||||
{
|
||||
if (relay1 == 1)
|
||||
digitalWrite(0, HIGH);
|
||||
else
|
||||
digitalWrite(0, LOW);
|
||||
if (relay2 == 1)
|
||||
digitalWrite(1, HIGH);
|
||||
else
|
||||
digitalWrite(1, LOW);
|
||||
if (relay3 == 1)
|
||||
digitalWrite(2, HIGH);
|
||||
else
|
||||
digitalWrite(2, LOW);
|
||||
if (relay4 == 1)
|
||||
digitalWrite(3, HIGH);
|
||||
else
|
||||
digitalWrite(3, LOW);
|
||||
if (relay5 == 1)
|
||||
digitalWrite(4, HIGH);
|
||||
else
|
||||
digitalWrite(4, LOW);
|
||||
if (relay6 == 1)
|
||||
digitalWrite(5, HIGH);
|
||||
else
|
||||
digitalWrite(5, LOW);
|
||||
}
|
||||
|
||||
void LEDs(void)
|
||||
{
|
||||
if (redled == 1)
|
||||
digitalWrite(8, HIGH);
|
||||
else
|
||||
digitalWrite(8, LOW);
|
||||
if (greenled == 1)
|
||||
digitalWrite(9, HIGH);
|
||||
else
|
||||
digitalWrite(9, LOW);
|
||||
}
|
||||
|
||||
|
||||
void Timers(void)
|
||||
{
|
||||
unsigned char x;
|
||||
unsigned long milli;
|
||||
milli = millis();
|
||||
if (milli == oldticker)
|
||||
return;
|
||||
oldticker = milli;
|
||||
ticker++;
|
||||
for (x=0; x<10;x++)
|
||||
{
|
||||
if(timers[x] > 0) timers[x]--;
|
||||
}
|
||||
// anout1++;
|
||||
}
|
||||
|
||||
|
||||
void AnalogOut(void)
|
||||
{
|
||||
static unsigned char x = 8;
|
||||
static unsigned char diff;
|
||||
|
||||
unsigned char val;
|
||||
unsigned int val16;
|
||||
unsigned int incomingByte;
|
||||
if (timers[TIMWRITED2A])
|
||||
return;
|
||||
anout1++;
|
||||
// SPI.beginTransaction(2000000, MSBFIRST, SPI_MODE1);
|
||||
digitalWrite(6, LOW);
|
||||
val = 16; // Chan A
|
||||
SPI.transfer(x);
|
||||
if (diff == 1) x++;
|
||||
if (diff == 2) x--;
|
||||
diff = 0;
|
||||
val16 = anout1;
|
||||
val16 = val16 >> 8;
|
||||
val = val16 & 0xFF;
|
||||
SPI.transfer(0);
|
||||
// SPI.transfer(val);
|
||||
val = anout1 & 0xFF;
|
||||
SPI.transfer(val);
|
||||
// SPI.transfer(0);
|
||||
|
||||
/*
|
||||
Serial.print(x);
|
||||
Serial.print("\n");
|
||||
|
||||
if (Serial.available() > 0)
|
||||
{
|
||||
incomingByte = Serial.read();
|
||||
if (incomingByte == '.') diff = 1;
|
||||
if (incomingByte == ',') diff = 2;
|
||||
if (incomingByte == ' ') diff = 0;
|
||||
}
|
||||
*/
|
||||
timers[TIMWRITED2A] = 100;
|
||||
digitalWrite(6, HIGH);
|
||||
|
||||
}
|
||||
|
||||
void AnalogIn(void)
|
||||
{
|
||||
unsigned char a,b,c;
|
||||
unsigned int x;
|
||||
static unsigned char chan = 0;
|
||||
if (timers[TIMREADA2D])
|
||||
return;
|
||||
|
||||
switch(chan)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
digitalWrite(A0, LOW); // Need to set up mux for each A2D like the relays
|
||||
digitalWrite(A1, LOW);
|
||||
digitalWrite(A2, LOW);
|
||||
a = SPI.transfer(0);
|
||||
b = SPI.transfer(0);
|
||||
c = SPI.transfer(0);
|
||||
/* Serial.print(a);
|
||||
Serial.print(",");
|
||||
Serial.print(b);
|
||||
Serial.print(",");
|
||||
Serial.print(c);
|
||||
Serial.print(",");
|
||||
*/ if (c == 13) // 13 good reading, 45 overrange, anything else A2D not ready
|
||||
{
|
||||
x = (unsigned int) a * 256;
|
||||
x = x + b;
|
||||
if (x >= 32767) // wrong ref fix
|
||||
{ // wrong ref fix
|
||||
x = x - 32767; // wrong ref fix
|
||||
x = x * 2; // wrong ref fix
|
||||
} // wrong ref fix
|
||||
}
|
||||
else
|
||||
x = 0;
|
||||
anin1 = x;
|
||||
break;
|
||||
}
|
||||
|
||||
case 1:
|
||||
{
|
||||
digitalWrite(A0, HIGH); // Need to set up mux for each A2D like the relays
|
||||
digitalWrite(A1, LOW);
|
||||
digitalWrite(A2, LOW);
|
||||
a = SPI.transfer(0);
|
||||
b = SPI.transfer(0);
|
||||
c = SPI.transfer(0);
|
||||
if (c == 13) // 13 good reading, 45 overrange, anything else A2D not ready
|
||||
{
|
||||
x = (unsigned int) a * 256;
|
||||
x = x + b;
|
||||
if (x >= 32767) // wrong ref fix
|
||||
{ // wrong ref fix
|
||||
x = x - 32767; // wrong ref fix
|
||||
x = x * 2; // wrong ref fix
|
||||
} // wrong ref fix
|
||||
else
|
||||
x = 0;
|
||||
anin2 = x;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
digitalWrite(A0, LOW); // Need to set up mux for each A2D like the relays
|
||||
digitalWrite(A1, HIGH);
|
||||
digitalWrite(A2, LOW);
|
||||
a = SPI.transfer(0);
|
||||
b = SPI.transfer(0);
|
||||
c = SPI.transfer(0);
|
||||
if (c == 13) // 13 good reading, 45 overrange, anything else A2D not ready
|
||||
{
|
||||
x = (unsigned int) a * 256;
|
||||
x = x + b;
|
||||
if (x >= 32767) // wrong ref fix
|
||||
{ // wrong ref fix
|
||||
x = x - 32767; // wrong ref fix
|
||||
x = x * 2; // wrong ref fix
|
||||
} // wrong ref fix
|
||||
}
|
||||
else
|
||||
x = 0;
|
||||
anin3 = x;
|
||||
break;
|
||||
}
|
||||
|
||||
case 3:
|
||||
{
|
||||
digitalWrite(A0, HIGH); // Need to set up mux for each A2D like the relays
|
||||
digitalWrite(A1, HIGH);
|
||||
digitalWrite(A2, LOW);
|
||||
a = SPI.transfer(0);
|
||||
b = SPI.transfer(0);
|
||||
c = SPI.transfer(0);
|
||||
if (c == 13) // 13 good reading, 45 overrange, anything else A2D not ready
|
||||
{
|
||||
x = (unsigned int) a * 256;
|
||||
x = x + b;
|
||||
if (x >= 32767) // wrong ref fix
|
||||
{ // wrong ref fix
|
||||
x = x - 32767; // wrong ref fix
|
||||
x = x * 2; // wrong ref fix
|
||||
} // wrong ref fix
|
||||
}
|
||||
else
|
||||
x = 0;
|
||||
anin4 = x;
|
||||
break;
|
||||
}
|
||||
|
||||
default: ;
|
||||
}
|
||||
|
||||
chan++;
|
||||
if(chan > 3)
|
||||
chan = 0;
|
||||
|
||||
Serial.print(anin1);
|
||||
Serial.print(",");
|
||||
Serial.print(anin2);
|
||||
Serial.print(",");
|
||||
Serial.print(anin3);
|
||||
Serial.print(",");
|
||||
Serial.print(anin4);
|
||||
Serial.print("\n");
|
||||
timers[TIMREADA2D] = 1000;
|
||||
}
|
||||
|
||||
|
||||
void ReadDigitals(void)
|
||||
{
|
||||
if (timers[TIMREADDIGS])
|
||||
return;
|
||||
digitalWrite(A0, LOW);
|
||||
digitalWrite(A1, LOW);
|
||||
digitalWrite(A2, LOW);
|
||||
if (digitalRead(A3))
|
||||
digin1 = 0;
|
||||
else
|
||||
digin1 = 1;
|
||||
|
||||
digitalWrite(A0, HIGH);
|
||||
digitalWrite(A1, LOW);
|
||||
if (digitalRead(A3))
|
||||
digin2 = 0;
|
||||
else
|
||||
digin2 = 1;
|
||||
|
||||
digitalWrite(A0, LOW);
|
||||
digitalWrite(A1, HIGH);
|
||||
if (digitalRead(A3))
|
||||
digin3 = 0;
|
||||
else
|
||||
digin3 = 1;
|
||||
|
||||
digitalWrite(A0, HIGH);
|
||||
digitalWrite(A1, HIGH);
|
||||
if (digitalRead(A3))
|
||||
digin4 = 0;
|
||||
else
|
||||
digin4 = 1;
|
||||
|
||||
digitalWrite(A0, LOW);
|
||||
digitalWrite(A1, LOW);
|
||||
digitalWrite(A2, HIGH);
|
||||
if (digitalRead(A3))
|
||||
digin5 = 0;
|
||||
else
|
||||
digin5 = 1;
|
||||
|
||||
digitalWrite(A0, HIGH);
|
||||
digitalWrite(A1, LOW);
|
||||
if (digitalRead(A3))
|
||||
digin6 = 0;
|
||||
else
|
||||
digin6 = 1;
|
||||
|
||||
digitalWrite(A0, LOW);
|
||||
digitalWrite(A1, HIGH);
|
||||
if (digitalRead(A3))
|
||||
digin7 = 0;
|
||||
else
|
||||
digin7 = 1;
|
||||
digitalWrite(A0, HIGH);
|
||||
digitalWrite(A1, HIGH);
|
||||
if (digitalRead(A3))
|
||||
digin8 = 0;
|
||||
else
|
||||
digin8 = 1;
|
||||
|
||||
timers[TIMREADDIGS] = 500;
|
||||
Serial.print(digin1);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin2);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin3);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin4);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin5);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin6);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin7);
|
||||
Serial.print(", ");
|
||||
Serial.print(digin8);
|
||||
Serial.print(", ");
|
||||
Serial.print("\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void loop() // the loop function runs over and over again forever
|
||||
{
|
||||
AnalogIn();
|
||||
ReadDigitals();
|
||||
LEDs();
|
||||
Timers();
|
||||
Relays();
|
||||
AnalogOut();
|
||||
|
||||
anout1++;
|
||||
|
||||
if (timers[TIMCLICKRELAY] == 0)
|
||||
{
|
||||
if (relay1)
|
||||
{
|
||||
relay1 = 0;
|
||||
relay2 = 1;
|
||||
relay3 = 0;
|
||||
relay4 = 1;
|
||||
relay5 = 0;
|
||||
relay6 = 1;
|
||||
redled = 1;
|
||||
greenled = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
relay1 = 1;
|
||||
relay2 = 0;
|
||||
relay3 = 1;
|
||||
relay4 = 0;
|
||||
relay5 = 1;
|
||||
relay6 = 0;
|
||||
redled = 0;
|
||||
greenled = 1;
|
||||
}
|
||||
timers[TIMCLICKRELAY] = 5000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ pinA2.dir(mraa.DIR_OUT)
|
||||
pinA3 = mraa.Gpio(17)
|
||||
pinA3.dir(mraa.DIR_IN)
|
||||
|
||||
spi_bus = mraa.Spi(0)
|
||||
spi_bus = mraa.Spi(5)
|
||||
print(spi_bus.lsbmode(False))
|
||||
|
||||
|
||||
|
||||
@@ -27,5 +27,6 @@ dependencies {
|
||||
testImplementation 'junit:junit:4.12'
|
||||
|
||||
compile group: 'io.mraa', name: 'mraa', version:'1.5.1'
|
||||
compile group: 'com.pi4j', name: 'pi4j-core', version: '1.1'
|
||||
}
|
||||
|
||||
|
||||
127
pi_boardtest.py
Normal file
127
pi_boardtest.py
Normal file
@@ -0,0 +1,127 @@
|
||||
"""Test the IO Board using a Raspberry Pi."""
|
||||
|
||||
try:
|
||||
import RPi.GPIO as GPIO
|
||||
except RuntimeError:
|
||||
print("Error importing RPi.GPIO! This is probably because you need superuser privileges. You can achieve this by using 'sudo' to run your script")
|
||||
|
||||
import time
|
||||
import spidev
|
||||
|
||||
spi = spidev.SpiDev()
|
||||
spi.open(0, 0)
|
||||
|
||||
GPIO.setmode(GPIO.BOARD)
|
||||
|
||||
if GPIO.getmode() == 11:
|
||||
mux_channels = [5, 6, 13]
|
||||
inp_channel = 19
|
||||
relay_channels = [21, 20, 16, 12, 25, 24, 23, 18]
|
||||
else:
|
||||
mux_channels = [29, 31, 33]
|
||||
inp_channel = 35
|
||||
relay_channels = [40, 38, 36, 32, 22, 18, 16, 12]
|
||||
|
||||
GPIO.setup(mux_channels, GPIO.OUT)
|
||||
GPIO.setup(relay_channels, GPIO.OUT)
|
||||
GPIO.setup(inp_channel, GPIO.IN)
|
||||
|
||||
input_mux = [
|
||||
[],
|
||||
[0, 0, 0], # Input 1
|
||||
[1, 0, 0], # Input 2
|
||||
[0, 1, 0], # Input 3
|
||||
[1, 1, 0], # Input 4
|
||||
[0, 0, 1], # Input 5
|
||||
[1, 0, 1], # Input 6
|
||||
[0, 1, 1], # Input 7
|
||||
[1, 1, 1], # Input 8
|
||||
]
|
||||
|
||||
GPIO_mux = [
|
||||
(),
|
||||
(GPIO.LOW, GPIO.LOW, GPIO.LOW), # 1
|
||||
(GPIO.HIGH, GPIO.LOW, GPIO.LOW), # 2
|
||||
(GPIO.LOW, GPIO.HIGH, GPIO.LOW), # 3
|
||||
(GPIO.HIGH, GPIO.HIGH, GPIO.LOW), # 4
|
||||
(GPIO.LOW, GPIO.LOW, GPIO.HIGH), # 5
|
||||
(GPIO.HIGH, GPIO.LOW, GPIO.HIGH), # 6
|
||||
(GPIO.LOW, GPIO.HIGH, GPIO.HIGH), # 7
|
||||
(GPIO.HIGH, GPIO.HIGH, GPIO.HIGH) # 8
|
||||
]
|
||||
|
||||
|
||||
def relay_write(relay_number, status):
|
||||
"""Write the specified status to the relay at the relay_number."""
|
||||
write_val = GPIO.HIGH if status >= 1 else GPIO.LOW
|
||||
if relay_number <= 8 and relay_number >= 1:
|
||||
GPIO.output(relay_channels[relay_number - 1], write_val)
|
||||
return True
|
||||
else:
|
||||
print("CANNOT WRITE TO A RELAY THAT DOES NOT EXIST: {}".format(relay_number))
|
||||
return False
|
||||
|
||||
|
||||
def relay_loop():
|
||||
"""Set all relays to 1 sequentially, then set all relays to 0 sequentially."""
|
||||
for i in range(1, 9):
|
||||
relay_write(i, 1)
|
||||
time.sleep(1)
|
||||
|
||||
for i in range(1, 9):
|
||||
relay_write(i, 0)
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def read_dig_in(io_port):
|
||||
"""Read IO Board digital input."""
|
||||
if io_port == 0 or io_port > 8:
|
||||
print("CANNOT READ A PORT THAT DOES NOT EXIST: {}".format(io_port))
|
||||
return False
|
||||
GPIO.output(mux_channels, GPIO_mux[io_port])
|
||||
return GPIO.input(inp_channel) == 0
|
||||
|
||||
|
||||
def dig_in_loop():
|
||||
"""Read all digital inputs."""
|
||||
for i in range(1, 9):
|
||||
print("DIGIN {} = {}".format(i, read_dig_in(i)))
|
||||
|
||||
|
||||
def read_analog_in(io_port, verbose=False):
|
||||
"""Read IO Board digital input."""
|
||||
global spi_bus
|
||||
if io_port < 1 or io_port > 4:
|
||||
print("CANNOT READ A PORT THAT DOES NOT EXIST: {}".format(io_port))
|
||||
return False
|
||||
GPIO.output(mux_channels, GPIO_mux[io_port])
|
||||
ok_status = False
|
||||
|
||||
tries = 0
|
||||
while (ok_status is False) and (tries < 5):
|
||||
GPIO.output(mux_channels, GPIO_mux[io_port])
|
||||
x = spi.xfer2(bytearray([0, 0, 0]))
|
||||
if verbose:
|
||||
print((x[0], x[1], x[2]))
|
||||
c_bin = format(x[2], '#010b')[2:]
|
||||
|
||||
if c_bin[-3:] == "101":
|
||||
ok_status = True
|
||||
if verbose:
|
||||
print("OK: {}, Status: {}".format(ok_status, c_bin))
|
||||
print(x[0] * 256 + x[1])
|
||||
if ok_status:
|
||||
return x[0] * 256 + x[1]
|
||||
time.sleep(0.25)
|
||||
tries += 1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# led_flash(10)
|
||||
# relay_loop()
|
||||
dig_in_loop()
|
||||
for x in range(0, 10):
|
||||
for i in range(1, 5):
|
||||
print("Analog {}".format(i))
|
||||
print(read_analog_in(i))
|
||||
GPIO.cleanup()
|
||||
94
src/main/java/com/henrypump/io/AnalogInPi.java
Normal file
94
src/main/java/com/henrypump/io/AnalogInPi.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.henrypump.io;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 6/21/17.
|
||||
*/
|
||||
public class AnalogInPi {
|
||||
public int channel;
|
||||
public int rawValue;
|
||||
public double lastValue;
|
||||
public Instant lastStored = Instant.EPOCH;
|
||||
public double rawMax, rawMin, euMax, euMin;
|
||||
public List<Integer> channelMux;
|
||||
private double[] history = new double[100];
|
||||
|
||||
AnalogInPi(int channel, double rawMin, double rawMax, double euMin, double euMax) {
|
||||
this.channel = channel;
|
||||
this.channelMux = MuxSetupPi.muxValues.get(channel);
|
||||
this.rawMax = rawMax;
|
||||
this.rawMin = rawMin;
|
||||
this.euMax = euMax;
|
||||
this.euMin = euMin;
|
||||
}
|
||||
|
||||
double getHistory(int pointIndex) {
|
||||
return history[pointIndex];
|
||||
}
|
||||
|
||||
double setValue(int value) {
|
||||
// System.out.println(value);
|
||||
this.rawValue = value;
|
||||
double pv = ((euMax - euMin)/(rawMax - rawMin)) * rawValue + (euMax - ((euMax - euMin)/(rawMax - rawMin)) * rawMax);
|
||||
lastValue = pv;
|
||||
lastStored = Instant.now();
|
||||
System.arraycopy(history, 0, history,1, history.length - 1);
|
||||
history[0] = lastValue;
|
||||
// System.out.println(value + " --> " + pv);
|
||||
return pv;
|
||||
}
|
||||
|
||||
double read(MuxSetupPi mux) throws IOException {
|
||||
mux.set(channelMux.get(0), channelMux.get(1), channelMux.get(2));
|
||||
int rawIn = mux.readAnalog();
|
||||
if (rawIn != -1){
|
||||
return setValue(rawIn);
|
||||
} else {
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return lastValue;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
MuxSetupPi mux = null;
|
||||
Instant now = Instant.now();
|
||||
try {
|
||||
mux = new MuxSetupPi();
|
||||
|
||||
System.out.println("Testing Analog Inputs");
|
||||
|
||||
AnalogInPi aI1 = new AnalogInPi(1, 0, 65535, 0, 100);
|
||||
AnalogInPi aI2 = new AnalogInPi(2, 0, 65535, 0, 100);
|
||||
AnalogInPi aI3 = new AnalogInPi(3, 0, 65535, 0, 100);
|
||||
// AnalogInPi aI4 = new AnalogInPi(4, 0, 65535, 0, 100);
|
||||
|
||||
for (int i = 0; i < 50; i++) {
|
||||
|
||||
double a1Val = aI1.read(mux);
|
||||
double a2Val = aI2.read(mux);
|
||||
double a3Val = aI3.read(mux);
|
||||
// double a4Val = aI4.read(mux);
|
||||
now = Instant.now();
|
||||
System.out.println("Input " + aI1.channel + ": " + aI1.lastValue + ", age= " + Duration.between(aI1.lastStored, now).toMillis() + "ms");
|
||||
System.out.println("Input " + aI2.channel + ": " + aI2.lastValue + ", age= " + Duration.between(aI2.lastStored, now).toMillis() + "ms");
|
||||
System.out.println("Input " + aI3.channel + ": " + aI3.lastValue + ", age= " + Duration.between(aI3.lastStored, now).toMillis() + "ms");
|
||||
// System.out.println("Input " + aI4.channel + ": " + aI4.lastValue + ", age= " + Duration.between(aI4.lastStored, now).toMillis() + "ms");
|
||||
System.out.println("--");
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
29
src/main/java/com/henrypump/io/AnalogOut.java
Normal file
29
src/main/java/com/henrypump/io/AnalogOut.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.henrypump.io;
|
||||
|
||||
import mraa.Dir;
|
||||
import mraa.Gpio;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 6/19/17.
|
||||
*/
|
||||
public class AnalogOut {
|
||||
public int channel;
|
||||
Gpio triggerPin;
|
||||
|
||||
AnalogOut(int channel){
|
||||
this.channel = channel;
|
||||
triggerPin = new Gpio(6);
|
||||
triggerPin.dir(Dir.DIR_OUT);
|
||||
}
|
||||
|
||||
public int trigger(int triggerVal){
|
||||
triggerPin.write(triggerVal);
|
||||
return triggerVal;
|
||||
}
|
||||
|
||||
public int write(float writeVal){
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
60
src/main/java/com/henrypump/io/AnalogOutPi.java
Normal file
60
src/main/java/com/henrypump/io/AnalogOutPi.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package com.henrypump.io;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 6/19/17.
|
||||
*/
|
||||
public class AnalogOutPi {
|
||||
public int channel;
|
||||
public int rawValue;
|
||||
public double lastValue;
|
||||
public Instant lastStored = Instant.EPOCH;
|
||||
public double rawMax, rawMin, euMax, euMin;
|
||||
private double m, b;
|
||||
|
||||
|
||||
AnalogOutPi(int channel, double rawMin, double rawMax, double euMin, double euMax){
|
||||
this.channel = channel;
|
||||
this.rawMin = rawMin;
|
||||
this.rawMax = rawMax;
|
||||
this.euMin = euMin;
|
||||
this.euMax = euMax;
|
||||
|
||||
m = (rawMax - rawMin) / (euMax - euMin);
|
||||
b = rawMax - m * euMax;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public int write(MuxSetupPi mux, double writeVal){
|
||||
rawValue = (int) (writeVal * m + b);
|
||||
try {
|
||||
mux.writeAnalog(channel, rawValue);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
try {
|
||||
MuxSetupPi mux = new MuxSetupPi();
|
||||
AnalogOutPi anOut1 = new AnalogOutPi(1, 0, 65535, 0, 100);
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
anOut1.write(mux, (double) (i + 1) * 10.0);
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
} catch (IOException e){
|
||||
e.printStackTrace();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
81
src/main/java/com/henrypump/io/DigitalInPi.java
Normal file
81
src/main/java/com/henrypump/io/DigitalInPi.java
Normal file
@@ -0,0 +1,81 @@
|
||||
package com.henrypump.io;
|
||||
|
||||
import mraa.Dir;
|
||||
import mraa.Gpio;
|
||||
import mraa.Result;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 6/14/17.
|
||||
*/
|
||||
|
||||
public class DigitalInPi {
|
||||
public int channel;
|
||||
public int value;
|
||||
public List<Integer> channelMux;
|
||||
DigitalInPi(int channel){
|
||||
this.channel = channel;
|
||||
this.channelMux = MuxSetupPi.muxValues.get(channel);
|
||||
}
|
||||
|
||||
void setValue(int value){
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
try {
|
||||
MuxSetupPi mux = new MuxSetupPi();
|
||||
|
||||
System.out.println("Testing Digital Inputs");
|
||||
|
||||
|
||||
DigitalInPi dI1 = new DigitalInPi(1);
|
||||
DigitalInPi dI2 = new DigitalInPi(2);
|
||||
DigitalInPi dI3 = new DigitalInPi(3);
|
||||
DigitalInPi dI4 = new DigitalInPi(4);
|
||||
DigitalInPi dI5 = new DigitalInPi(5);
|
||||
DigitalInPi dI6 = new DigitalInPi(6);
|
||||
DigitalInPi dI7 = new DigitalInPi(7);
|
||||
DigitalInPi dI8 = new DigitalInPi(8);
|
||||
|
||||
mux.set(dI1.channelMux.get(0), dI1.channelMux.get(1), dI1.channelMux.get(2));
|
||||
dI1.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI1.channel + ": " + dI1.value);
|
||||
|
||||
mux.set(dI2.channelMux.get(0), dI2.channelMux.get(1), dI2.channelMux.get(2));
|
||||
dI2.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI2.channel + ": " + dI2.value);
|
||||
|
||||
mux.set(dI3.channelMux.get(0), dI3.channelMux.get(1), dI3.channelMux.get(2));
|
||||
dI3.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI3.channel + ": " + dI3.value);
|
||||
|
||||
mux.set(dI4.channelMux.get(0), dI4.channelMux.get(1), dI4.channelMux.get(2));
|
||||
dI4.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI4.channel + ": " + dI4.value);
|
||||
|
||||
mux.set(dI5.channelMux.get(0), dI5.channelMux.get(1), dI5.channelMux.get(2));
|
||||
dI5.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI5.channel + ": " + dI5.value);
|
||||
|
||||
mux.set(dI6.channelMux.get(0), dI6.channelMux.get(1), dI6.channelMux.get(2));
|
||||
dI6.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI6.channel + ": " + dI6.value);
|
||||
|
||||
mux.set(dI7.channelMux.get(0), dI7.channelMux.get(1), dI7.channelMux.get(2));
|
||||
dI7.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI7.channel + ": " + dI7.value);
|
||||
|
||||
mux.set(dI8.channelMux.get(0), dI8.channelMux.get(1), dI8.channelMux.get(2));
|
||||
dI8.setValue(mux.readDigital());
|
||||
System.out.println("Input " + dI8.channel + ": " + dI8.value);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,14 +12,14 @@ public class DigitalOut {
|
||||
Gpio gpioPin;
|
||||
|
||||
DigitalOut(int channel){
|
||||
if ((channel >=0 && channel <=5) || (channel == 8) || (channel == 9)) {
|
||||
this.channel = channel;
|
||||
gpioPin = new Gpio(channel);
|
||||
gpioPin.dir(Dir.DIR_OUT);
|
||||
} else {
|
||||
System.err.println("Error: This channel does not exist,.");
|
||||
System.exit(Result.ERROR_INVALID_PARAMETER.swigValue());
|
||||
}
|
||||
// if ((channel >=0 && channel <=5) || (channel == 8) || (channel == 9)) {
|
||||
this.channel = channel;
|
||||
gpioPin = new Gpio(channel);
|
||||
gpioPin.dir(Dir.DIR_OUT);
|
||||
// } else {
|
||||
// System.err.println("Error: This channel does not exist,.");
|
||||
// System.exit(Result.ERROR_INVALID_PARAMETER.swigValue());
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ public class DigitalOut {
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
DigitalOut dO0 = new DigitalOut(0);
|
||||
DigitalOut dO1 = new DigitalOut(1);
|
||||
DigitalOut dO2 = new DigitalOut(2);
|
||||
DigitalOut dO3 = new DigitalOut(3);
|
||||
DigitalOut dO4 = new DigitalOut(4);
|
||||
DigitalOut dO5 = new DigitalOut(5);
|
||||
DigitalOut redLED = new DigitalOut(8);
|
||||
DigitalOut greenLED = new DigitalOut(9);
|
||||
DigitalOut dO0 = new DigitalOut(21);
|
||||
DigitalOut dO1 = new DigitalOut(20);
|
||||
DigitalOut dO2 = new DigitalOut(16);
|
||||
DigitalOut dO3 = new DigitalOut(12);
|
||||
DigitalOut dO4 = new DigitalOut(25);
|
||||
DigitalOut dO5 = new DigitalOut(24);
|
||||
DigitalOut redLED = new DigitalOut(23);
|
||||
DigitalOut greenLED = new DigitalOut(18);
|
||||
System.out.println("Testing Digital Outputs");
|
||||
|
||||
|
||||
|
||||
142
src/main/java/com/henrypump/io/DigitalOutPi.java
Normal file
142
src/main/java/com/henrypump/io/DigitalOutPi.java
Normal file
@@ -0,0 +1,142 @@
|
||||
package com.henrypump.io;
|
||||
|
||||
import com.pi4j.io.gpio.*;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 6/20/17.
|
||||
*/
|
||||
public class DigitalOutPi {
|
||||
int channel;
|
||||
final GpioController gpio = GpioFactory.getInstance();
|
||||
Pin gpioPin;
|
||||
GpioPinDigitalOutput pin;
|
||||
String pinNumbering = "wPi";
|
||||
|
||||
|
||||
|
||||
|
||||
DigitalOutPi(int channel){
|
||||
if ((channel >=1 && channel <=6) || (channel == 8) || (channel == 9)) {
|
||||
this.channel = channel;
|
||||
|
||||
switch (channel) {
|
||||
case 1:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_29;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_21;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_28;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_20;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_27;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_16;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_26;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_12;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_06;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_25;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_05;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_24;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_04;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_23;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (pinNumbering == "wPi") {
|
||||
gpioPin = RaspiPin.GPIO_01;
|
||||
} else {
|
||||
gpioPin = RaspiPin.GPIO_18;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
pin = gpio.provisionDigitalOutputPin(gpioPin, "Output" + channel, PinState.LOW);
|
||||
pin.setShutdownOptions(true, PinState.LOW);
|
||||
} else {
|
||||
System.err.println("Error: This channel does not exist,.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void write(int value){
|
||||
if (value >= 1) {
|
||||
pin.high();
|
||||
} else {
|
||||
pin.low();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
DigitalOutPi dO1 = new DigitalOutPi(1);
|
||||
DigitalOutPi dO2 = new DigitalOutPi(2);
|
||||
DigitalOutPi dO3 = new DigitalOutPi(3);
|
||||
DigitalOutPi dO4 = new DigitalOutPi(4);
|
||||
DigitalOutPi dO5 = new DigitalOutPi(5);
|
||||
DigitalOutPi dO6 = new DigitalOutPi(6);
|
||||
// DigitalOutPi redLED = new DigitalOut(8);
|
||||
// DigitalOutPi greenLED = new DigitalOut(9);
|
||||
System.out.println("Testing Digital Outputs");
|
||||
|
||||
|
||||
try {
|
||||
dO1.write(1);
|
||||
Thread.sleep(500);
|
||||
dO2.write(1);
|
||||
Thread.sleep(500);
|
||||
dO3.write(1);
|
||||
Thread.sleep(500);
|
||||
dO4.write(1);
|
||||
Thread.sleep(500);
|
||||
dO5.write(1);
|
||||
Thread.sleep(500);
|
||||
dO6.write(1);
|
||||
Thread.sleep(500);
|
||||
dO6.write(0);
|
||||
Thread.sleep(500);
|
||||
dO5.write(0);
|
||||
Thread.sleep(500);
|
||||
dO4.write(0);
|
||||
Thread.sleep(500);
|
||||
dO3.write(0);
|
||||
Thread.sleep(500);
|
||||
dO2.write(0);
|
||||
Thread.sleep(500);
|
||||
dO1.write(0);
|
||||
Thread.sleep(500);
|
||||
|
||||
|
||||
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,7 @@ public class MuxSetup {
|
||||
gpioA3 = new Gpio(17);
|
||||
gpioA3.dir(Dir.DIR_IN);
|
||||
|
||||
spi = new Spi(0);
|
||||
spi = new Spi(5);
|
||||
}
|
||||
|
||||
public int set(int a0val, int a1val, int a2val){
|
||||
|
||||
142
src/main/java/com/henrypump/io/MuxSetupPi.java
Normal file
142
src/main/java/com/henrypump/io/MuxSetupPi.java
Normal file
@@ -0,0 +1,142 @@
|
||||
package com.henrypump.io;
|
||||
|
||||
import com.pi4j.io.gpio.*;
|
||||
import com.pi4j.io.spi.SpiChannel;
|
||||
import com.pi4j.io.spi.SpiDevice;
|
||||
import com.pi4j.io.spi.SpiFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by patrickjmcd on 6/21/17.
|
||||
*/
|
||||
public class MuxSetupPi {
|
||||
|
||||
final GpioController gpio = GpioFactory.getInstance();
|
||||
GpioPinDigitalOutput pinMux1 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_21);
|
||||
GpioPinDigitalOutput pinMux2 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_22);
|
||||
GpioPinDigitalOutput pinMux3 = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_23);
|
||||
GpioPinDigitalInput pinDigitalRead = gpio.provisionDigitalInputPin(RaspiPin.GPIO_24);
|
||||
|
||||
GpioPinDigitalOutput pinAnOutTrigger = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_04, "AnalogOutTrigger", PinState.HIGH);
|
||||
|
||||
private int mux1value = 0;
|
||||
private int mux2value = 0;
|
||||
private int mux3value = 0;
|
||||
|
||||
private SpiDevice spi;
|
||||
|
||||
public static List<List<Integer>> muxValues = Arrays.asList(
|
||||
Arrays.asList(),
|
||||
Arrays.asList(0,0,0),
|
||||
Arrays.asList(1,0,0),
|
||||
Arrays.asList(0,1,0),
|
||||
Arrays.asList(1,1,0),
|
||||
Arrays.asList(0,0,1),
|
||||
Arrays.asList(1,0,1),
|
||||
Arrays.asList(0,1,1),
|
||||
Arrays.asList(1,1,1)
|
||||
);
|
||||
|
||||
MuxSetupPi() throws IOException{
|
||||
spi = SpiFactory.getInstance(SpiChannel.CS0, SpiDevice.DEFAULT_SPI_SPEED, SpiDevice.DEFAULT_SPI_MODE);
|
||||
}
|
||||
|
||||
public int set(int a0val, int a1val, int a2val){
|
||||
this.mux1value = a0val;
|
||||
this.mux2value = a1val;
|
||||
this.mux3value = a2val;
|
||||
return apply();
|
||||
}
|
||||
|
||||
public int apply(){
|
||||
if (mux1value >= 1) {
|
||||
pinMux1.high();
|
||||
} else {
|
||||
pinMux1.low();
|
||||
}
|
||||
|
||||
if (mux2value >= 1) {
|
||||
pinMux2.high();
|
||||
} else {
|
||||
pinMux2.low();
|
||||
}
|
||||
|
||||
if (mux3value >= 1) {
|
||||
pinMux3.high();
|
||||
} else {
|
||||
pinMux3.low();
|
||||
}
|
||||
return mux1value + mux2value * 2 + mux3value * 4;
|
||||
}
|
||||
|
||||
public int readDigital(){
|
||||
if (pinDigitalRead.isHigh()){
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
public void preAnalogWrite(){
|
||||
pinAnOutTrigger.low();
|
||||
}
|
||||
|
||||
public void postAnalogWrite(){
|
||||
pinAnOutTrigger.high();
|
||||
}
|
||||
|
||||
static String toBinary( byte b )
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(8);
|
||||
for( int i = 0; i < 8; i++ )
|
||||
sb.append((b << i % 8 & 0x80) == 0 ? '0' : '1');
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public int writeAnalog(int channel, int rawValue) throws IOException{
|
||||
preAnalogWrite();
|
||||
byte controlBits = (byte) 0b00010000;
|
||||
|
||||
if (channel == 2){
|
||||
controlBits = (byte) 0b00100100;
|
||||
}
|
||||
byte anWrite[] = new byte[]{
|
||||
controlBits,
|
||||
(byte) (rawValue & 0xFF),
|
||||
(byte) ((rawValue >> 8) & 0xFF)
|
||||
};
|
||||
byte[] result = spi.write(anWrite);
|
||||
System.out.printf("writing %s, %s, %s%n", toBinary(anWrite[0]), toBinary(anWrite[1]), toBinary(anWrite[2]));
|
||||
postAnalogWrite();
|
||||
System.out.printf("0= %s, 1= %s, 2= %s%n", result[0] & 0xFF, result[1] & 0xFF, result[2] & 0xFF);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int readAnalog() throws IOException {
|
||||
byte zeroes[] = new byte[] {
|
||||
(byte) 0b00000000,
|
||||
(byte) 0b00000000,
|
||||
(byte) 0b00000000
|
||||
};
|
||||
|
||||
byte[] result = spi.write(zeroes);
|
||||
|
||||
|
||||
// System.out.println("Raw= " + (a * 256 + b));
|
||||
int a = result[0] & 0xFF;
|
||||
int b = result[1] & 0xFF;
|
||||
int c = result[2] & 0xFF;
|
||||
// System.out.println("a= " + a + ", b= " + b + ", c= " + c);
|
||||
|
||||
if (c == 13){
|
||||
int x = a * 256;
|
||||
x = x + b;
|
||||
return x;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user