00001 // RCKit.h 00002 // 00003 // The header exists purely for generating doxygen documentation for the RCkit as a whole 00004 // you should never need to include it in your code 00005 // 00006 /// \author Mike McCauley (mikem@open.com.au) 00007 /// 00008 /// \XXmxxainpage RCKit library for Arduino 00009 /// 00010 /// This is the Arduino RCKit 1.0 library. 00011 /// 00012 /// RCKit provides a kit of software objects that make it easy to build an 00013 /// RCOIP (Radio Control Over IP) receiver on Arduino. RCOIP protocol is used to 00014 /// carry radio control commands from a transmitter to a receiver over an IP 00015 /// transport such as Ethernet or Wi-Fi. 00016 /// 00017 /// As such it can be used to build Radio Controlled (RC) vehicles and devices of various kinds, along with 00018 /// matching transmitters. LArge number of channles can be supported, along with a back-channel 00019 /// which sends data from the Receiver to the Transmitter. 00020 /// 00021 /// The transmitter could be a handheld Wi-Fi enabled device such as an iPhone, iPad or Arduino based device. 00022 /// Or it could be an interactive program running on a desktop computer. 00023 /// 00024 /// The receiver (using this software) could be a radio controlled car, plane, helicopter or some other device. 00025 /// 00026 /// The RCOIP protocol is a 2-way protocol that defines UDP messages between 00027 /// the RCOIP transmitter and receiver. 00028 /// This effectively makes the transmitter a UDP client and the receiver a UDP server. 00029 /// Messages sent from the transmitter to the receiver include setting analog outputs, 00030 /// and messages from the receiver to the transmitter include receiver status messages. 00031 /// 00032 /// The latest version of this documentation can be downloaded from 00033 /// http://www.open.com.au/mikem/arduino/RCKit 00034 /// 00035 /// Example Arduino programs are included to show the main modes of use. 00036 /// 00037 /// The version of the package that this documentation refers to can be downloaded 00038 /// from http://www.open.com.au/mikem/arduino/RCKit/RCKit-1.0.zip 00039 /// You can find the latest version at http://www.open.com.au/mikem/arduino/RCKit 00040 /// 00041 /// Tested on Arduino Duemilanove, Diecimila and Mega with arduino-0018 on OpenSuSE 11.1 00042 /// and avr-libc-1.6.2-5.11, 00043 /// cross-avr-binutils-2.19-9.1 and cross-avr-gcc43-4.3.3_20081022-9.3 00044 /// 00045 /// \par Setters 00046 /// 00047 /// Setter are object that receive a value, maybe transform it and then do something with it. Typically 00048 /// they set an output pin according to the received input value, but almost any other transformation, 00049 /// output or communication can be imagined. 00050 /// 00051 /// The following output Setter objects are provided with RCKit: 00052 /// \li AnalogSetter 00053 /// \li DigitalSetter 00054 /// \li ServoSetter 00055 /// \li AccelStepperPositionSetter 00056 /// \li AccelStepperSpeedSetter 00057 /// \li HBridgeSetter 00058 /// 00059 /// The following transformation Setter objects are provided with RCKit: 00060 /// \li Inverter 00061 /// \li Limiter 00062 /// 00063 /// \par RCRx 00064 /// 00065 /// RCRx class is a Wi-Fi RCOIP receiver. It works with Arduino and WiShield and any 00066 /// RCOIP compliant Wi-Fi Transmitter. 00067 /// 00068 /// By default, RCRx is configured as an Ad-Hoc Wi-Fi network with SSID of 'RCArduino'. 00069 /// The network is Open (ie no encryption). It is configured with a static IP address of 169.254.1.100. 00070 /// These setting can be changed by editing RCRx.cpp in the RCKit distrinution. 00071 /// 00072 /// When the RCRx object is constructed, it must be given an array of Setter objects. 00073 /// When a RCOIPv1CmdSetAnalogChannels is received by RCRx, The Setter corresponding to each 00074 /// Channel value in the command will be passed to the respective Setter in the analogOutputs array. 00075 /// The Arduino software is expected to be configured so that each analogOutput is connected to a Setter that 00076 /// will implement the received value, perhaps by setting an analog or digital output on an Arduino pin. 00077 /// 00078 /// RCRx will automatically respond to received commands with RCOIPv1ReplyReceiverStatus messages 00079 /// as appropriate to the configured timeouts etc. 00080 /// 00081 /// \par Examples 00082 /// 00083 /// Several example Arduino sketches are included in teh documentaiotn, including a regression 00084 /// test suite and a sample complete 5 channel receiver with Servo outputs. 00085 /// 00086 /// \par Prerequisites 00087 /// 00088 /// Requires WiShield (http://asynclabs.com) 00089 /// and AccelStepper (http://www.open.com.au/mikem/arduino/AccelStepper) libraries to be installed. 00090 /// 00091 /// \par Installation 00092 /// 00093 /// Install in the usual way: unzip the distribution zip file to the libraries 00094 /// sub-folder of your sketchbook. 00095 /// 00096 /// This software is Copyright (C) 2010 Mike McCauley. Use is subject to license 00097 /// conditions. The main licensing options available are GPL V2 or Commercial: 00098 /// 00099 /// \par Open Source Licensing GPL V2 00100 /// This is the appropriate option if you want to share the source code of your 00101 /// application with everyone you distribute it to, and you also want to give them 00102 /// the right to share who uses it. If you wish to use this software under Open 00103 /// Source Licensing, you must contribute all your source code to the open source 00104 /// community in accordance with the GPL Version 2 when your application is 00105 /// distributed. See http://www.gnu.org/copyleft/gpl.html 00106 /// 00107 /// \par Commercial Licensing 00108 /// This is the appropriate option if you are creating proprietary applications 00109 /// and you are not prepared to distribute and share the source code of your 00110 /// application. Contact info@open.com.au for details. 00111 /// 00112 /// \par Revision History 00113 /// \version 1.0 Initial release 00114 // Copyright (C) 2010 Mike McCauley 00115 // $Id: $ 00116