diff --git a/README.md b/README.md index 9c6b799..20e885d 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,48 @@ -# LinuxCNC_ArduinoConnector -+++this is still in early development and is untested, i don't recommend using it in an actual machine+++ +# LinuxCNC_ArduinoConnector +By Alexander Richter, info@theartoftinkering.com 2022 + + For my CNC Machine i wanted to include more IO's than my Mesa card was offering. This Projekt enables to connect Arduino to LinuxCNC to include as many IO's as you wish. +This Software is used as IO Expansion for LinuxCNC. Here i am using a Mega 2560. +# +++this is still in early development and is untested, i don't recommend using it in an actual machine+++ +It is NOT intended for timing and security relevant IO's. Don't use it for Emergency Stops or Endstop switches! -Arduino is handling all the IO's and sends all changes over Serial. It is decoded and integrated in hal with Python-serial. +You can create as many digital & analog Inputs, Outputs and PWM Outputs as your Arduino can handle. +You can also generate "virtual Pins" by using latching Potentiometers, which are connected to one analog Pin, but are read in Hal as individual Pins. -This protocol is slow compared to other solutions, but easily adaptable and expandable through the Arduino platform. - -# Features i have included: -(as many Pins as your ARduino provides) +Currently the Software provides: - analog Inputs - latching Potentiometers - 1 absolute encoder input - digital Inputs - digital Outputs +The Send and receive Protocol is : +To begin Transmitting Ready is send out and expects to receive E: to establish connection. Afterwards Data is exchanged. +Data is only send everythime it changes once. + +Inputs = 'I' -write only -Pin State: 0,1 +Outputs = 'O' -read only -Pin State: 0,1 +PWM Outputs = 'P' -read only -Pin State: 0-255 +Analog Inputs = 'A' -write only -Pin State: 0-1024 +Latching Potentiometers = 'L' -write only -Pin State: 0-max Position +Absolute Encoder input = 'K' -write only -Pin State: 0-32 + +Command 'E0:0' is used for connectivity checks and is send every 5 seconds as keep alive signal. If connection is lost the arduino begins flashing an LED to alarm the User. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Installation