diff --git a/HISTORY.md b/HISTORY.md deleted file mode 100644 index 33c972a..0000000 --- a/HISTORY.md +++ /dev/null @@ -1,141 +0,0 @@ -# uArm Arduino Library Release Note - -## [1.7.2] - 2016-06-30 - -### Fix -- attach servo even not calibrate -- rewrite set_servo_status replace attach_servo detach_servo -- execute write_stretch_height event not calibrate - -## [1.7.1] - 2016-06-28 - -### Fix -- Set Current angle after attach servo -- rewrite set_servo_status replace attach_servo detach_servo - -## [1.7.0] - 2016-06-24 - -### Fix -- Update examples Calibration.ino, movement.ino, Add new UArmTextControl2.0.ino -- Update uarm_library.h make some protected value be public -- Move All source code to src folder -- Create Docs folder to store Doxygen Configure & Html header footer files - -## [1.6.2] - 2016-06-24 - -### Fix -- Change Lots of function names according to Programming Rules - -## [1.6.1] - 2016-06-22 - -### Fix -- Fix MoveTo Lock Hand Servo issue. - - -## [1.6.0] - 2016-06-20 - -### Fix -- Add Limit for x*x + y*y < 32, Fix When x*x + y*y > 32 uArm will get wired position - -### Changes - -- Rewrite Servo.h to UFServo.h, using float when servo.write(), increase accuracy -- Rewrite uArmFimata to UArmProtocol.ino - - -## [1.5.11] - 2016-06-07 - -### Fix -- Fix Test.ino unused function -- Update Code Format - -## [1.5.10] - 2016-06-07 - -### Fix -- At moveToAtOnce(x,y,z) - -## [1.5.9] - 2016-06-01 - -### Fix -- Fix writeStretch() offset address not correct - -## [1.5.8] - 2016-05-07 - -### Fix -- Speed up Calibration, reduce delay -- Use writeAngle() Function in MoveTo - -### Changes - -- Add Calibration.ino into examples - - -## [1.5.6] - 2016-05-06 - -### Fix - -- Update SERIAL_NUMBER_ADDRESS to 100, Update CALIBRATION_STRETCH_FLAG mark value is CONFIRM_FLAG - -## [1.5.5] - 2016-05-05 - -### Fix - -- if SERIAL_NUMBER_ADDRESS equal CONFIRM_FLAG 0x80, then Serial Number exist in EEPROM - -## [1.5.4] - 2016-05-02 - -### Fix - -- if SERIAL_NUMBER_ADDRESS equal SERIAL_NUMBER_ADDRESS, then Serial Number exist in EEPROM - -## [1.5.3] - 2016-05-02 - -### Changes - -- Add readSerialNumber & writeSerialNumber function (Serial Number: Address 1024, size:14) - - -## [1.5.2] - 2016-04-29 - -### Changes - -- Add Example, MoveTest, GetXYZ, Recording Mode - - -## [1.5.2] - 2016-04-29 - -### Changes - -- Cancel v.1.5.0 read offset from EEPROM. - - -## [1.5.0] - 2016-04-14 - -### Changes - -- Initialize servo offset & linear offset from EEPROM to global values, prevent read EEPROM every time - -- Use [EEPROM.get()][a4e46a5d] & [EEPROM.put()][275bf48d] to read & write value in EEPROM instead of saveDataToRom() - - [a4e46a5d]: https://www.arduino.cc/en/Reference/EEPROMGet "EEPROM.get()" - [275bf48d]: https://www.arduino.cc/en/Reference/EEPROMPut "EEPROM.put()" - -- rename function readToAngle to analogToAngle -- Change Offset address in EEPROM - -## [1.4.0] - 2016-04-12 - -### Changes - -- uarm_library.cpp writeServoAngle resume LEFT & RIGHT ANGLE - -- ToDo: remove LEFT & RIGHT ANGLE from WriteServoAngle (For Safety) - - -## [1.3.1] - 2016-04-12 - -### Changes - -- uarm_library.cpp writeLeftRightServoAngle() Update the angle between left & right - -- Change Folder examples folder & stretch name From UarmFirmata to UArmFirmata diff --git a/Keywords.txt b/Keywords.txt deleted file mode 100644 index 648e212..0000000 --- a/Keywords.txt +++ /dev/null @@ -1,80 +0,0 @@ -####################################### -# Syntax Coloring Map UF_uArm -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -UF_uArm KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -init KEYWORD2 -calibration KEYWORD2 -recordingMode KEYWORD2 -setPosition KEYWORD2 -readAngle KEYWORD2 -setServoSpeed KEYWORD2 -gripperCatch KEYWORD2 -gripperRelease KEYWORD2 -gripperDetach KEYWORD2 - -gripperDirectDetach KEYWORD2 - -pumpOn KEYWORD2 - -pumpOff KEYWORD2 - -valveOn KEYWORD2 - -valveOff KEYWORD2 - -detachServo KEYWORD2 -sendData KEYWORD2 -alert KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### -ARM_A LITERAL1 -ARM_B LITERAL1 -ARM_2AB LITERAL1 -ARM_A2 LITERAL1 -ARM_B2 LITERAL1 -ARM_A2B2 LITERAL1 -ARM_STRETCH_MIN LITERAL1 -ARM_STRETCH_MAX LITERAL1 -ARM_HEIGHT_MIN LITERAL1 -ARM_HEIGHT_MAX LITERAL1 -ARM_ROTATION_MIN LITERAL1 -ARM_ROTATION_MAX LITERAL1 -HAND_ROTATION_MIN LITERAL1 -HAND_ROTATION_MAX LITERAL1 -HAND_ANGLE_OPEN LITERAL1 -HAND_ANGLE_CLOSE LITERAL1 -FIXED_OFFSET_L LITERAL1 -FIXED_OFFSET_R LITERAL1 -D150A_SERVO_MIN_PUL LITERAL1 -D150A_SERVO_MAX_PUL LITERAL1 -D009A_SERVO_MIN_PUL LITERAL1 -D009A_SERVO_MAX_PUL LITERAL1 -SAMPLING_DEADZONE LITERAL1 -INIT_POS_L LITERAL1 -INIT_POS_R LITERAL1 -BTN_TIMEOUT_MS LITERAL1 -CATCH LITERAL1 -RELEASE LITERAL1 -BTN_D4 LITERAL1 -BTN_D7 LITERAL1 -BUZZER LITERAL1 -LIMIT_SW LITERAL1 -PUMP_EN LITERAL1 -VALVE_EN LITERAL1 -SERVO_HAND LITERAL1 -SERVO_HAND_ROT LITERAL1 -SERVO_ROT LITERAL1 -SERVO_R LITERAL1 -SERVO_L LITERAL1 diff --git a/README.md b/README.md index ec3a4f1..1acc370 100644 --- a/README.md +++ b/README.md @@ -1,42 +1 @@ -# uArm Library Introduction {#mainpage} - -**Warning, This Library is for developer, After upload the library, you must recalibrate the uArm** - -**Compatible** - - - uArm Metal - -## Installation - -### Library Manager -*Recommend* - -- Download [Arduino IDE][622f1188] -- Import the uArm Library (search uArmLibrary) using Library Manager. - If you don't know how to use Library Manager. Please Refer this [Import Library Using Library Manager][4b323740] -- Upload the example to your uArm - If you don't know how to upload Arduino sketch, We recommend you read this [Arduino Getting Started on Windows][397d20eb] or [Arduino Getting Started on MacOS][2d8a8b7a] -- You need to recalibrate when you are new to this library. we recommend the GUI Calibration tool. - -### Manual Installation - -- Download [Arduino IDE][622f1188] -- Clone the source code into your computer. -- Open Arduino IDE, import the zip as library. Please refer this [Import a .zip Library][8cd4af00] -- Upload the example to your uArm - If you don't know how to upload Arduino sketch, We recommend you read this [Arduino Getting Started on Windows][397d20eb] or [Arduino Getting Started on MacOS][2d8a8b7a] -- You need to recalibrate when you are new to this library. we recommend the GUI Calibration tool. - - -### Getting Started - -please reference Arduino [GettingStarted][GettingStarted] Sketch - - - [8cd4af00]: https://www.arduino.cc/en/Guide/Libraries#toc4 "Import a .zip Library" - [4b323740]: https://www.arduino.cc/en/Guide/Libraries#toc3 "Import Library Using Library Manager" - [3]: http://developer.ufactory.cc/quickstart/arduino/ - [622f1188]: https://www.arduino.cc/en/Main/Software "Arduino IDE" - [397d20eb]: https://www.arduino.cc/en/Guide/Windows "Arduino Getting Start on Windows" - [2d8a8b7a]: https://www.arduino.cc/en/Guide/MacOSX "Arduino Getting Started on MacOS" - [GettingStarted]: @ref GettingStarted.ino +# uArm For Arduino Doxygen Library diff --git a/_calibration_8ino.html b/_calibration_8ino.html new file mode 100644 index 0000000..1ff8797 --- /dev/null +++ b/_calibration_8ino.html @@ -0,0 +1,321 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/Calibration/Calibration.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Calibration.ino File Reference
+
+
+ +

Calibration Arduino Sketch. +More...

+
#include "uarm_library.h"
+
+ + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
void calibration_start ()
 
void linear_calibration_servo (byte servo_num)
 
void cleanEEPROM ()
 
void manual_calibration_section ()
 
void save_manual_servo_offset (byte servo_num, double offset)
 
void save_linear_servo_offset (byte servo_num, double intercept_val, double slope_val)
 
+ + + +

+Variables

int value
 
+

Detailed Description

+

Calibration Arduino Sketch.

+
Author
Joe Song Alex Tan GNU
+ +

Function Documentation

+ +
+
+ + + + + + + +
void calibration_start ()
+
+

Start Calibration all section

+ +
+
+ +
+
+ + + + + + + +
void cleanEEPROM ()
+
+

Clean EEPROM before calibration

+ +
+
+ +
+
+ + + + + + + + +
void linear_calibration_servo (byte servo_num)
+
+

Calibrate each servo for linear offset

+ +
+
+ +
+
+ + + + + + + +
void loop ()
+
+ +
+
+ +
+
+ + + + + + + +
void manual_calibration_section ()
+
+

Manual Calibration Section

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void save_linear_servo_offset (byte servo_num,
double intercept_val,
double slope_val 
)
+
+

Save Linear Servo Offset intercept & slope

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void save_manual_servo_offset (byte servo_num,
double offset 
)
+
+

Save Manual Servo Offset

+ +
+
+ +
+
+ + + + + + + +
void setup ()
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
int value
+
+
Examples:
UArmProtocol.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/_getting_started_8ino-example.html b/_getting_started_8ino-example.html new file mode 100644 index 0000000..20165ec --- /dev/null +++ b/_getting_started_8ino-example.html @@ -0,0 +1,105 @@ + + + + + + + + + + + UArm Arduino Library: GettingStarted.ino + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
GettingStarted.ino
+
+
+
/*
* Table of Content
Function 1 - 4 : move to a certain point (f)
Fucntion d : detach servos
Function o : pump on
Function f : pump off
Function g : read current coordinate
Function 5 : Read Servo offset
*/
#include "uarm_library.h"
int value; // value is the data recevied
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial port at 9600 bps
}
void loop() {
if(Serial.available()>0)
{
char readSerial = Serial.read();
Serial.println(readSerial);
//---------------------------------- function 1 ------------------------------------
// function below is for move uArm from current position to absolute coordinate
// x = 13, y = -13, z = 3
if (readSerial == '1') {
uarm.move_to(13,-13,3);
delay(1000);
}
//---------------------------------- function 2 ------------------------------------
// function below is for move uArm from current position to absolute coordinate
// x = -13, y = -13, z = 3
if (readSerial == '2') {
uarm.move_to(-13,-13,3);
delay(1000);
}
//---------------------------------- function 3 ------------------------------------
// function below is for move uArm from current position to relatvie coordinate
// (dot) dx = 4, dy = -3, dz = 2 in 5 seconds
if (readSerial == '3') {
uarm.move_to(5,0,0,RELATIVE,2);
delay(1000);
}
//---------------------------------- function 4 ------------------------------------
// function below is for move uArm from current position to relatvie coordinate
// (dot) dx = -4, dy = 3, dz = -2 in 5 seconds
if (readSerial == '4') {
uarm.move_to(-4,3,-2,RELATIVE,5);
delay(1000);
}
//---------------------------------- function d ------------------------------------
// Detach Servo
if (readSerial == 'd') {
}
//---------------------------------- function a ------------------------------------
// Detach Servo
if (readSerial == 'a') {
}
//---------------------------------- function o ------------------------------------
// Pump on
if (readSerial == 'o') {
}
//---------------------------------- function f ------------------------------------
// Pump off
if (readSerial == 'f') {
}
//---------------------------------- function g ------------------------------------
// function below is for print current x,y,z absolute location
if (readSerial == 'g') {
Serial.print("The current location is ");
Serial.print(uarm.get_current_x());
Serial.print(" , ");
Serial.print(uarm.get_current_y());
Serial.print(" , ");
Serial.print(uarm.get_current_z());
Serial.println();
delay(1000);
}
//---------------------------------- function 5 ------------------------------------
// function below is for read servo offset
if (readSerial == '5') {
Serial.print("SERVO_ROT_NUM offset:");
Serial.print("SERVO_LEFT_NUM offset:");
Serial.print("SERVO_RIGHT_NUM offset:");
Serial.print("SERVO_HAND_ROT_NUM offset:");
}
} // close read available
}
+ + +
+
+
+
+
+ + + diff --git a/_getting_started_8ino.html b/_getting_started_8ino.html new file mode 100644 index 0000000..c18cb14 --- /dev/null +++ b/_getting_started_8ino.html @@ -0,0 +1,186 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/GettingStarted/GettingStarted.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
GettingStarted.ino File Reference
+
+
+ +

GettingStarted Arduino Sketch. +More...

+
#include "uarm_library.h"
+
+ + + + + +

+Functions

void setup ()
 
void loop ()
 
+ + + +

+Variables

int value
 
+

Detailed Description

+

GettingStarted Arduino Sketch.

+
Author
Joe Song Alex Tan GNU
+ +

Function Documentation

+ +
+
+ + + + + + + +
void loop ()
+
+
Examples:
GettingStarted.ino.
+
+
+
+ +
+
+ + + + + + + +
void setup ()
+
+
Examples:
GettingStarted.ino.
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
int value
+
+
Examples:
GettingStarted.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/_h_i_s_t_o_r_y_8_m_d.html b/_h_i_s_t_o_r_y_8_m_d.html new file mode 100644 index 0000000..3292698 --- /dev/null +++ b/_h_i_s_t_o_r_y_8_m_d.html @@ -0,0 +1,111 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/HISTORY.MD File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
/Users/alex/Workspace/develop/uarm_metal/uarm4arduino/HISTORY.MD File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/_r_e_a_d_m_e_8_m_d.html b/_r_e_a_d_m_e_8_m_d.html new file mode 100644 index 0000000..b90466b --- /dev/null +++ b/_r_e_a_d_m_e_8_m_d.html @@ -0,0 +1,111 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/README.MD File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
/Users/alex/Workspace/develop/uarm_metal/uarm4arduino/README.MD File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/_servo_timers_8h.html b/_servo_timers_8h.html new file mode 100644 index 0000000..0f40e24 --- /dev/null +++ b/_servo_timers_8h.html @@ -0,0 +1,166 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/ServoTimers.h File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ServoTimers.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define _useTimer1
 
+ + + +

+Enumerations

enum  timer16_Sequence_t { _timer1, +_Nbr_16timers + }
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define _useTimer1
+
+

AVR Only definitions

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum timer16_Sequence_t
+
+ + + +
Enumerator
_timer1  +
_Nbr_16timers  +
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/_servo_timers_8h_source.html b/_servo_timers_8h_source.html new file mode 100644 index 0000000..4e8f458 --- /dev/null +++ b/_servo_timers_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/ServoTimers.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ServoTimers.h
+
+
+Go to the documentation of this file.
1 /*
2  Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
3  Copyright (c) 2009 Michael Margolis. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 /*
21  * Defines for 16 bit timers used with Servo library
22  *
23  * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
24  * timer16_Sequence_t enumerates the sequence that the timers should be allocated
25  * _Nbr_16timers indicates how many 16 bit timers are available.
26  */
27 
33 // Say which 16 bit timers can be used and in what order
34 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
35 #define _useTimer5
36 #define _useTimer1
37 #define _useTimer3
38 #define _useTimer4
39 typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t;
40 
41 #elif defined(__AVR_ATmega32U4__)
42 #define _useTimer1
43 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
44 
45 #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
46 #define _useTimer3
47 #define _useTimer1
48 typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t;
49 
50 #elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__)||defined(__AVR_ATmega2561__)
51 #define _useTimer3
52 #define _useTimer1
53 typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t;
54 
55 #else // everything else
56 #define _useTimer1
58 #endif
59 
Definition: ServoTimers.h:57
+
Definition: ServoTimers.h:57
+
timer16_Sequence_t
Definition: ServoTimers.h:57
+
+ + +
+
+
+
+
+ + + diff --git a/_u_arm_protocol_8ino-example.html b/_u_arm_protocol_8ino-example.html new file mode 100644 index 0000000..2aff7cd --- /dev/null +++ b/_u_arm_protocol_8ino-example.html @@ -0,0 +1,105 @@ + + + + + + + + + + + UArm Arduino Library: UArmProtocol.ino + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
UArmProtocol.ino
+
+
+
#include <uarm_library.h>
#include <EEPROM.h>
#define MAX_DATA_BYTES 64 // max number of data bytes in incoming messages
#define UARM_FIRMATA_MAJOR_VERSION 1
#define UARM_FIRMATA_MINOR_VERSION 3
#define UARM_FIRMATA_BUGFIX 2
#define UARM_FIRMWARE_MAJOR_VERSION 1
#define UARM_FIRMWARE_MINOR_VERSION 7
#define UARM_FIRMWARE_BUGFIX 2
#define START_SYSEX 0xF0 // start a MIDI Sysex message
#define END_SYSEX 0xF7 // end a MIDI Sysex message
#define UARM_CODE (0XAA)
#define READ_ANGLE (0X10)
#define WRITE_ANGLE (0X11)
#define READ_COORDS (0X12)
#define WRITE_COORDS (0X13)
#define READ_DIGITAL (0X14)
#define WRITE_DIGITAL (0X15)
#define READ_ANALOG (0X16)
#define WRITE_ANALOG (0X17)
#define READ_EEPROM (0X1A)
#define WRITE_EEPROM (0X1B)
#define SERVO_STATUS (0X1C)
#define PUMP_STATUS (0X1D)
#define WRITE_STRETCH (0X1E)
#define WRITE_LEFT_RIGHT_ANGLE (0X1F)
#define GRIPPER_STATUS (0X20)
#define READ_SERIAL_NUMBER (0x21)
#define WRITE_SERIAL_NUMBER (0x22)
#define REPORT_FIRMWARE_VERSION (0x23)
#define BUZZER_ALERT (0x24)
#define DATA_TYPE_BYTE 1
#define DATA_TYPE_INTEGER 2
#define DATA_TYPE_FLOAT 4
boolean parsingSysex;
void setup()
{
Serial.begin(57600);
}
void loop()
{
while(Serial.available())
}
boolean handleSysex(byte command, byte argc, byte *argv)
{
if (command == UARM_CODE)
{
byte uarmCommand;
uarmCommand = argv[0];
// CMD 10 Read Angle
if (uarmCommand == READ_ANGLE)
{
byte servo_num = argv[1];
boolean withOffset = argv[2]; // if servo_offset = 0 there is offset inside
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(servo_num);
float angle = uarm.read_servo_angle(servo_num,withOffset);
Serial.write(END_SYSEX);
return true;
}
// CMD 11 Write Angle
if (uarmCommand == WRITE_ANGLE)
{
byte servo_num = argv[1];
double servo_angle = argv[2] + (argv[3] << 7) + float(argv[4])/100;
boolean writeWithOffset = argv[5];
uarm.write_servo_angle(servo_num,servo_angle,writeWithOffset);
return true;
}
// CMD 12 Read Coords
if (uarmCommand == READ_COORDS)
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(READ_COORDS);
float x = uarm.get_current_x();
float y = uarm.get_current_y();
float z = uarm.get_current_z();
Serial.write(END_SYSEX);
return true;
}
// CMD 13 Write Coords
if (uarmCommand == WRITE_COORDS)
{
float x = argv[2] + (argv[3] << 7) + float(argv[4])/100;
if(argv[1] == 1)
x = -x;
float y = argv[6] + (argv[7] << 7) + float(argv[8])/100;
if(argv[5] == 1)
y = -y;
float z = argv[10] + (argv[11] << 7) + float(argv[12])/100;
if(argv[9] == 1)
z = -z;
float hand_angle = argv[13] + (argv[14] << 7) + float(argv[15])/100;
byte relative_flags = argv[16];
float time_spend = argv[17] + (argv[18] << 7) + float(argv[19])/100;
byte path_type = argv[20];
byte ease_type = argv[21];
boolean enable_hand = false;
if (argv[22] == 1 || argv[22] ==0)
enable_hand = argv[22];
delay(5);
uarm.move_to(x,y,z,hand_angle,relative_flags,time_spend,path_type,ease_type,enable_hand);
delay(10);
}
// CMD 14 Read Digital
if (uarmCommand == READ_DIGITAL)
{
byte pin_num = argv[1];
byte pin_mode = argv[2]; // 0 means input 1 means input_pullup
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(pin_num);
pin_mode == 1 ? pinMode(pin_num, INPUT_PULLUP) : pinMode(pin_num, INPUT);
Serial.write(digitalRead(pin_num));
Serial.write(END_SYSEX);
}
return true;
}
// CMD 15 Write Digital
if (uarmCommand == WRITE_DIGITAL)
{
byte pin_num= argv[1];
pinMode(pin_num, OUTPUT);
byte pin_mode = argv[2];
pin_mode == 1 ? digitalWrite(pin_num,HIGH) : digitalWrite(pin_num,LOW);
return true;
}
// CMD 16 Read Analog
if (uarmCommand == READ_ANALOG)
{
byte pin_num = argv[1];
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(pin_num);
sendValueAsTwo7bitBytes(analogRead(pin_num));
Serial.write(END_SYSEX);
}
return true;
}
// CMD 17 Write Analog
if (uarmCommand == WRITE_ANALOG)
{
byte pin_num= argv[1];
pinMode(pin_num, OUTPUT);
double analog_val = argv[2] + (argv[3] << 7);
analogWrite(pin_num,constrain(analog_val,0,255));
return true;
}
// CMD 1A Read EEPROM
if (uarmCommand == READ_EEPROM)
{
byte data_type = argv[1];
int eeprom_add = argv[2] + (argv[3] << 7);
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(READ_EEPROM);
switch(data_type)
{
{
sendValueAsTwo7bitBytes(EEPROM.read(eeprom_add));
break;
}
{
int i_val = 0;
sendIntegerAsThree7bitBytes(EEPROM.get(eeprom_add, i_val));
break;
}
{
float f_val = 0.0f;
sendFloatAsFour7bitBytes(EEPROM.get(eeprom_add,f_val));
break;
}
}
Serial.write(END_SYSEX);
return true;
}
// CMD 1B Write EEPROM
if (uarmCommand == WRITE_EEPROM)
{
byte data_type = argv[1];
byte eeprom_add = argv[2] + (argv[3] << 7);
// byte eeprom_val = argv[3] + (argv[4] << 7);
// EEPROM.write(eeprom_add,eeprom_val);
switch(data_type)
{
{
EEPROM.write(eeprom_add,argv[4] + (argv[5] << 7));
break;
}
{
int int_val = 0;
int_val = argv[5] + (argv[6] << 7);
int_val = ((argv[4] == 1) ? -int_val : int_val);
EEPROM.put(eeprom_add, int_val);
break;
}
{
float f_val = argv[5] + (argv[6] << 7) + float(argv[7])/100;
f_val = ((argv[4] == 1) ? -f_val : f_val);
EEPROM.put(eeprom_add, f_val);
break;
}
}
return true;
}
// CMD 1C Servo Attach or Detach
if (uarmCommand == SERVO_STATUS)
{
// uarm.detach_all_servos();
byte servo_num = argv[1];
boolean servo_status = argv[2] == 0 ? false : true;
uarm.set_servo_status(servo_status, servo_num);
return true;
}
// CMD 1D Pump Status
if (uarmCommand == PUMP_STATUS)
{
byte pump_status = argv[1];
pump_status == 1 ? uarm.pump_on() : uarm.pump_off();
return true;
}
// CMD 20 GRIPPER Status
if (uarmCommand == GRIPPER_STATUS)
{
byte gripper_status = argv[1];
gripper_status == 1 ? uarm.gripper_catch() : uarm.gripper_release();
return true;
}
//0X1E WRITE_STRETCH
if (uarmCommand == WRITE_STRETCH)
{
double length = argv[2] + (argv[3] << 7) + float(argv[4])/100;
length = argv[1] == 1 ? -length : length;
double height = argv[6] + (argv[7] << 7) + float(argv[8])/100;
height = argv[5] == 1 ? -height : height;
uarm.write_stretch_height(length,height);
return true;
}
//0X1F WRITE_LEFT_RIGHT_ANGLE
if (uarmCommand == WRITE_LEFT_RIGHT_ANGLE)
{
double left = argv[1] + (argv[2] << 7) + float(argv[3])/100;
double right = argv[4] + (argv[5] << 7) + float(argv[6])/100;
boolean withOffset = argv[7];
uarm.write_left_right_servo_angle(left,right, withOffset);
return true;
}
//0X22 WRITE_SERIAL_NUMBER
if (uarmCommand == WRITE_SERIAL_NUMBER)
{
for(byte i=0; i<14; i++){
EEPROM.write(SERIAL_NUMBER_ADDRESS+i+1, argv[i+1]);
}
return true;
}
//0X21 READ_SERIAL_NUMBER
if (uarmCommand == READ_SERIAL_NUMBER)
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
if (EEPROM.read(SERIAL_NUMBER_ADDRESS) == CONFIRM_FLAG) {
Serial.write(READ_SERIAL_NUMBER);
for(byte i=0; i<14; i++) {
byte c = EEPROM.read(SERIAL_NUMBER_ADDRESS+i+1);
Serial.write(c);
}
}
Serial.write(END_SYSEX);
return true;
}
//0X23 REPORT_FIRMWARE_VERSION
if (uarmCommand == REPORT_FIRMWARE_VERSION)
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(REPORT_FIRMWARE_VERSION);
Serial.write(UARM_FIRMWARE_BUGFIX);
Serial.write(END_SYSEX);
return true;
}
if (uarmCommand == BUZZER_ALERT)
{
byte times = argv[1];
byte run_time = argv[2];
byte stop_time = argv[3];
uarm.alert(times, run_time, stop_time);
return true;
}
}
return false;
}
void processInput(void)
{
int inputData = Serial.read();
if (inputData != -1) {
parse(inputData);
}
}
void parse(byte inputData)
{
int command;
if (parsingSysex) {
if (inputData == END_SYSEX) {
//stop sysex byte
parsingSysex = false;
//fire off handler function
} else {
//normal data byte - add to buffer
}
}
else {
// remove channel info from command byte if less than 0xF0
if (inputData < 0xF0) {
command = inputData & 0xF0;
} else {
command = inputData;
// commands in the 0xF* range don't use channel data
}
switch (command) {
parsingSysex = true;
break;
}
}
}
{
switch (storedInputData[0]) {
default:
}
}
{
Serial.write(value & 0x7F);
Serial.write(value >> 7 & 0x7F);
}
void sendFloatAsFour7bitBytes(float val){
int int_val = val;
int decimal_val = int(round((val - int_val)*100));
Serial.write(val > 0 ? 0 : 1);
Serial.write(abs(int_val) & B01111111 );
Serial.write(abs(int_val) >> 7 & B01111111);
Serial.write(abs(decimal_val) & 0x7F );
}
void sendFloatAsThree7bitBytes(float val){
int int_val = val;
int decimal_val = int(round((val - int_val)*100));
Serial.write(abs(int_val) & B01111111 );
Serial.write(abs(int_val) >> 7 & B01111111);
Serial.write(abs(decimal_val) & 0x7F );
}
int symbol = val > 0 ? 0 : 1;
Serial.write(symbol);
Serial.write(abs(val) & B01111111 );
Serial.write(abs(val) >> 7 & B01111111);
}
+ + +
+
+
+
+
+ + + diff --git a/_u_arm_protocol_8ino.html b/_u_arm_protocol_8ino.html new file mode 100644 index 0000000..3d1e32f --- /dev/null +++ b/_u_arm_protocol_8ino.html @@ -0,0 +1,867 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/UArmProtocol/UArmProtocol.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
UArmProtocol.ino File Reference
+
+
+ +

uArm Protocol Arduino Sketch +More...

+
#include <uarm_library.h>
+#include <EEPROM.h>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define MAX_DATA_BYTES   64
 
#define UARM_FIRMATA_MAJOR_VERSION   1
 
#define UARM_FIRMATA_MINOR_VERSION   3
 
#define UARM_FIRMATA_BUGFIX   2
 
#define UARM_FIRMWARE_MAJOR_VERSION   1
 
#define UARM_FIRMWARE_MINOR_VERSION   7
 
#define UARM_FIRMWARE_BUGFIX   2
 
#define START_SYSEX   0xF0
 
#define END_SYSEX   0xF7
 
#define UARM_CODE   (0XAA)
 
#define READ_ANGLE   (0X10)
 
#define WRITE_ANGLE   (0X11)
 
#define READ_COORDS   (0X12)
 
#define WRITE_COORDS   (0X13)
 
#define READ_DIGITAL   (0X14)
 
#define WRITE_DIGITAL   (0X15)
 
#define READ_ANALOG   (0X16)
 
#define WRITE_ANALOG   (0X17)
 
#define READ_EEPROM   (0X1A)
 
#define WRITE_EEPROM   (0X1B)
 
#define SERVO_STATUS   (0X1C)
 
#define PUMP_STATUS   (0X1D)
 
#define WRITE_STRETCH   (0X1E)
 
#define WRITE_LEFT_RIGHT_ANGLE   (0X1F)
 
#define GRIPPER_STATUS   (0X20)
 
#define READ_SERIAL_NUMBER   (0x21)
 
#define WRITE_SERIAL_NUMBER   (0x22)
 
#define REPORT_FIRMWARE_VERSION   (0x23)
 
#define BUZZER_ALERT   (0x24)
 
#define DATA_TYPE_BYTE   1
 
#define DATA_TYPE_INTEGER   2
 
#define DATA_TYPE_FLOAT   4
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
boolean handleSysex (byte command, byte argc, byte *argv)
 
void processInput (void)
 
void parse (byte inputData)
 
void processSysexMessage (void)
 
void sendValueAsTwo7bitBytes (int value)
 
void sendFloatAsFour7bitBytes (float val)
 
void sendFloatAsThree7bitBytes (float val)
 
void sendIntegerAsThree7bitBytes (int val)
 
+ + + + + + + +

+Variables

boolean parsingSysex
 
byte storedInputData [MAX_DATA_BYTES]
 
int sysexBytesRead
 
+

Detailed Description

+

uArm Protocol Arduino Sketch

+
Author
Alex Tan Alex Tan GNU
+ +

Macro Definition Documentation

+ +
+
+ + + + +
#define BUZZER_ALERT   (0x24)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define DATA_TYPE_BYTE   1
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define DATA_TYPE_FLOAT   4
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define DATA_TYPE_INTEGER   2
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define END_SYSEX   0xF7
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define GRIPPER_STATUS   (0X20)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define MAX_DATA_BYTES   64
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define PUMP_STATUS   (0X1D)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_ANALOG   (0X16)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_ANGLE   (0X10)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_COORDS   (0X12)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_DIGITAL   (0X14)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_EEPROM   (0X1A)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_SERIAL_NUMBER   (0x21)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define REPORT_FIRMWARE_VERSION   (0x23)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_STATUS   (0X1C)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define START_SYSEX   0xF0
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_CODE   (0XAA)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_FIRMATA_BUGFIX   2
+
+ +
+
+ +
+
+ + + + +
#define UARM_FIRMATA_MAJOR_VERSION   1
+
+ +
+
+ +
+
+ + + + +
#define UARM_FIRMATA_MINOR_VERSION   3
+
+ +
+
+ +
+
+ + + + +
#define UARM_FIRMWARE_BUGFIX   2
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_FIRMWARE_MAJOR_VERSION   1
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_FIRMWARE_MINOR_VERSION   7
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_ANALOG   (0X17)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_ANGLE   (0X11)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_COORDS   (0X13)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_DIGITAL   (0X15)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_EEPROM   (0X1B)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_LEFT_RIGHT_ANGLE   (0X1F)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_SERIAL_NUMBER   (0x22)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_STRETCH   (0X1E)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
boolean handleSysex (byte command,
byte argc,
byte * argv 
)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void loop ()
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void parse (byte inputData)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void processInput (void )
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void processSysexMessage (void )
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendFloatAsFour7bitBytes (float val)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendFloatAsThree7bitBytes (float val)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendIntegerAsThree7bitBytes (int val)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendValueAsTwo7bitBytes (int value)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void setup ()
+
+
Examples:
UArmProtocol.ino.
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
boolean parsingSysex
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
byte storedInputData[MAX_DATA_BYTES]
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
int sysexBytesRead
+
+
Examples:
UArmProtocol.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/_u_arm_text_control2_80_8ino.html b/_u_arm_text_control2_80_8ino.html new file mode 100644 index 0000000..5724872 --- /dev/null +++ b/_u_arm_text_control2_80_8ino.html @@ -0,0 +1,526 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/UArmTextControl2.0/UArmTextControl2.0.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
UArmTextControl2.0.ino File Reference
+
+
+
#include <uarm_library.h>
+
+ + + + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
String runCommand (String cmnd)
 
void getCommandValues (String cmnd, String parameters[], int parameterCount, float *valueArray)
 
String isValidCommand (String cmnd, String parameters[], int parameterCount)
 
String parseNextCommand ()
 
void setMove (double x, double y, double z, double goalSpeed)
 
bool isTimeToMove ()
 
void moveStep ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

byte currentStep = 255
 
int tipPin = 2
 
int buzzerPin = 3
 
unsigned int INTERP_INTVLS
 
long goalTime
 
double goalTimeStep
 
double x_array [51]
 
double y_array [51]
 
double z_array [51]
 
double currentHand =90
 
long buzzerStopTime = -1
 
String message = ""
 
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void getCommandValues (String cmnd,
String parameters[],
int parameterCount,
float * valueArray 
)
+
+ +
+
+ +
+
+ + + + + + + +
bool isTimeToMove ()
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
String isValidCommand (String cmnd,
String parameters[],
int parameterCount 
)
+
+ +
+
+ +
+
+ + + + + + + +
void loop ()
+
+ +
+
+ +
+
+ + + + + + + +
void moveStep ()
+
+ +
+
+ +
+
+ + + + + + + +
String parseNextCommand ()
+
+ +
+
+ +
+
+ + + + + + + + +
String runCommand (String cmnd)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void setMove (double x,
double y,
double z,
double goalSpeed 
)
+
+ +
+
+ +
+
+ + + + + + + +
void setup ()
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
int buzzerPin = 3
+
+ +
+
+ +
+
+ + + + +
long buzzerStopTime = -1
+
+ +
+
+ +
+
+ + + + +
double currentHand =90
+
+ +
+
+ +
+
+ + + + +
byte currentStep = 255
+
+

This sketch is a communication protocol for uArm using Serial.

+

All commands must be wrapped in brackets- [command] Any string of commands must end with an endline char '
+' for the commands to be processed

+

Commands: [moveX::Y::Z::S#] Where # is a double, This will move the robot to an XYZ position, in S is speed in centimeters / second from the current location to goal location Send Example: [moveX15Y-15Z20S25] Return Example: [OK moveX15Y-15Z20S2]

+

[handV#] Where # is an angle between 0 and 180. This will set the angle of the robots hand Send Example: [handV90] Return Example: [OK handV90]

+

[pumpV#] Where # is either 1 or 0. 1 means pump on, 0 means pump off. Send Example: [pumpV1] Return Example: [OK pumpV1]

+

[attachS#] Attach servo #. Same as servo #'s in uarm_library.h Send Example: [attachS1] Return Example: [OK attachS1]

+

[detachS#] Detach servo #. Same as servo #'s in uarm_library.h Send Example: [detachS1] Return Example: [OK detachS1]

+

[buzzF::T#] Set the buzzer to F Frequency for T time Send Example: [buzzF261.63T1] Return Example: [OK buzzF261.63T1]

+

[gcoords] Returns the XYZ position of the robot Send Example: [gcoords] Return Example: [coordsX::Y::Z#]

+

[gAngleS#] Returns the angle of any particular servo. Send Example: [angleA1] Return Example: [angleA###.##]

+

[gmoving] Returns whether or not the robot is currently moving. Returns either 1 or 0 if it is moving or not. Send Example: [gmoving] Return Example: [movingM1]

+

[gtip] Returns whether or not the tip of the robot is currently pressed. Returns either 1 if the tip is pressed, 0 if not. Send Example: [gtip] Return Example: [tipV1]

+ +
+
+ +
+
+ + + + +
long goalTime
+
+ +
+
+ +
+
+ + + + +
double goalTimeStep
+
+ +
+
+ +
+
+ + + + +
unsigned int INTERP_INTVLS
+
+ +
+
+ +
+
+ + + + +
String message = ""
+
+ +
+
+ +
+
+ + + + +
int tipPin = 2
+
+ +
+
+ +
+
+ + + + +
double x_array[51]
+
+ +
+
+ +
+
+ + + + +
double y_array[51]
+
+ +
+
+ +
+
+ + + + +
double z_array[51]
+
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/_u_f_servo_8cpp.html b/_u_f_servo_8cpp.html new file mode 100644 index 0000000..3046c5b --- /dev/null +++ b/_u_f_servo_8cpp.html @@ -0,0 +1,115 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.cpp File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UFServo.cpp File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/_u_f_servo_8h.html b/_u_f_servo_8h.html new file mode 100644 index 0000000..d11291d --- /dev/null +++ b/_u_f_servo_8h.html @@ -0,0 +1,247 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
UFServo.h File Reference
+
+
+
#include <inttypes.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  ServoPin_t
 
struct  servo_t
 
class  Servo
 
+ + + + + + + + + + + + + + + + + +

+Macros

#define Servo_VERSION   2
 
#define MIN_PULSE_WIDTH   500
 
#define MAX_PULSE_WIDTH   2500
 
#define DEFAULT_PULSE_WIDTH   1500
 
#define REFRESH_INTERVAL   20000
 
#define SERVOS_PER_TIMER   12
 
#define MAX_SERVOS   (_Nbr_16timers * SERVOS_PER_TIMER)
 
#define INVALID_SERVO   255
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define DEFAULT_PULSE_WIDTH   1500
+
+ +
+
+ +
+
+ + + + +
#define INVALID_SERVO   255
+
+ +
+
+ +
+
+ + + + +
#define MAX_PULSE_WIDTH   2500
+
+ +
+
+ +
+
+ + + + +
#define MAX_SERVOS   (_Nbr_16timers * SERVOS_PER_TIMER)
+
+ +
+
+ +
+
+ + + + +
#define MIN_PULSE_WIDTH   500
+
+ +
+
+ +
+
+ + + + +
#define REFRESH_INTERVAL   20000
+
+ +
+
+ +
+
+ + + + +
#define Servo_VERSION   2
+
+ +
+
+ +
+
+ + + + +
#define SERVOS_PER_TIMER   12
+
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/_u_f_servo_8h_source.html b/_u_f_servo_8h_source.html new file mode 100644 index 0000000..f205068 --- /dev/null +++ b/_u_f_servo_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UFServo.h
+
+
+Go to the documentation of this file.
1 /*
2  Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
3  Copyright (c) 2009 Michael Margolis. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 /*
21  A servo is activated by creating an instance of the Servo class passing
22  the desired pin to the attach() method.
23  The servos are pulsed in the background using the value most recently
24  written using the write() method.
25 
26  Note that analogWrite of PWM on pins associated with the timer are
27  disabled when the first servo is attached.
28  Timers are seized as needed in groups of 12 servos - 24 servos use two
29  timers, 48 servos will use four.
30  The sequence used to sieze timers is defined in timers.h
31 
32  The methods are:
33 
34  Servo - Class for manipulating servo motors connected to Arduino pins.
35 
36  attach(pin ) - Attaches a servo motor to an i/o pin.
37  attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds
38  default min is 544, max is 2400
39 
40  write() - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds)
41  writeMicroseconds() - Sets the servo pulse width in microseconds
42  read() - Gets the last written servo pulse width as an angle between 0 and 180.
43  readMicroseconds() - Gets the last written servo pulse width in microseconds. (was read_us() in first release)
44  attached() - Returns true if there is a servo attached.
45  detach() - Stops an attached servos from pulsing its i/o pin.
46  */
47 
48 #ifndef UFServo_h
49 #define UFServo_h
50 
51 #include <inttypes.h>
52 
53 /*
54  * Defines for 16 bit timers used with Servo library
55  *
56  * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
57  * timer16_Sequence_t enumerates the sequence that the timers should be allocated
58  * _Nbr_16timers indicates how many 16 bit timers are available.
59  */
60 
61 // Architecture specific include
62 #if defined(ARDUINO_ARCH_AVR)
63 #include "ServoTimers.h"
64 #elif defined(ARDUINO_ARCH_SAM)
65 #include "sam/ServoTimers.h"
66 #elif defined(ARDUINO_ARCH_SAMD)
67 #include "samd/ServoTimers.h"
68 #else
69 #error "This library only supports boards with an AVR, SAM or SAMD processor."
70 #endif
71 
72 #define Servo_VERSION 2 // software version of this library
73 
74 #define MIN_PULSE_WIDTH 500 // the shortest pulse sent to a servo
75 #define MAX_PULSE_WIDTH 2500 // the longest pulse sent to a servo
76 #define DEFAULT_PULSE_WIDTH 1500 // default pulse width when servo is attached
77 #define REFRESH_INTERVAL 20000 // minumim time to refresh servos in microseconds
78 
79 #define SERVOS_PER_TIMER 12 // the maximum number of servos controlled by one timer
80 #define MAX_SERVOS (_Nbr_16timers * SERVOS_PER_TIMER)
81 
82 #define INVALID_SERVO 255 // flag indicating an invalid servo index
83 
84 typedef struct {
85  uint8_t nbr :6 ; // a pin number from 0 to 63
86  uint8_t isActive :1 ; // true if this channel is enabled, pin not pulsed if false
87 } ServoPin_t ;
88 
89 typedef struct {
91  volatile unsigned int ticks;
92 } servo_t;
93 
94 class Servo
95 {
96 public:
97  Servo();
98  uint8_t attach(int pin); // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
99  uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
100  void detach();
101  void write(float value); // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds
102  void writeMicroseconds(int value); // Write pulse width in microseconds
103  int read(); // returns current pulse width as an angle between 0 and 180 degrees
104  int readMicroseconds(); // returns current pulse width in microseconds for this servo (was read_us() in first release)
105  bool attached(); // return true if this servo is attached, otherwise false
106 private:
107  uint8_t servoIndex; // index into the channel data for this servo
108  int8_t min; // minimum is this value times 4 added to MIN_PULSE_WIDTH
109  int8_t max; // maximum is this value times 4 added to MAX_PULSE_WIDTH
110 };
111 
112 #endif
Definition: UFServo.h:84
+ + +
int value
Definition: Calibration.ino:11
+
void writeMicroseconds(int value)
+
uint8_t attach(int pin)
+
Definition: UFServo.h:89
+
void write(float value)
+
void detach()
+
int read()
+
Definition: UFServo.h:94
+
volatile unsigned int ticks
Definition: UFServo.h:91
+
int readMicroseconds()
+
ServoPin_t Pin
Definition: UFServo.h:90
+
bool attached()
+
+ + +
+
+
+
+
+ + + diff --git a/a00001.html b/a00001.html new file mode 100644 index 0000000..bbacb6a --- /dev/null +++ b/a00001.html @@ -0,0 +1,186 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/GettingStarted/GettingStarted.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
GettingStarted.ino File Reference
+
+
+ +

GettingStarted Arduino Sketch. +More...

+
#include "uarm_library.h"
+
+ + + + + +

+Functions

void setup ()
 
void loop ()
 
+ + + +

+Variables

int value
 
+

Detailed Description

+

GettingStarted Arduino Sketch.

+
Author
Joe Song Alex Tan GNU
+ +

Function Documentation

+ +
+
+ + + + + + + +
void loop ()
+
+
Examples:
GettingStarted.ino.
+
+
+
+ +
+
+ + + + + + + +
void setup ()
+
+
Examples:
GettingStarted.ino.
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
int value
+
+
Examples:
GettingStarted.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00002.html b/a00002.html new file mode 100644 index 0000000..f62ede5 --- /dev/null +++ b/a00002.html @@ -0,0 +1,105 @@ + + + + + + + + + + + UArm Arduino Library: GettingStarted.ino + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
GettingStarted.ino
+
+
+
/*
* Table of Content
Function 1 - 4 : move to a certain point (f)
Fucntion d : detach servos
Function o : pump on
Function f : pump off
Function g : read current coordinate
Function 5 : Read Servo offset
*/
#include "uarm_library.h"
int value; // value is the data recevied
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial port at 9600 bps
}
void loop() {
if(Serial.available()>0)
{
char readSerial = Serial.read();
Serial.println(readSerial);
//---------------------------------- function 1 ------------------------------------
// function below is for move uArm from current position to absolute coordinate
// x = 13, y = -13, z = 3
if (readSerial == '1') {
uarm.move_to(13,-13,3);
delay(1000);
}
//---------------------------------- function 2 ------------------------------------
// function below is for move uArm from current position to absolute coordinate
// x = -13, y = -13, z = 3
if (readSerial == '2') {
uarm.move_to(-13,-13,3);
delay(1000);
}
//---------------------------------- function 3 ------------------------------------
// function below is for move uArm from current position to relatvie coordinate
// (dot) dx = 4, dy = -3, dz = 2 in 5 seconds
if (readSerial == '3') {
uarm.move_to(5,0,0,RELATIVE,2);
delay(1000);
}
//---------------------------------- function 4 ------------------------------------
// function below is for move uArm from current position to relatvie coordinate
// (dot) dx = -4, dy = 3, dz = -2 in 5 seconds
if (readSerial == '4') {
uarm.move_to(-4,3,-2,RELATIVE,5);
delay(1000);
}
//---------------------------------- function d ------------------------------------
// Detach Servo
if (readSerial == 'd') {
}
//---------------------------------- function a ------------------------------------
// Detach Servo
if (readSerial == 'a') {
}
//---------------------------------- function o ------------------------------------
// Pump on
if (readSerial == 'o') {
}
//---------------------------------- function f ------------------------------------
// Pump off
if (readSerial == 'f') {
}
//---------------------------------- function g ------------------------------------
// function below is for print current x,y,z absolute location
if (readSerial == 'g') {
Serial.print("The current location is ");
Serial.print(uarm.get_current_x());
Serial.print(" , ");
Serial.print(uarm.get_current_y());
Serial.print(" , ");
Serial.print(uarm.get_current_z());
Serial.println();
delay(1000);
}
//---------------------------------- function 5 ------------------------------------
// function below is for read servo offset
if (readSerial == '5') {
Serial.print("SERVO_ROT_NUM offset:");
Serial.print("SERVO_LEFT_NUM offset:");
Serial.print("SERVO_RIGHT_NUM offset:");
Serial.print("SERVO_HAND_ROT_NUM offset:");
}
} // close read available
}
+ + +
+
+
+
+
+ + + diff --git a/a00003.html b/a00003.html new file mode 100644 index 0000000..808a9e4 --- /dev/null +++ b/a00003.html @@ -0,0 +1,435 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/movement/movement.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
movement.ino File Reference
+
+
+ +

movement Arduino Sketch +More...

+
#include <uarm_library.h>
+
+ + + + + + + + + + + +

+Macros

#define MOVEMENT   0
 
#define SERVO_CACHE   1
 
#define PATHING   2
 
#define EASING   3
 
#define HAND_REL   4
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
void change_state (byte new_state)
 
void alert (byte beeps)
 
void move_home_position (float time)
 
void many_xyz_start_points (bool recalc_servos)
 
void path_moves (byte path_type)
 
void ease_moves (byte ease_type)
 
void hand_moves (byte relative)
 
void detach_all_servos ()
 
void attach_all_servos ()
 
+ + + +

+Variables

byte state
 
+

Detailed Description

+

movement Arduino Sketch

+
Author
Dave Corboy Alex Tan GNU
+ +

Macro Definition Documentation

+ +
+
+ + + + +
#define EASING   3
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define HAND_REL   4
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define MOVEMENT   0
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define PATHING   2
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_CACHE   1
+
+
Examples:
movement.ino.
+
+
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void alert (byte beeps)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + +
void attach_all_servos ()
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + + +
void change_state (byte new_state)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + +
void detach_all_servos ()
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + + +
void ease_moves (byte ease_type)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + + +
void hand_moves (byte relative)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + +
void loop ()
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + + +
void many_xyz_start_points (bool recalc_servos)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + + +
void move_home_position (float time)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + + +
void path_moves (byte path_type)
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + + + + +
void setup ()
+
+
Examples:
movement.ino.
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
byte state
+
+
Examples:
movement.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00004.html b/a00004.html new file mode 100644 index 0000000..0b1e6a0 --- /dev/null +++ b/a00004.html @@ -0,0 +1,105 @@ + + + + + + + + + + + UArm Arduino Library: movement.ino + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
movement.ino
+
+
+
#include <uarm_library.h>
// states
#define MOVEMENT 0
#define SERVO_CACHE 1
#define PATHING 2
#define EASING 3
#define HAND_REL 4
byte state;
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial port at 9600 bps
// uArm init
// pinMode(STOPPER, INPUT_PULLUP); digitalWrite(STOPPER, HIGH);
// pinMode(BTN_D4, INPUT_PULLUP); digitalWrite(BTN_D4, HIGH);
// pinMode(BTN_D7, INPUT_PULLUP); digitalWrite(BTN_D7, HIGH);
// pinMode(BUZZER, OUTPUT); digitalWrite(BUZZER, LOW);
// pinMode(PUMP_EN, OUTPUT); digitalWrite(PUMP_EN, LOW);
// pinMode(VALVE_EN, OUTPUT); digitalWrite(VALVE_EN, LOW);
// uArm init
alert(2);
}
void loop() {
if (Serial.available() > 0) {
byte input = Serial.read();
switch (state) {
case MOVEMENT:
if (input == 's') {
} else if (input == 'p') {
} else if (input == 'e') {
} else if (input == 'h') {
}
break;
if (input == 'q') {
} else if (input == 'b') {
// detaching the servos after each move forces the cache to be recalculated, generating the errors
} else if (input == 'a') {
// without detaching, the servo angle cache remains in place and initial movement has less jitter
}
break;
case PATHING:
if (input == 'q') {
} else if (input == 'l') {
path_moves(PATH_LINEAR); // PATH_LINEAR creates a linear path between the start end and point
} else if (input == 'a') {
path_moves(PATH_ANGLES); // PATH_ANGLES instead interpolates the start and ending servos positions
}
break;
case EASING:
if (input == 'q') {
} else if (input == 'c') {
} else if (input == 'e') {
} else if (input == 'i') {
} else if (input == 'o') {
} else if (input == 'l') {
}
break;
case HAND_REL:
if (input == 'q') {
} else if (input == 'n') {
} else if (input == 'r') {
}
break;
}
}
}
void change_state(byte new_state) {
switch (new_state) {
case MOVEMENT:
Serial.println(F("This sketch demonstrates the changes added to uArm movement functions."));
Serial.println(F("Select an item for demonstration:"));
Serial.println(F("(s) Servo caching"));
Serial.println(F("(p) Path options"));
Serial.println(F("(e) Easing of movement"));
Serial.println(F("(h) Hand-relative orientation"));
break;
Serial.println(F("Servo values are now cached to remove readAngle error introduced at the beginning of a move."));
Serial.println(F("(b) Before servo caching"));
Serial.println(F("(a) After servo caching"));
Serial.println(F("(q) Quit to top menu"));
break;
case PATHING:
Serial.println(F("In addition to the original linear path, a new option to interpolate"));
Serial.println(F("servo angles can sometimes offer smoother, non-linear movement."));
Serial.println(F("(l) Linear path demo"));
Serial.println(F("(a) Angular path demo"));
Serial.println(F("(q) Quit to top menu"));
break;
break;
case EASING:
Serial.println(F("Several new movement easing function have also been added."));
Serial.println(F("(c) Original cubic easing"));
Serial.println(F("(e) Quadratic ease-in/ease-out"));
Serial.println(F("(i) Quadratic ease-in only"));
Serial.println(F("(o) Quadratic ease-out only"));
Serial.println(F("(l) Linear (no easing)"));
Serial.println(F("(q) Quit to top menu"));
break;
break;
case HAND_REL:
Serial.println(F("Hand rotation can automatically maintain orientation through base rotation."));
Serial.println(F("(n) No hand orientation"));
Serial.println(F("(r) Rotation-relative hand"));
Serial.println(F("(q) Quit to top menu"));
break;
}
Serial.println();
state = new_state;
}
void alert(byte beeps) {
uarm.alert(beeps, 50, 50);
}
void move_home_position(float time) {
uarm.move_to(0, -21, 20, 90, F_ABSOLUTE, time, PATH_ANGLES, INTERP_EASE_INOUT,true);
}
void many_xyz_start_points(bool recalc_servos) {
// detaching the servos after each move forces the cache to be recalculated, generating the errors
// this mimics the previous behavior where positions were always recalculated between moves
if (recalc_servos) {
}
uarm.move_to(-14, -19, 20, 90, F_ABSOLUTE, .5, PATH_ANGLES, INTERP_EASE_INOUT, true);
if (recalc_servos) {
}
delay(500);
uarm.move_to(-7, -26, 14, 90, F_ABSOLUTE, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
if (recalc_servos) {
}
delay(500);
uarm.move_to(0, -19, 20, 90, F_ABSOLUTE, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
if (recalc_servos) {
}
delay(500);
uarm.move_to(7, -26, 14, 90, F_ABSOLUTE, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
if (recalc_servos) {
}
delay(500);
uarm.move_to(14, -19, 20, 90, F_ABSOLUTE, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
if (recalc_servos) {
}
delay(500);
}
void path_moves(byte path_type) {
// PATH_LINEAR creates a linear path between the start end and point
// PATH_ANGLES instead interpolates the start and ending servos positions
uarm.move_to(-7, -14, 10, 90, F_ABSOLUTE, 1, path_type, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(15, -26, 20, 90, F_ABSOLUTE, 1, path_type, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(-15, -26, 20, 90, F_ABSOLUTE, 1, path_type, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(7, -14, 10, 90, F_ABSOLUTE, 1, path_type, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(0, -21, 20, 90, F_ABSOLUTE, 1, path_type, INTERP_EASE_INOUT,true);
}
void ease_moves(byte ease_type) {
uarm.move_to(-10, -26, 15, 90, F_ABSOLUTE, 1, PATH_ANGLES, INTERP_EASE_INOUT,true);
delay(750);
uarm.move_to(10, -26, 15, 90, F_ABSOLUTE, .75, PATH_ANGLES, ease_type,true);
delay(500);
uarm.move_to(10, -14, 15, 90, F_ABSOLUTE, .75, PATH_ANGLES, ease_type,true);
delay(500);
uarm.move_to(-10, -14, 15, 90, F_ABSOLUTE, .75, PATH_ANGLES, ease_type,true);
delay(500);
uarm.move_to(-10, -26, 15, 90, F_ABSOLUTE, .75, PATH_ANGLES, ease_type,true);
delay(750);
uarm.move_to(0, -21, 20, 90, F_ABSOLUTE, 1, PATH_ANGLES, INTERP_EASE_INOUT,true);
}
void hand_moves(byte relative) {
// F_HAND_ROT_REL will keep the hand orientation contstant through a move
uarm.move_to(-15, -15, 12, relative ? 0 : 90, relative, 1, PATH_ANGLES, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(-15, -15, 8, relative ? 0 : 90, relative, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(-15, -15, 17, relative ? 0 : 90, relative, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(15, -15, 17, relative ? 0 : 90, relative, 2, PATH_ANGLES, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(15, -15, 8, relative ? 0 : 90, relative, .5, PATH_ANGLES, INTERP_EASE_INOUT,true);
delay(500);
uarm.move_to(0, -21, 20, 90, F_ABSOLUTE, 1, PATH_ANGLES, INTERP_EASE_INOUT,true);
}
{
}
{
}
+ + +
+
+
+
+
+ + + diff --git a/a00005.html b/a00005.html new file mode 100644 index 0000000..17f258b --- /dev/null +++ b/a00005.html @@ -0,0 +1,867 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/UArmProtocol/UArmProtocol.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
UArmProtocol.ino File Reference
+
+
+ +

uArm Protocol Arduino Sketch +More...

+
#include <uarm_library.h>
+#include <EEPROM.h>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define MAX_DATA_BYTES   64
 
#define UARM_FIRMATA_MAJOR_VERSION   1
 
#define UARM_FIRMATA_MINOR_VERSION   3
 
#define UARM_FIRMATA_BUGFIX   2
 
#define UARM_FIRMWARE_MAJOR_VERSION   1
 
#define UARM_FIRMWARE_MINOR_VERSION   7
 
#define UARM_FIRMWARE_BUGFIX   2
 
#define START_SYSEX   0xF0
 
#define END_SYSEX   0xF7
 
#define UARM_CODE   (0XAA)
 
#define READ_ANGLE   (0X10)
 
#define WRITE_ANGLE   (0X11)
 
#define READ_COORDS   (0X12)
 
#define WRITE_COORDS   (0X13)
 
#define READ_DIGITAL   (0X14)
 
#define WRITE_DIGITAL   (0X15)
 
#define READ_ANALOG   (0X16)
 
#define WRITE_ANALOG   (0X17)
 
#define READ_EEPROM   (0X1A)
 
#define WRITE_EEPROM   (0X1B)
 
#define SERVO_STATUS   (0X1C)
 
#define PUMP_STATUS   (0X1D)
 
#define WRITE_STRETCH   (0X1E)
 
#define WRITE_LEFT_RIGHT_ANGLE   (0X1F)
 
#define GRIPPER_STATUS   (0X20)
 
#define READ_SERIAL_NUMBER   (0x21)
 
#define WRITE_SERIAL_NUMBER   (0x22)
 
#define REPORT_FIRMWARE_VERSION   (0x23)
 
#define BUZZER_ALERT   (0x24)
 
#define DATA_TYPE_BYTE   1
 
#define DATA_TYPE_INTEGER   2
 
#define DATA_TYPE_FLOAT   4
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
boolean handleSysex (byte command, byte argc, byte *argv)
 
void processInput (void)
 
void parse (byte inputData)
 
void processSysexMessage (void)
 
void sendValueAsTwo7bitBytes (int value)
 
void sendFloatAsFour7bitBytes (float val)
 
void sendFloatAsThree7bitBytes (float val)
 
void sendIntegerAsThree7bitBytes (int val)
 
+ + + + + + + +

+Variables

boolean parsingSysex
 
byte storedInputData [MAX_DATA_BYTES]
 
int sysexBytesRead
 
+

Detailed Description

+

uArm Protocol Arduino Sketch

+
Author
Alex Tan Alex Tan GNU
+ +

Macro Definition Documentation

+ +
+
+ + + + +
#define BUZZER_ALERT   (0x24)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define DATA_TYPE_BYTE   1
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define DATA_TYPE_FLOAT   4
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define DATA_TYPE_INTEGER   2
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define END_SYSEX   0xF7
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define GRIPPER_STATUS   (0X20)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define MAX_DATA_BYTES   64
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define PUMP_STATUS   (0X1D)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_ANALOG   (0X16)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_ANGLE   (0X10)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_COORDS   (0X12)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_DIGITAL   (0X14)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_EEPROM   (0X1A)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define READ_SERIAL_NUMBER   (0x21)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define REPORT_FIRMWARE_VERSION   (0x23)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_STATUS   (0X1C)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define START_SYSEX   0xF0
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_CODE   (0XAA)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_FIRMATA_BUGFIX   2
+
+ +
+
+ +
+
+ + + + +
#define UARM_FIRMATA_MAJOR_VERSION   1
+
+ +
+
+ +
+
+ + + + +
#define UARM_FIRMATA_MINOR_VERSION   3
+
+ +
+
+ +
+
+ + + + +
#define UARM_FIRMWARE_BUGFIX   2
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_FIRMWARE_MAJOR_VERSION   1
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define UARM_FIRMWARE_MINOR_VERSION   7
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_ANALOG   (0X17)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_ANGLE   (0X11)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_COORDS   (0X13)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_DIGITAL   (0X15)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_EEPROM   (0X1B)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_LEFT_RIGHT_ANGLE   (0X1F)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_SERIAL_NUMBER   (0x22)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define WRITE_STRETCH   (0X1E)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
boolean handleSysex (byte command,
byte argc,
byte * argv 
)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void loop ()
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void parse (byte inputData)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void processInput (void )
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void processSysexMessage (void )
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendFloatAsFour7bitBytes (float val)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendFloatAsThree7bitBytes (float val)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendIntegerAsThree7bitBytes (int val)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + +
void sendValueAsTwo7bitBytes (int value)
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void setup ()
+
+
Examples:
UArmProtocol.ino.
+
+
+
+

Variable Documentation

+ +
+
+ + + + +
boolean parsingSysex
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
byte storedInputData[MAX_DATA_BYTES]
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
int sysexBytesRead
+
+
Examples:
UArmProtocol.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00006.html b/a00006.html new file mode 100644 index 0000000..a87ae87 --- /dev/null +++ b/a00006.html @@ -0,0 +1,105 @@ + + + + + + + + + + + UArm Arduino Library: UArmProtocol.ino + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
UArmProtocol.ino
+
+
+
#include <uarm_library.h>
#include <EEPROM.h>
#define MAX_DATA_BYTES 64 // max number of data bytes in incoming messages
#define UARM_FIRMATA_MAJOR_VERSION 1
#define UARM_FIRMATA_MINOR_VERSION 3
#define UARM_FIRMATA_BUGFIX 2
#define UARM_FIRMWARE_MAJOR_VERSION 1
#define UARM_FIRMWARE_MINOR_VERSION 7
#define UARM_FIRMWARE_BUGFIX 2
#define START_SYSEX 0xF0 // start a MIDI Sysex message
#define END_SYSEX 0xF7 // end a MIDI Sysex message
#define UARM_CODE (0XAA)
#define READ_ANGLE (0X10)
#define WRITE_ANGLE (0X11)
#define READ_COORDS (0X12)
#define WRITE_COORDS (0X13)
#define READ_DIGITAL (0X14)
#define WRITE_DIGITAL (0X15)
#define READ_ANALOG (0X16)
#define WRITE_ANALOG (0X17)
#define READ_EEPROM (0X1A)
#define WRITE_EEPROM (0X1B)
#define SERVO_STATUS (0X1C)
#define PUMP_STATUS (0X1D)
#define WRITE_STRETCH (0X1E)
#define WRITE_LEFT_RIGHT_ANGLE (0X1F)
#define GRIPPER_STATUS (0X20)
#define READ_SERIAL_NUMBER (0x21)
#define WRITE_SERIAL_NUMBER (0x22)
#define REPORT_FIRMWARE_VERSION (0x23)
#define BUZZER_ALERT (0x24)
#define DATA_TYPE_BYTE 1
#define DATA_TYPE_INTEGER 2
#define DATA_TYPE_FLOAT 4
boolean parsingSysex;
void setup()
{
Serial.begin(57600);
}
void loop()
{
while(Serial.available())
}
boolean handleSysex(byte command, byte argc, byte *argv)
{
if (command == UARM_CODE)
{
byte uarmCommand;
uarmCommand = argv[0];
// CMD 10 Read Angle
if (uarmCommand == READ_ANGLE)
{
byte servo_num = argv[1];
boolean withOffset = argv[2]; // if servo_offset = 0 there is offset inside
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(servo_num);
float angle = uarm.read_servo_angle(servo_num,withOffset);
Serial.write(END_SYSEX);
return true;
}
// CMD 11 Write Angle
if (uarmCommand == WRITE_ANGLE)
{
byte servo_num = argv[1];
double servo_angle = argv[2] + (argv[3] << 7) + float(argv[4])/100;
boolean writeWithOffset = argv[5];
uarm.write_servo_angle(servo_num,servo_angle,writeWithOffset);
return true;
}
// CMD 12 Read Coords
if (uarmCommand == READ_COORDS)
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(READ_COORDS);
float x = uarm.get_current_x();
float y = uarm.get_current_y();
float z = uarm.get_current_z();
Serial.write(END_SYSEX);
return true;
}
// CMD 13 Write Coords
if (uarmCommand == WRITE_COORDS)
{
float x = argv[2] + (argv[3] << 7) + float(argv[4])/100;
if(argv[1] == 1)
x = -x;
float y = argv[6] + (argv[7] << 7) + float(argv[8])/100;
if(argv[5] == 1)
y = -y;
float z = argv[10] + (argv[11] << 7) + float(argv[12])/100;
if(argv[9] == 1)
z = -z;
float hand_angle = argv[13] + (argv[14] << 7) + float(argv[15])/100;
byte relative_flags = argv[16];
float time_spend = argv[17] + (argv[18] << 7) + float(argv[19])/100;
byte path_type = argv[20];
byte ease_type = argv[21];
boolean enable_hand = false;
if (argv[22] == 1 || argv[22] ==0)
enable_hand = argv[22];
delay(5);
uarm.move_to(x,y,z,hand_angle,relative_flags,time_spend,path_type,ease_type,enable_hand);
delay(10);
}
// CMD 14 Read Digital
if (uarmCommand == READ_DIGITAL)
{
byte pin_num = argv[1];
byte pin_mode = argv[2]; // 0 means input 1 means input_pullup
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(pin_num);
pin_mode == 1 ? pinMode(pin_num, INPUT_PULLUP) : pinMode(pin_num, INPUT);
Serial.write(digitalRead(pin_num));
Serial.write(END_SYSEX);
}
return true;
}
// CMD 15 Write Digital
if (uarmCommand == WRITE_DIGITAL)
{
byte pin_num= argv[1];
pinMode(pin_num, OUTPUT);
byte pin_mode = argv[2];
pin_mode == 1 ? digitalWrite(pin_num,HIGH) : digitalWrite(pin_num,LOW);
return true;
}
// CMD 16 Read Analog
if (uarmCommand == READ_ANALOG)
{
byte pin_num = argv[1];
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(pin_num);
sendValueAsTwo7bitBytes(analogRead(pin_num));
Serial.write(END_SYSEX);
}
return true;
}
// CMD 17 Write Analog
if (uarmCommand == WRITE_ANALOG)
{
byte pin_num= argv[1];
pinMode(pin_num, OUTPUT);
double analog_val = argv[2] + (argv[3] << 7);
analogWrite(pin_num,constrain(analog_val,0,255));
return true;
}
// CMD 1A Read EEPROM
if (uarmCommand == READ_EEPROM)
{
byte data_type = argv[1];
int eeprom_add = argv[2] + (argv[3] << 7);
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(READ_EEPROM);
switch(data_type)
{
{
sendValueAsTwo7bitBytes(EEPROM.read(eeprom_add));
break;
}
{
int i_val = 0;
sendIntegerAsThree7bitBytes(EEPROM.get(eeprom_add, i_val));
break;
}
{
float f_val = 0.0f;
sendFloatAsFour7bitBytes(EEPROM.get(eeprom_add,f_val));
break;
}
}
Serial.write(END_SYSEX);
return true;
}
// CMD 1B Write EEPROM
if (uarmCommand == WRITE_EEPROM)
{
byte data_type = argv[1];
byte eeprom_add = argv[2] + (argv[3] << 7);
// byte eeprom_val = argv[3] + (argv[4] << 7);
// EEPROM.write(eeprom_add,eeprom_val);
switch(data_type)
{
{
EEPROM.write(eeprom_add,argv[4] + (argv[5] << 7));
break;
}
{
int int_val = 0;
int_val = argv[5] + (argv[6] << 7);
int_val = ((argv[4] == 1) ? -int_val : int_val);
EEPROM.put(eeprom_add, int_val);
break;
}
{
float f_val = argv[5] + (argv[6] << 7) + float(argv[7])/100;
f_val = ((argv[4] == 1) ? -f_val : f_val);
EEPROM.put(eeprom_add, f_val);
break;
}
}
return true;
}
// CMD 1C Servo Attach or Detach
if (uarmCommand == SERVO_STATUS)
{
// uarm.detach_all_servos();
byte servo_num = argv[1];
boolean servo_status = argv[2] == 0 ? false : true;
uarm.set_servo_status(servo_status, servo_num);
return true;
}
// CMD 1D Pump Status
if (uarmCommand == PUMP_STATUS)
{
byte pump_status = argv[1];
pump_status == 1 ? uarm.pump_on() : uarm.pump_off();
return true;
}
// CMD 20 GRIPPER Status
if (uarmCommand == GRIPPER_STATUS)
{
byte gripper_status = argv[1];
gripper_status == 1 ? uarm.gripper_catch() : uarm.gripper_release();
return true;
}
//0X1E WRITE_STRETCH
if (uarmCommand == WRITE_STRETCH)
{
double length = argv[2] + (argv[3] << 7) + float(argv[4])/100;
length = argv[1] == 1 ? -length : length;
double height = argv[6] + (argv[7] << 7) + float(argv[8])/100;
height = argv[5] == 1 ? -height : height;
uarm.write_stretch_height(length,height);
return true;
}
//0X1F WRITE_LEFT_RIGHT_ANGLE
if (uarmCommand == WRITE_LEFT_RIGHT_ANGLE)
{
double left = argv[1] + (argv[2] << 7) + float(argv[3])/100;
double right = argv[4] + (argv[5] << 7) + float(argv[6])/100;
boolean withOffset = argv[7];
uarm.write_left_right_servo_angle(left,right, withOffset);
return true;
}
//0X22 WRITE_SERIAL_NUMBER
if (uarmCommand == WRITE_SERIAL_NUMBER)
{
for(byte i=0; i<14; i++){
EEPROM.write(SERIAL_NUMBER_ADDRESS+i+1, argv[i+1]);
}
return true;
}
//0X21 READ_SERIAL_NUMBER
if (uarmCommand == READ_SERIAL_NUMBER)
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
if (EEPROM.read(SERIAL_NUMBER_ADDRESS) == CONFIRM_FLAG) {
Serial.write(READ_SERIAL_NUMBER);
for(byte i=0; i<14; i++) {
byte c = EEPROM.read(SERIAL_NUMBER_ADDRESS+i+1);
Serial.write(c);
}
}
Serial.write(END_SYSEX);
return true;
}
//0X23 REPORT_FIRMWARE_VERSION
if (uarmCommand == REPORT_FIRMWARE_VERSION)
{
Serial.write(START_SYSEX);
Serial.write(UARM_CODE);
Serial.write(REPORT_FIRMWARE_VERSION);
Serial.write(UARM_FIRMWARE_BUGFIX);
Serial.write(END_SYSEX);
return true;
}
if (uarmCommand == BUZZER_ALERT)
{
byte times = argv[1];
byte run_time = argv[2];
byte stop_time = argv[3];
uarm.alert(times, run_time, stop_time);
return true;
}
}
return false;
}
void processInput(void)
{
int inputData = Serial.read();
if (inputData != -1) {
parse(inputData);
}
}
void parse(byte inputData)
{
int command;
if (parsingSysex) {
if (inputData == END_SYSEX) {
//stop sysex byte
parsingSysex = false;
//fire off handler function
} else {
//normal data byte - add to buffer
}
}
else {
// remove channel info from command byte if less than 0xF0
if (inputData < 0xF0) {
command = inputData & 0xF0;
} else {
command = inputData;
// commands in the 0xF* range don't use channel data
}
switch (command) {
parsingSysex = true;
break;
}
}
}
{
switch (storedInputData[0]) {
default:
}
}
{
Serial.write(value & 0x7F);
Serial.write(value >> 7 & 0x7F);
}
void sendFloatAsFour7bitBytes(float val){
int int_val = val;
int decimal_val = int(round((val - int_val)*100));
Serial.write(val > 0 ? 0 : 1);
Serial.write(abs(int_val) & B01111111 );
Serial.write(abs(int_val) >> 7 & B01111111);
Serial.write(abs(decimal_val) & 0x7F );
}
void sendFloatAsThree7bitBytes(float val){
int int_val = val;
int decimal_val = int(round((val - int_val)*100));
Serial.write(abs(int_val) & B01111111 );
Serial.write(abs(int_val) >> 7 & B01111111);
Serial.write(abs(decimal_val) & 0x7F );
}
int symbol = val > 0 ? 0 : 1;
Serial.write(symbol);
Serial.write(abs(val) & B01111111 );
Serial.write(abs(val) >> 7 & B01111111);
}
+ + +
+
+
+
+
+ + + diff --git a/a00007.html b/a00007.html new file mode 100644 index 0000000..e1dd465 --- /dev/null +++ b/a00007.html @@ -0,0 +1,223 @@ + + + + + + + + + + + UArm Arduino Library: uArm Arduino Library Release Note + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+
+ + +
+ +
+ +
+
+
+
uArm Arduino Library Release Note
+
+
+

[1.7.2] - 2016-06-30

+

Fix

+
    +
  • attach servo even not calibrate
  • +
  • rewrite set_servo_status replace attach_servo detach_servo
  • +
  • execute write_stretch_height event not calibrate
  • +
  • Doxygen Document Support
  • +
+

[1.7.1] - 2016-06-28

+

Fix

+
    +
  • Set Current angle after attach servo
  • +
  • rewrite set_servo_status replace attach_servo detach_servo
  • +
+

[1.7.0] - 2016-06-24

+

Fix

+ +

[1.6.2] - 2016-06-24

+

Fix

+
    +
  • Change Lots of function names according to Programming Rules
  • +
+

[1.6.1] - 2016-06-22

+

Fix

+
    +
  • Fix MoveTo Lock Hand Servo issue.
  • +
+

[1.6.0] - 2016-06-20

+

Fix

+
    +
  • Add Limit for x*x + y*y < 32, Fix When x*x + y*y > 32 uArm will get wired position
  • +
+

Changes

+ +

[1.5.11] - 2016-06-07

+

Fix

+
    +
  • Fix Test.ino unused function
  • +
  • Update Code Format
  • +
+

[1.5.10] - 2016-06-07

+

Fix

+
    +
  • At moveToAtOnce(x,y,z)
  • +
+

[1.5.9] - 2016-06-01

+

Fix

+
    +
  • Fix writeStretch() offset address not correct
  • +
+

[1.5.8] - 2016-05-07

+

Fix

+
    +
  • Speed up Calibration, reduce delay
  • +
  • Use writeAngle() Function in MoveTo
  • +
+

Changes

+ +

[1.5.6] - 2016-05-06

+

Fix

+
    +
  • Update SERIAL_NUMBER_ADDRESS to 100, Update CALIBRATION_STRETCH_FLAG mark value is CONFIRM_FLAG
  • +
+

[1.5.5] - 2016-05-05

+

Fix

+
    +
  • if SERIAL_NUMBER_ADDRESS equal CONFIRM_FLAG 0x80, then Serial Number exist in EEPROM
  • +
+

[1.5.4] - 2016-05-02

+

Fix

+
    +
  • if SERIAL_NUMBER_ADDRESS equal SERIAL_NUMBER_ADDRESS, then Serial Number exist in EEPROM
  • +
+

[1.5.3] - 2016-05-02

+

Changes

+
    +
  • Add readSerialNumber & writeSerialNumber function (Serial Number: Address 1024, size:14)
  • +
+

[1.5.2] - 2016-04-29

+

Changes

+
    +
  • Add Example, MoveTest, GetXYZ, Recording Mode
  • +
+

[1.5.2] - 2016-04-29

+

Changes

+
    +
  • Cancel v.1.5.0 read offset from EEPROM.
  • +
+

[1.5.0] - 2016-04-14

+

Changes

+
    +
  • Initialize servo offset & linear offset from EEPROM to global values, prevent read EEPROM every time
  • +
  • Use EEPROM.get() & EEPROM.put() to read & write value in EEPROM instead of saveDataToRom()
  • +
  • rename function readToAngle to analogToAngle
  • +
  • Change Offset address in EEPROM
  • +
+

[1.4.0] - 2016-04-12

+

Changes

+
    +
  • uarm_library.cpp writeServoAngle resume LEFT & RIGHT ANGLE
  • +
  • ToDo: remove LEFT & RIGHT ANGLE from WriteServoAngle (For Safety)
  • +
+

[1.3.1] - 2016-04-12

+

Changes

+
    +
  • uarm_library.cpp writeLeftRightServoAngle() Update the angle between left & right
  • +
  • Change Folder examples folder & stretch name From UarmFirmata to UArmFirmata
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00008.html b/a00008.html new file mode 100644 index 0000000..15f6939 --- /dev/null +++ b/a00008.html @@ -0,0 +1,299 @@ + + + + + + + + + + + UArm Arduino Library: Protocol Specification + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+
+ + +
+ +
+ +
+
+
+
Protocol Specification
+
+
+

DATA TYPE

+
    +
  • FB, Means Firmata Byte, Each FB = 7bits Byte
  • +
+ + + + + + + + + + + + + + + +
Type Short Name Range Bits Actual Bytes
1FB Byte 1FB Byte 0 ~ 127 7 1
2FB unsigned Integer 2FB uint 0 ~ 16383 14 2
3FB Integer 3FB int -16383 ~ 16383 15 3
3FB Float 3FB float 0.00 ~ 16383.99 21 3
4FB Float 4FB float -16383.99 ~ 16383.99 22 4
----------------— - :---------------—: :---—: :—:
+

DATA TYPE - 1FB Byte

+
1FB byte = bytes[0]

Sequence | Range | Remark -------— | :--—: | ---— 0 | 0 ~ 127 | -------— | :--—: | ---—

+

DATA TYPE - 2FB uint

+
2FB unit = bytes[0] + bytes[1]<<7
+ + + + + + + + +
Sequence Range Remark
0 0 ~ 127 MSB
1 0 ~ 127 LSB
-----— :--—: ---—
+

DATA TYPE - 3FB int

+
3FB int = (bytes[0]==0 ? 1 : -1) * (bytes[1] + bytes[2]<<7)
+ + + + + + + + + + +
Sequence Range Remark
0 0 or 1 Negative - 1
1 0 ~ 127 MSB
2 0 ~ 127 LSB
-----— :--—: ---------—
+

DATA TYPE - 3FB float

+
3FB Float = bytes[0] + bytes[1]<<7 + bytes[2]/100.00
+ + + + + + + + + + +
Sequence Range Remark
0 0 ~ 127 Integer MSB
1 0 ~ 127 Integer LSB
2 0 ~ 99 Decimal Val
-----— :--—: ---------—
+

DATA TYPE - 4FB float

+
4FB Float = (bytes[0]==0 ? 1 : -1) * (bytes[1] + bytes[2]<<7 + bytes[3]/100.00)
+ + + + + + + + + + + + +
Sequence Range Remark
0 0 or 1 Negative - 1
1 0 ~ 127 Integer MSB
2 0 ~ 127 Integer LSB
3 0 ~ 99 Decimal Val
-----— :--—: ---------—
+

Protocol Request Message Type

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Command Data Total Bytes Remark
UARM_CODE 0xAA N/A 1 UARM First Level Command
Type Command Data Total Bytes Remark
READ_ANGLE 0x10 1fb Byte X2 6 Return Servo Angle from uArm
WRITE_ANGLE 0x11 1fb Byte X1 + 3fb Float X1 9 Write Servo Angle to uArm
READ_COORDS 0x12 4 Read Coordinate from uArm
WRITE_COORDS 0x13 4fb Float X5 + 1fb Byte X3 27 Move uArm to the Coordinate
READ_DIGITAL 0x14 1fb Byte X2 6 Read Digital from uArm
WRITE_DIGITAL 0x15 1fb Byte X2 6 Write Digital to uArm
READ_ANALOG 0x16 1fb Byte 5 Read Analog from uArm
WRITE_ANALOG 0x17 1fb Byte + 4b Float 9 Write Analog to uArm
READ_EEPROM 0x1A 1fb Byte + 2b uint 7 Read the value from EEPROM
WRITE_EEPROM 0x1B 1fb Byte + 2b uint + 2b uint/3b int/4b float 9/10/11 Write the value to EEPROM
DETACH_SERVO 0x1C 0 4 Detach All Servo
PUMP_STATUS 0x1D 1fb Byte 5 Control Pump
GRIPPER_STATUS 0x20 1fb Byte 5 Control Gripper
WRITE_STRETCH 0x1E 4b Float X2 12 Move uArm to Position with Stretch and Height
WRITE_LEFT_RIGHT_ANGLE 0x1F 3b Float X2 10 Write Left & Right Servo Angle
READ_SERIAL_NUMBER 0x21 0 4 Read Serial Number from EEPROM
WRITE_SERIAL_NUMBER 0x22 1fb Byte X14 18 Write Serial Number from EEPROM
REPORT_LIBRARY_VERSION 0x23 0 4 Report uArm Library Version
+

Request READ_ANGLE Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_ANGLE | 0x10 | 1 | 4 | Servo Number | 0/1/2/3 | 1 | SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM 5 | with Offset | 0/1 | 1 | 0 False, 1 True 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 6 | ---------------------------------------------------------------—

+

Request WRITE_ANGLE Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | -----------------------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_ANGLE | 0x11 | 1 | 4 | Servo Number | 0/1/2/3 | 1 | SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM 5 | Servo Angle | 0.00 - 16383.99 (3b Float) | 3 | 6 | with Offset | 0/1 | 1 | 0 False, 1 True 7 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 9 | ---------------------------------------------------------------—

+

Request READ_COORDS Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0x12 | 1 | 3 | READ_COORDS | 0x10 | 1 | 4 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 4 | ---------------------------------------------------------------—

+

Request WRITE_COORDS Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | -----------— | ----------------------------— | --— | -------------------------------------------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_COORDS | 0x13 | 1 | 4 | X Axis | -16383.99 - 16383.99 (4b Float) | 4 | 5 | Y Axis | -16383.99 - 16383.99 (4b Float) | 4 | 6 | Z Axis | -16383.99 - 16383.99 (4b Float) | 4 | 7 | Hand Axis | -16383.99 - 16383.99 (4b Float) | 4 | 8 | relative_flags | 0/1 | 1 | 0 relative, 1 absolute 9 | time_spend | -16383.99 - 16383.99 (4b Float) | 4 | 10 | path_type | 0/1 | 1 | 0 PATH_LINEAR, 1 PATH_ANGLES 11 | ease_type | 0/1 | 1 | 0 PATH_LINEAR, 1 PATH_ANGLES 12 | END_SYSEX | 0xF7 | 1 | 0 INTERP_EASE_INOUT_CUBIC, 1 INTERP_LINEAR, 2 INTERP_EASE_INOUT, 3 INTERP_EASE_IN, 4 INTERP_EASE_OUT -----— | ---------— | ---------— | 27 | ---------------------------------------------------------------—

+

Request READ_DIGITAL Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_DIGITAL | 0x14 | 1 | 4 | pin number | 0-127 | 1 | Pin Number 5 | pin mode | 0/1 | 1 | 0 INPUT, 1 PULL_UP 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 6 | ---------------------------------------------------------------—

+

Request WRITE_DIGITAL Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ----------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_DIGITAL | 0x15 | 1 | 4 | pin number | 0-127 | 1 | Pin Number 5 | Value | 0/1 | 1 | 0 LOW, 1 HIGH 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 6 | ---------------------------------------------------------------—

+

Request READ_ANALOG Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | --------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_ANALOG | 0x16 | 1 | 4 | ANALOG PIN NUMBER | 0 - 127 | 1 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 6 | ---------------------------------------------------------------—

+

Request WRITE_ANALOG Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ------------------------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_ANALOG | 0x17 | 1 | 4 | PIN Number | 0 - 127 | 1 | 5 | Analog | 0 - 16383 (2b unsigned int) | 2 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 8 | ---------------------------------------------------------------—

+

Request READ_EEPROM Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_EEPROM | 0x1A | 1 | 4 | DATA TYPE | 1/2/4 | 1 | DATA_TYPE_BYTE -1 , DATA_TYPE_INTEGER -2 , DATA_TYPE_FLOAT -4 5 | ADDRESS | 0 - 16383 | 2 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 7 | ---------------------------------------------------------------—

+

Request WRITE_EEPROM Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ------------------------------— | ----— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_EEPROM | 0x1B | 1 | 4 | DATA TYPE | 1/2/4 | 1 | DATA_TYPE_BYTE -1 , DATA_TYPE_INTEGER -2 , DATA_TYPE_FLOAT -4 5 | ADDRESS | 0 - 16383 | 2 | 6 | Data | 2b unsigned int/ 3b int/ 4b Float | 2/3/4 | 7 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 9/10/11 | ---------------------------------------------------------------—

+

Request DETACH_SERVO Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | DETACH_SERVO | 0x1C | 1 | 4 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 4 | ---------------------------------------------------------------—

+

Request PUMP_STATUS Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | PUMP_STATUS | 0x1E | 1 | 4 | data | 0/1 | 1 | 0 Off, 1 On 5 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 5 | ---------------------------------------------------------------—

+

Request GRIPPER_STATUS Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | -----------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | GRIPPER_STATUS | 0x20 | 1 | 4 | data | 0/1 | 1 | 0 Release, 1 Catch 5 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 5 | ---------------------------------------------------------------—

+

Request WRITE_STRETCH Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ----------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_STRETCH | 0x1E | 1 | 4 | STRETCH | 4b float | 4 | 5 | HEIGHT | 4b float | 4 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 12 | ---------------------------------------------------------------—

+

Request WRITE_LEFT_RIGHT_ANGLE Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | -------------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_LEFT_RIGHT_ANGLE | 0x1F | 1 | 4 | LEFT_ANGLE | 3b float | 3 | 5 | RIGHT_ANGLE | 3b float | 3 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 10 | ---------------------------------------------------------------—

+

Request READ_SERIAL_NUMBER Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_SERIAL_NUMBER | 0x21 | 1 | 4 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 4 | ---------------------------------------------------------------—

+

Request WRITE_SERIAL_NUMBER Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ----------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | WRITE_SERIAL_NUMBER | 0x22 | 1 | 4 | DATA | 1fb Byte X14 | 14 | ASCII code 5 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 18 | ---------------------------------------------------------------—

+

Request REPORT_LIBRARY_VERSION Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | -------------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | REPORT_LIBRARY_VERSION | 0x23 | 1 | 4 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 4 | ---------------------------------------------------------------—

+

Protocol RESPONSE Message Type

+ + + + + + + + + + + + + + + + + + + + + +
Type Command Data Total Bytes Remark
UARM_CODE 0xAA N/A 1 UARM First Level Command
Type Command Data Total Bytes Remark
READ_ANGLE 0x10 3fb Float 7 Return Servo Angle from uArm
READ_COORDS 0x12 4fb Float X3 12 Read Coordinate from uArm
READ_DIGITAL 0x14 1fb Byte X2 6 Read Digital from uArm
READ_ANALOG 0x16 1fb Byte X3 7 Read Analog from uArm
READ_EEPROM 0x1A 1fb Byte + 2fb uint + 2fb uint/3fb Float/4fb Float 9/10/11 Read the value from EEPROM
REPORT_LIBRARY_VERSION 0x23 1fb Byte X3 4 Report uArm Library Version
+

Response READ_ANGLE Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_ANGLE | 0x10 | 1 | 4 | SERVO NUMBER | 0/1/2/3 | 1 | SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM 5 | SERVO ANGLE | 3fb float | 3 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 8 | ---------------------------------------------------------------—

+

Response READ_COORDS Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_COORDS | 0x12 | 1 | 4 | X Axis | 4fb floats | 4 | 5 | Y Axis | 4fb floats | 4 | 6 | Z Axis | 4fb floats | 4 | 7 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 16 | ---------------------------------------------------------------—

+

Response READ_DIGITAL Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_DIGITAL | 0x14 | 1 | 4 | PIN NUMBER | 0 - 127 | 1 | 5 | VALUE | 0/1 | 1 | HIGH : 1, LOW : 0 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 6 | ---------------------------------------------------------------—

+

Response READ_ANALOG Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_ANALOG | 0x16 | 1 | 4 | PIN NUMBER | 0 - 127 | 1 | 5 | ANALOG VALUE | 0 - 16383 | 2 | 6 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 7 | ---------------------------------------------------------------—

+

Response READ_EEPROM Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------— | ----------------------— | ----— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_EEPROM | 0x1A | 1 | 4 | DATA TYPE | 1/2/4 | 1 | BYTE: 1, INTEGER: 2, FLOAT: 4 5 | ADDRESS | 0 - 16383 | 2 | 6 | DATA | 1fb Byte/3b int/4fb Float | 2/3/4 | 7 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 9/10/11 | ---------------------------------------------------------------—

+

Response READ_SERIAL_NUMBER Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | ---------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | READ_SERIAL_NUMBER | 0x21 | 1 | 4 | DATA | 1fb Byte X14 | 14 | 5 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 18 | ---------------------------------------------------------------—

+

Response REPORT_LIBRARY_VERSION Message

+

Sequence | Type | Command/Data | Bytes | Remark -----— | -------------------— | ---------— | --— | ---------------------------------------------------------------— 1 | START_SYSEX | 0xF0 | 1 | 2 | UARM_CODE | 0xAA | 1 | 3 | REPORT_LIBRARY_VERSION | 0x23 | 1 | 4 | DATA | 1fb Byte X3 | 3 | MAJOR Version, MINOR Version, BUGFIX 5 | END_SYSEX | 0xF7 | 1 | -----— | ---------— | ---------— | 7 | ---------------------------------------------------------------—

+
+ + +
+
+
+
+
+ + + diff --git a/a00009.html b/a00009.html new file mode 100644 index 0000000..996a93c --- /dev/null +++ b/a00009.html @@ -0,0 +1,674 @@ + + + + + + + + + + + UArm Arduino Library: LinearRegression Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <linreg.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LinearRegression (double *x, double *y, long size=0)
 
virtual void addXY (const double &x, const double &y)
 
int haveData () const
 
long items () const
 
virtual double getA () const
 
virtual double getB () const
 
double getCoefDeterm () const
 
double getCoefCorrel () const
 
double getStdErrorEst () const
 
virtual double estimateY (double x) const
 
+ + + +

+Protected Member Functions

void Calculate ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

long n
 
double sumX
 
double sumY
 
double sumXsquared
 
double sumYsquared
 
double sumXY
 
double a
 
double b
 
double coefD
 
double coefC
 
double stdError
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
LinearRegression::LinearRegression (double * x,
double * y,
long size = 0 
)
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void LinearRegression::addXY (const double & x,
const double & y 
)
+
+virtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void LinearRegression::Calculate ()
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual double LinearRegression::estimateY (double x) const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual double LinearRegression::getA () const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual double LinearRegression::getB () const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getCoefCorrel () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getCoefDeterm () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getStdErrorEst () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
int LinearRegression::haveData () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
long LinearRegression::items () const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
double LinearRegression::a
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::b
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::coefC
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::coefD
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
long LinearRegression::n
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::stdError
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumX
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumXsquared
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumXY
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumY
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumYsquared
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.h
  • +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.cpp
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00010.html b/a00010.html new file mode 100644 index 0000000..545f01c --- /dev/null +++ b/a00010.html @@ -0,0 +1,674 @@ + + + + + + + + + + + UArm Arduino Library: LinearRegression Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <linreg.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LinearRegression (double *x, double *y, long size=0)
 
virtual void addXY (const double &x, const double &y)
 
int haveData () const
 
long items () const
 
virtual double getA () const
 
virtual double getB () const
 
double getCoefDeterm () const
 
double getCoefCorrel () const
 
double getStdErrorEst () const
 
virtual double estimateY (double x) const
 
+ + + +

+Protected Member Functions

void Calculate ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

long n
 
double sumX
 
double sumY
 
double sumXsquared
 
double sumYsquared
 
double sumXY
 
double a
 
double b
 
double coefD
 
double coefC
 
double stdError
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
LinearRegression::LinearRegression (double * x,
double * y,
long size = 0 
)
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void LinearRegression::addXY (const double & x,
const double & y 
)
+
+virtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void LinearRegression::Calculate ()
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual double LinearRegression::estimateY (double x) const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual double LinearRegression::getA () const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual double LinearRegression::getB () const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getCoefCorrel () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getCoefDeterm () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getStdErrorEst () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
int LinearRegression::haveData () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
long LinearRegression::items () const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
double LinearRegression::a
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::b
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::coefC
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::coefD
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
long LinearRegression::n
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::stdError
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumX
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumXsquared
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumXY
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumY
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumYsquared
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.h
  • +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.cpp
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00011.html b/a00011.html new file mode 100644 index 0000000..12389c6 --- /dev/null +++ b/a00011.html @@ -0,0 +1,299 @@ + + + + + + + + + + + UArm Arduino Library: Servo Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
Servo Class Reference
+
+
+ +

#include <UFServo.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Servo ()
 
uint8_t attach (int pin)
 
uint8_t attach (int pin, int min, int max)
 
void detach ()
 
void write (float value)
 
void writeMicroseconds (int value)
 
int read ()
 
int readMicroseconds ()
 
bool attached ()
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
Servo::Servo ()
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
uint8_t Servo::attach (int pin)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t Servo::attach (int pin,
int min,
int max 
)
+
+ +
+
+ +
+
+ + + + + + + +
bool Servo::attached ()
+
+ +
+
+ +
+
+ + + + + + + +
void Servo::detach ()
+
+ +
+
+ +
+
+ + + + + + + +
int Servo::read ()
+
+ +
+
+ +
+
+ + + + + + + +
int Servo::readMicroseconds ()
+
+ +
+
+ +
+
+ + + + + + + + +
void Servo::write (float value)
+
+ +
+
+ +
+
+ + + + + + + + +
void Servo::writeMicroseconds (int value)
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00012.html b/a00012.html new file mode 100644 index 0000000..28e39c6 --- /dev/null +++ b/a00012.html @@ -0,0 +1,153 @@ + + + + + + + + + + + UArm Arduino Library: servo_t Struct Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
servo_t Struct Reference
+
+
+ +

#include <UFServo.h>

+ + + + + + +

+Public Attributes

ServoPin_t Pin
 
volatile unsigned int ticks
 
+

Member Data Documentation

+ +
+
+ + + + +
ServoPin_t servo_t::Pin
+
+ +
+
+ +
+
+ + + + +
volatile unsigned int servo_t::ticks
+
+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00013.html b/a00013.html new file mode 100644 index 0000000..a773de3 --- /dev/null +++ b/a00013.html @@ -0,0 +1,153 @@ + + + + + + + + + + + UArm Arduino Library: ServoPin_t Struct Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
ServoPin_t Struct Reference
+
+
+ +

#include <UFServo.h>

+ + + + + + +

+Public Attributes

uint8_t nbr:6
 
uint8_t isActive:1
 
+

Member Data Documentation

+ +
+
+ + + + +
uint8_t ServoPin_t::isActive
+
+ +
+
+ +
+
+ + + + +
uint8_t ServoPin_t::nbr
+
+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00014.html b/a00014.html new file mode 100644 index 0000000..6ab6d52 --- /dev/null +++ b/a00014.html @@ -0,0 +1,1861 @@ + + + + + + + + + + + UArm Arduino Library: uArmClass Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <uarm_library.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 uArmClass ()
 
double read_servo_offset (byte servo_num)
 Read Servo Offset from EEPROM. From OFFSET_START_ADDRESS, each offset occupy 4 bytes in rom. More...
 
void read_linear_offset (byte servo_num, double &intercept_val, double &slope_val)
 read Linear Offset from EEPROM, From LINEAR_INTERCEPT_START_ADDRESS & LINEAR_SLOPE_START_ADDRESS, each offset occupy 4 bytes in rom More...
 
void alert (byte times, byte runt_time, byte stop_time)
 Use BUZZER for Alert. More...
 
void write_servo_angle (byte servo_num, double servo_angle, boolean with_offset)
 Write the angle to Servo. More...
 
void write_left_right_servo_angle (double servo_left_angle, double servo_right_angle, boolean with_offset)
 Write the left Servo & Right Servo in the same time (Avoid demage the Servo) More...
 
double read_servo_angle (byte servo_num)
 read Angle by servo_num without offset More...
 
double read_servo_angle (byte servo_num, boolean with_offset)
 read Angle by servo_num More...
 
double analog_to_angle (int input_angle, byte servo_num, boolean with_offset)
 Convert the Analog to Servo Angle, by this formatter, angle = intercept + slope * analog. More...
 
int move_to (double x, double y, double z, double hand_angle, byte relative_flags, double time, byte path_type, byte ease_type, boolean enable_hand)
 Move To, Action Control Core Function. More...
 
void move_to (double x, double y, double z)
 
void move_to (double x, double y, double z, double hand_angle)
 
void move_to (double x, double y, double z, int relative, double time)
 
void move_to (double x, double y, double z, int relative, double time, double servo_4_angle)
 
void move_to (double x, double y, double z, int relative, double time, int servo_4_relative, double servo_4_angle)
 
void move_to_at_once (double x, double y, double z)
 
void move_to_at_once (double x, double y, double z, int relative, double servo_4_angle)
 
void write_stretch_height (double stretch, double height)
 Write Sretch & Height. This is an old control method to uArm. Using uarm's Stretch and height, , Height from -180 to 150. More...
 
double get_current_x ()
 
double get_current_y ()
 
double get_current_z ()
 
void get_current_xyz ()
 Calculate X,Y,Z to g_current_x,g_current_y,g_current_z. More...
 
void get_current_xyz (double theta_1, double theta_2, double theta_3)
 Calculate X,Y,Z to g_current_x,g_current_y,g_current_z. More...
 
void angle_to_coordinate (double &x, double &y, double &z)
 
void angle_to_coordinate (double theta_1, double theta_2, double theta_3, double &x, double &y, double &z)
 
void coordinate_to_angle (double x, double y, double z, double &theta_1, double &theta_2, double &theta_3)
 Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3. More...
 
void gripper_catch ()
 Close Gripper. More...
 
void gripper_release ()
 Release Gripper. More...
 
void interpolate (double start_val, double end_val, double *interp_vals, byte ease_type)
 "Genernate the position array" More...
 
void pump_on ()
 Turn on Pump. More...
 
void pump_off ()
 Turn off Pump. More...
 
int write_servo_angle (byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle, byte trigger)
 
int write_servo_angle (double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle)
 Write 4 Servo Angles, servo_rot, servo_left, servo_right, servo_hand_rot. More...
 
int write_servo_angle (double servo_rot_angle, double servo_left_angle, double servo_right_angle)
 Write 3 Servo Angles, servo_rot, servo_left, servo_right. More...
 
boolean set_servo_status (boolean attach_state, byte servo_num)
 Attach Servo, if servo has not been attached, attach the servo, and read the current Angle. More...
 
void init ()
 
+ + + +

+Public Attributes

unsigned int INTERP_INTVLS
 
+ + + + +

+Protected Member Functions

double angle_to_coordinate_y (double theta_1, double theta_2, double theta_3)
 Calculate Y. More...
 
+ + + + + + + + + + + + + + + + + +

+Protected Attributes

double cur_rot
 
double cur_left
 
double cur_right
 
double cur_hand
 
double g_current_x
 
double g_current_y
 
double g_current_z
 
boolean g_gripper_reset
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
uArmClass::uArmClass ()
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::alert (byte times,
byte runTime,
byte stopTime 
)
+
+ +

Use BUZZER for Alert.

+
Parameters
+ + + + +
timesBeep Times
runTimeHow Long from High to Low
stopTimeHow Long from Low to High
+
+
+
Examples:
movement.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double uArmClass::analog_to_angle (int input_analog,
byte servo_num,
boolean withOffset 
)
+
+ +

Convert the Analog to Servo Angle, by this formatter, angle = intercept + slope * analog.

+
Parameters
+ + + + +
input_analogAnalog Value
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
withOffsettrue, false
+
+
+
Returns
Return Servo Angle
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::angle_to_coordinate (double & x,
double & y,
double & z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::angle_to_coordinate (double theta_1,
double theta_2,
double theta_3,
double & x,
double & y,
double & z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
double uArmClass::angle_to_coordinate_y (double theta_1,
double theta_2,
double theta_3 
)
+
+protected
+
+ +

Calculate Y.

+
Parameters
+ + + + +
theta_1
theta_2
theta_3
+
+
+
Returns
Y Axis Value
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::coordinate_to_angle (double x,
double y,
double z,
double & theta_1,
double & theta_2,
double & theta_3 
)
+
+ +

Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3.

+

Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3

+
Parameters
+ + + + + + + +
xX axis
yY axis
zZ axis
theta_1SERVO_ROT_NUM servo angles
theta_2SERVO_LEFT_NUM servo angles
theta_3SERVO_RIGHT_NUM servo angles
+
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double uArmClass::get_current_x ()
+
+inline
+
+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::get_current_xyz ()
+
+ +

Calculate X,Y,Z to g_current_x,g_current_y,g_current_z.

+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::get_current_xyz (double theta_1,
double theta_2,
double theta_3 
)
+
+ +

Calculate X,Y,Z to g_current_x,g_current_y,g_current_z.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double uArmClass::get_current_y ()
+
+inline
+
+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
double uArmClass::get_current_z ()
+
+inline
+
+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::gripper_catch ()
+
+ +

Close Gripper.

+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::gripper_release ()
+
+ +

Release Gripper.

+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::init ()
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::interpolate (double start_val,
double end_val,
double * interp_vals,
byte ease_type 
)
+
+ +

"Genernate the position array"

+
Parameters
+ + + + + +
start_valStart Position
end_valEnd Position
interp_valsinterpolation array
ease_typeINTERP_EASE_INOUT_CUBIC, INTERP_LINEAR, INTERP_EASE_INOUT, INTERP_EASE_IN, INTERP_EASE_OUT
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::move_to (double x,
double y,
double z,
double hand_angle,
byte relative_flags,
double time,
byte path_type,
byte ease_type,
boolean enable_hand 
)
+
+ +

Move To, Action Control Core Function.

+
Parameters
+ + + + + + + + +
xX Axis Value
yY Axis Value
zZ Axis Value
hand_angleHand Axis
relative_flagsABSOLUTE, RELATIVE
path_typePATH_LINEAR, PATH_ANGLES
enable_handEnable Hand Axis
+
+
+
Returns
SUCCESS, FAILED
+
Examples:
GettingStarted.ino, movement.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
double hand_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
int relative,
double time 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
int relative,
double time,
double servo_4_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
int relative,
double time,
int servo_4_relative,
double servo_4_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to_at_once (double x,
double y,
double z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to_at_once (double x,
double y,
double z,
int relative,
double servo_4_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + + + +
void uArmClass::pump_off ()
+
+ +

Turn off Pump.

+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::pump_on ()
+
+ +

Turn on Pump.

+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::read_linear_offset (byte servo_num,
double & intercept_val,
double & slope_val 
)
+
+ +

read Linear Offset from EEPROM, From LINEAR_INTERCEPT_START_ADDRESS & LINEAR_SLOPE_START_ADDRESS, each offset occupy 4 bytes in rom

+
Parameters
+ + + + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
intercept_valget intercept_val
slope_valget slope_val
+
+
+ +
+
+ +
+
+ + + + + + + + +
double uArmClass::read_servo_angle (byte servo_num)
+
+ +

read Angle by servo_num without offset

+
Parameters
+ + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
+
+
+
Returns
Return servo_num Angle
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
double uArmClass::read_servo_angle (byte servo_num,
boolean withOffset 
)
+
+ +

read Angle by servo_num

+
Parameters
+ + + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
withOffsettrue, false
+
+
+
Returns
Return servo_num Angle
+ +
+
+ +
+
+ + + + + + + + +
double uArmClass::read_servo_offset (byte servo_num)
+
+ +

Read Servo Offset from EEPROM. From OFFSET_START_ADDRESS, each offset occupy 4 bytes in rom.

+
Parameters
+ + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
+
+
+
Returns
Return servo offset
+
Examples:
GettingStarted.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
boolean uArmClass::set_servo_status (boolean setAttached,
byte servoNum 
)
+
+ +

Attach Servo, if servo has not been attached, attach the servo, and read the current Angle.

+
Parameters
+ + +
servonumber SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
+
+
+
Examples:
GettingStarted.ino, movement.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::write_left_right_servo_angle (double servo_left_angle,
double servo_right_angle,
boolean writeWithoffset 
)
+
+ +

Write the left Servo & Right Servo in the same time (Avoid demage the Servo)

+
Parameters
+ + + + +
servo_left_angleleft servo target angle
servo_right_angleright servo target angle
writeWithoffsetTrue: with Offset, False: without Offset
+
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::write_servo_angle (byte servo_number,
double servo_angle,
boolean writeWithoffset 
)
+
+ +

Write the angle to Servo.

+
Parameters
+ + + + +
servo_numberSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
servo_angleServo target angle, 0.00 - 180.00
writeWithoffsetTrue: with Offset, False: without Offset
+
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::write_servo_angle (byte servo_rot_angle,
byte servo_left_angle,
byte servo_right_angle,
byte servo_hand_rot_angle,
byte trigger 
)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::write_servo_angle (double servo_rot_angle,
double servo_left_angle,
double servo_right_angle,
double servo_hand_rot_angle 
)
+
+ +

Write 4 Servo Angles, servo_rot, servo_left, servo_right, servo_hand_rot.

+
Parameters
+ + + + + +
servo_rot_angleSERVO_ROT_NUM
servo_left_angleSERVO_LEFT_NUM
servo_right_angleSERVO_RIGHT_NUM
servo_hand_rot_angleSERVO_HAND_ROT_NUM
+
+
+
Returns
SUCCESS, FAILED
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::write_servo_angle (double servo_rot_angle,
double servo_left_angle,
double servo_right_angle 
)
+
+ +

Write 3 Servo Angles, servo_rot, servo_left, servo_right.

+
Parameters
+ + + + +
servo_rot_angleSERVO_ROT_NUM
servo_left_angleSERVO_LEFT_NUM
servo_right_angleSERVO_RIGHT_NUM
+
+
+
Returns
SUCCESS, FAILED
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void uArmClass::write_stretch_height (double armStretch,
double armHeight 
)
+
+ +

Write Sretch & Height. This is an old control method to uArm. Using uarm's Stretch and height, , Height from -180 to 150.

+
Parameters
+ + + +
armStretchStretch from 0 to 195
armHeightHeight from -150 to 150
+
+
+
Examples:
UArmProtocol.ino.
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_hand
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_left
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_right
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_rot
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::g_current_x
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::g_current_y
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::g_current_z
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
boolean uArmClass::g_gripper_reset
+
+protected
+
+ +
+
+ +
+
+ + + + +
unsigned int uArmClass::INTERP_INTVLS
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.h
  • +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.cpp
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/a00015.html b/a00015.html new file mode 100644 index 0000000..989b78a --- /dev/null +++ b/a00015.html @@ -0,0 +1,321 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/Calibration/Calibration.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
Calibration.ino File Reference
+
+
+ +

Calibration Arduino Sketch. +More...

+
#include "uarm_library.h"
+
+ + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
void calibration_start ()
 
void linear_calibration_servo (byte servo_num)
 
void cleanEEPROM ()
 
void manual_calibration_section ()
 
void save_manual_servo_offset (byte servo_num, double offset)
 
void save_linear_servo_offset (byte servo_num, double intercept_val, double slope_val)
 
+ + + +

+Variables

int value
 
+

Detailed Description

+

Calibration Arduino Sketch.

+
Author
Joe Song Alex Tan GNU
+ +

Function Documentation

+ +
+
+ + + + + + + +
void calibration_start ()
+
+

Start Calibration all section

+ +
+
+ +
+
+ + + + + + + +
void cleanEEPROM ()
+
+

Clean EEPROM before calibration

+ +
+
+ +
+
+ + + + + + + + +
void linear_calibration_servo (byte servo_num)
+
+

Calibrate each servo for linear offset

+ +
+
+ +
+
+ + + + + + + +
void loop ()
+
+ +
+
+ +
+
+ + + + + + + +
void manual_calibration_section ()
+
+

Manual Calibration Section

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void save_linear_servo_offset (byte servo_num,
double intercept_val,
double slope_val 
)
+
+

Save Linear Servo Offset intercept & slope

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void save_manual_servo_offset (byte servo_num,
double offset 
)
+
+

Save Manual Servo Offset

+ +
+
+ +
+
+ + + + + + + +
void setup ()
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
int value
+
+
Examples:
UArmProtocol.ino.
+
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00016.html b/a00016.html new file mode 100644 index 0000000..512b248 --- /dev/null +++ b/a00016.html @@ -0,0 +1,526 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/UArmTextControl2.0/UArmTextControl2.0.ino File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
UArmTextControl2.0.ino File Reference
+
+
+
#include <uarm_library.h>
+
+ + + + + + + + + + + + + + + + + + + +

+Functions

void setup ()
 
void loop ()
 
String runCommand (String cmnd)
 
void getCommandValues (String cmnd, String parameters[], int parameterCount, float *valueArray)
 
String isValidCommand (String cmnd, String parameters[], int parameterCount)
 
String parseNextCommand ()
 
void setMove (double x, double y, double z, double goalSpeed)
 
bool isTimeToMove ()
 
void moveStep ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

byte currentStep = 255
 
int tipPin = 2
 
int buzzerPin = 3
 
unsigned int INTERP_INTVLS
 
long goalTime
 
double goalTimeStep
 
double x_array [51]
 
double y_array [51]
 
double z_array [51]
 
double currentHand =90
 
long buzzerStopTime = -1
 
String message = ""
 
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void getCommandValues (String cmnd,
String parameters[],
int parameterCount,
float * valueArray 
)
+
+ +
+
+ +
+
+ + + + + + + +
bool isTimeToMove ()
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
String isValidCommand (String cmnd,
String parameters[],
int parameterCount 
)
+
+ +
+
+ +
+
+ + + + + + + +
void loop ()
+
+ +
+
+ +
+
+ + + + + + + +
void moveStep ()
+
+ +
+
+ +
+
+ + + + + + + +
String parseNextCommand ()
+
+ +
+
+ +
+
+ + + + + + + + +
String runCommand (String cmnd)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void setMove (double x,
double y,
double z,
double goalSpeed 
)
+
+ +
+
+ +
+
+ + + + + + + +
void setup ()
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
int buzzerPin = 3
+
+ +
+
+ +
+
+ + + + +
long buzzerStopTime = -1
+
+ +
+
+ +
+
+ + + + +
double currentHand =90
+
+ +
+
+ +
+
+ + + + +
byte currentStep = 255
+
+

This sketch is a communication protocol for uArm using Serial.

+

All commands must be wrapped in brackets- [command] Any string of commands must end with an endline char '
+' for the commands to be processed

+

Commands: [moveX::Y::Z::S#] Where # is a double, This will move the robot to an XYZ position, in S is speed in centimeters / second from the current location to goal location Send Example: [moveX15Y-15Z20S25] Return Example: [OK moveX15Y-15Z20S2]

+

[handV#] Where # is an angle between 0 and 180. This will set the angle of the robots hand Send Example: [handV90] Return Example: [OK handV90]

+

[pumpV#] Where # is either 1 or 0. 1 means pump on, 0 means pump off. Send Example: [pumpV1] Return Example: [OK pumpV1]

+

[attachS#] Attach servo #. Same as servo #'s in uarm_library.h Send Example: [attachS1] Return Example: [OK attachS1]

+

[detachS#] Detach servo #. Same as servo #'s in uarm_library.h Send Example: [detachS1] Return Example: [OK detachS1]

+

[buzzF::T#] Set the buzzer to F Frequency for T time Send Example: [buzzF261.63T1] Return Example: [OK buzzF261.63T1]

+

[gcoords] Returns the XYZ position of the robot Send Example: [gcoords] Return Example: [coordsX::Y::Z#]

+

[gAngleS#] Returns the angle of any particular servo. Send Example: [angleA1] Return Example: [angleA###.##]

+

[gmoving] Returns whether or not the robot is currently moving. Returns either 1 or 0 if it is moving or not. Send Example: [gmoving] Return Example: [movingM1]

+

[gtip] Returns whether or not the tip of the robot is currently pressed. Returns either 1 if the tip is pressed, 0 if not. Send Example: [gtip] Return Example: [tipV1]

+ +
+
+ +
+
+ + + + +
long goalTime
+
+ +
+
+ +
+
+ + + + +
double goalTimeStep
+
+ +
+
+ +
+
+ + + + +
unsigned int INTERP_INTVLS
+
+ +
+
+ +
+
+ + + + +
String message = ""
+
+ +
+
+ +
+
+ + + + +
int tipPin = 2
+
+ +
+
+ +
+
+ + + + +
double x_array[51]
+
+ +
+
+ +
+
+ + + + +
double y_array[51]
+
+ +
+
+ +
+
+ + + + +
double z_array[51]
+
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00017.html b/a00017.html new file mode 100644 index 0000000..3292698 --- /dev/null +++ b/a00017.html @@ -0,0 +1,111 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/HISTORY.MD File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
/Users/alex/Workspace/develop/uarm_metal/uarm4arduino/HISTORY.MD File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00018.html b/a00018.html new file mode 100644 index 0000000..6975dfe --- /dev/null +++ b/a00018.html @@ -0,0 +1,111 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/PROTOCOL.md File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
/Users/alex/Workspace/develop/uarm_metal/uarm4arduino/PROTOCOL.md File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00019.html b/a00019.html new file mode 100644 index 0000000..b90466b --- /dev/null +++ b/a00019.html @@ -0,0 +1,111 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/README.MD File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
/Users/alex/Workspace/develop/uarm_metal/uarm4arduino/README.MD File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00019_source.html b/a00019_source.html new file mode 100644 index 0000000..ce671e2 --- /dev/null +++ b/a00019_source.html @@ -0,0 +1,138 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
linreg.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 /* linreg.h
3 Linear Regression calculation class
4 
5 by: David C. Swaim II, Ph.D.
6 
7 This class implements a standard linear regression on
8 experimental data using a least squares fit to a straight
9 line graph. Calculates coefficients a and b of the equation:
10 
11 y = a + b * x
12 
13 for data points of x and y. Also calculates the coefficient of
14 determination, the coefficient of correlation, and standard
15 error of estimate.
16 
17 The value n (number of points) must be greater than 2 to
18 calculate the regression. This is primarily because the
19 standard error has a (N-2) in the denominator.
20 
21 Check haveData() to see if there is enough data in
22 LinearRegression to get values.
23 
24 You can think of the x,y pairs as 2 dimensional points.
25 The class Point2D is included to allow pairing x and y
26 values together to represent a point on a plane.
27 
28 */
29 
30 #ifndef _LINREG_H_
31 #define _LINREG_H_
32 
33 
34 
35 
37 {
38 
39 
40 public:
41  // Constructor using an array of Point2D objects
42  // This is also the default constructor
43 
44  // Constructor using arrays of x values and y values
45  LinearRegression(double *x, double *y, long size = 0);
46 
47  virtual void addXY(const double& x, const double& y);
48 
49  // Must have at least 3 points to calculate
50  // standard error of estimate. Do we have enough data?
51  int haveData() const { return (n > 2 ? 1 : 0); }
52  long items() const { return n; }
53 
54  virtual double getA() const { return a; }
55  virtual double getB() const { return b; }
56 
57  double getCoefDeterm() const { return coefD; }
58  double getCoefCorrel() const { return coefC; }
59  double getStdErrorEst() const { return stdError; }
60  virtual double estimateY(double x) const { return (a + b * x); }
61 
62 protected:
63  long n; // number of data points input so far
64  double sumX, sumY; // sums of x and y
65  double sumXsquared, // sum of x squares
66  sumYsquared; // sum y squares
67  double sumXY; // sum of x*y
68 
69  double a, b; // coefficients of f(x) = a + b*x
70  double coefD, // coefficient of determination
71  coefC, // coefficient of correlation
72  stdError; // standard error of estimate
73 
74  void Calculate(); // calculate coefficients
75 };
76 
77 #endif // end of linreg.h
double sumXsquared
Definition: linreg.h:65
+
double getCoefDeterm() const
Definition: linreg.h:57
+
double sumX
Definition: linreg.h:64
+
double coefC
Definition: linreg.h:70
+
void Calculate()
Definition: linreg.cpp:31
+
double b
Definition: linreg.h:69
+
double sumXY
Definition: linreg.h:67
+
long items() const
Definition: linreg.h:52
+
double sumYsquared
Definition: linreg.h:65
+
double stdError
Definition: linreg.h:70
+
Definition: linreg.h:36
+
double getCoefCorrel() const
Definition: linreg.h:58
+
long n
Definition: linreg.h:63
+
LinearRegression(double *x, double *y, long size=0)
Definition: linreg.cpp:9
+
virtual double getB() const
Definition: linreg.h:55
+
virtual double estimateY(double x) const
Definition: linreg.h:60
+
double getStdErrorEst() const
Definition: linreg.h:59
+
double a
Definition: linreg.h:69
+
int haveData() const
Definition: linreg.h:51
+
double coefD
Definition: linreg.h:70
+
virtual double getA() const
Definition: linreg.h:54
+
double sumY
Definition: linreg.h:64
+
virtual void addXY(const double &x, const double &y)
Definition: linreg.cpp:20
+
+ + +
+
+
+
+
+ + + diff --git a/a00020.html b/a00020.html new file mode 100644 index 0000000..920d6af --- /dev/null +++ b/a00020.html @@ -0,0 +1,118 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.cpp File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
linreg.cpp File Reference
+
+
+
#include <math.h>
+#include <float.h>
+#include "linreg.h"
+
+ + +
+
+
+
+
+ + + diff --git a/a00020_source.html b/a00020_source.html new file mode 100644 index 0000000..c702879 --- /dev/null +++ b/a00020_source.html @@ -0,0 +1,118 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/ServoTimers.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ServoTimers.h
+
+
+Go to the documentation of this file.
1 /*
2  Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
3  Copyright (c) 2009 Michael Margolis. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 /*
21  * Defines for 16 bit timers used with Servo library
22  *
23  * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
24  * timer16_Sequence_t enumerates the sequence that the timers should be allocated
25  * _Nbr_16timers indicates how many 16 bit timers are available.
26  */
27 
33 // Say which 16 bit timers can be used and in what order
34 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
35 #define _useTimer5
36 #define _useTimer1
37 #define _useTimer3
38 #define _useTimer4
39 typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t;
40 
41 #elif defined(__AVR_ATmega32U4__)
42 #define _useTimer1
43 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
44 
45 #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
46 #define _useTimer3
47 #define _useTimer1
48 typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t;
49 
50 #elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__)||defined(__AVR_ATmega2561__)
51 #define _useTimer3
52 #define _useTimer1
53 typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t;
54 
55 #else // everything else
56 #define _useTimer1
58 #endif
59 
timer16_Sequence_t
Definition: ServoTimers.h:57
+
Definition: ServoTimers.h:57
+
Definition: ServoTimers.h:57
+
+ + +
+
+
+
+
+ + + diff --git a/a00021.html b/a00021.html new file mode 100644 index 0000000..e8a9a4f --- /dev/null +++ b/a00021.html @@ -0,0 +1,144 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.h File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
linreg.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  LinearRegression
 
+ + + +

+Macros

#define _LINREG_H_
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define _LINREG_H_
+
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00021_source.html b/a00021_source.html new file mode 100644 index 0000000..06c7e9d --- /dev/null +++ b/a00021_source.html @@ -0,0 +1,138 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
linreg.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 /* linreg.h
3 Linear Regression calculation class
4 
5 by: David C. Swaim II, Ph.D.
6 
7 This class implements a standard linear regression on
8 experimental data using a least squares fit to a straight
9 line graph. Calculates coefficients a and b of the equation:
10 
11 y = a + b * x
12 
13 for data points of x and y. Also calculates the coefficient of
14 determination, the coefficient of correlation, and standard
15 error of estimate.
16 
17 The value n (number of points) must be greater than 2 to
18 calculate the regression. This is primarily because the
19 standard error has a (N-2) in the denominator.
20 
21 Check haveData() to see if there is enough data in
22 LinearRegression to get values.
23 
24 You can think of the x,y pairs as 2 dimensional points.
25 The class Point2D is included to allow pairing x and y
26 values together to represent a point on a plane.
27 
28 */
29 
30 #ifndef _LINREG_H_
31 #define _LINREG_H_
32 
33 
34 
35 
37 {
38 
39 
40 public:
41  // Constructor using an array of Point2D objects
42  // This is also the default constructor
43 
44  // Constructor using arrays of x values and y values
45  LinearRegression(double *x, double *y, long size = 0);
46 
47  virtual void addXY(const double& x, const double& y);
48 
49  // Must have at least 3 points to calculate
50  // standard error of estimate. Do we have enough data?
51  int haveData() const { return (n > 2 ? 1 : 0); }
52  long items() const { return n; }
53 
54  virtual double getA() const { return a; }
55  virtual double getB() const { return b; }
56 
57  double getCoefDeterm() const { return coefD; }
58  double getCoefCorrel() const { return coefC; }
59  double getStdErrorEst() const { return stdError; }
60  virtual double estimateY(double x) const { return (a + b * x); }
61 
62 protected:
63  long n; // number of data points input so far
64  double sumX, sumY; // sums of x and y
65  double sumXsquared, // sum of x squares
66  sumYsquared; // sum y squares
67  double sumXY; // sum of x*y
68 
69  double a, b; // coefficients of f(x) = a + b*x
70  double coefD, // coefficient of determination
71  coefC, // coefficient of correlation
72  stdError; // standard error of estimate
73 
74  void Calculate(); // calculate coefficients
75 };
76 
77 #endif // end of linreg.h
double sumXY
Definition: linreg.h:67
+
Definition: linreg.h:36
+
double coefD
Definition: linreg.h:70
+
double getCoefDeterm() const
Definition: linreg.h:57
+
double getStdErrorEst() const
Definition: linreg.h:59
+
int haveData() const
Definition: linreg.h:51
+
virtual void addXY(const double &x, const double &y)
Definition: linreg.cpp:20
+
virtual double getB() const
Definition: linreg.h:55
+
LinearRegression(double *x, double *y, long size=0)
Definition: linreg.cpp:9
+
double stdError
Definition: linreg.h:70
+
double sumYsquared
Definition: linreg.h:65
+
virtual double getA() const
Definition: linreg.h:54
+
double getCoefCorrel() const
Definition: linreg.h:58
+
long n
Definition: linreg.h:63
+
void Calculate()
Definition: linreg.cpp:31
+
double sumY
Definition: linreg.h:64
+
double sumXsquared
Definition: linreg.h:65
+
double coefC
Definition: linreg.h:70
+
double sumX
Definition: linreg.h:64
+
long items() const
Definition: linreg.h:52
+
double a
Definition: linreg.h:69
+
virtual double estimateY(double x) const
Definition: linreg.h:60
+
double b
Definition: linreg.h:69
+
+ + +
+
+
+
+
+ + + diff --git a/a00022.html b/a00022.html new file mode 100644 index 0000000..a3cd0d6 --- /dev/null +++ b/a00022.html @@ -0,0 +1,166 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/ServoTimers.h File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ServoTimers.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define _useTimer1
 
+ + + +

+Enumerations

enum  timer16_Sequence_t { _timer1, +_Nbr_16timers + }
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define _useTimer1
+
+

AVR Only definitions

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum timer16_Sequence_t
+
+ + + +
Enumerator
_timer1  +
_Nbr_16timers  +
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00022_source.html b/a00022_source.html new file mode 100644 index 0000000..96b9a5f --- /dev/null +++ b/a00022_source.html @@ -0,0 +1,118 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/ServoTimers.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ServoTimers.h
+
+
+Go to the documentation of this file.
1 /*
2  Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
3  Copyright (c) 2009 Michael Margolis. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 /*
21  * Defines for 16 bit timers used with Servo library
22  *
23  * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
24  * timer16_Sequence_t enumerates the sequence that the timers should be allocated
25  * _Nbr_16timers indicates how many 16 bit timers are available.
26  */
27 
33 // Say which 16 bit timers can be used and in what order
34 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
35 #define _useTimer5
36 #define _useTimer1
37 #define _useTimer3
38 #define _useTimer4
39 typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t;
40 
41 #elif defined(__AVR_ATmega32U4__)
42 #define _useTimer1
43 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;
44 
45 #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
46 #define _useTimer3
47 #define _useTimer1
48 typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t;
49 
50 #elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__)||defined(__AVR_ATmega2561__)
51 #define _useTimer3
52 #define _useTimer1
53 typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t;
54 
55 #else // everything else
56 #define _useTimer1
58 #endif
59 
Definition: ServoTimers.h:57
+
timer16_Sequence_t
Definition: ServoTimers.h:57
+
Definition: ServoTimers.h:57
+
+ + +
+
+
+
+
+ + + diff --git a/a00023.html b/a00023.html new file mode 100644 index 0000000..75a3b26 --- /dev/null +++ b/a00023.html @@ -0,0 +1,145 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.cpp File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
uarm_library.cpp File Reference
+
+
+ +

uArm Library for Arduino +More...

+
#include "uarm_library.h"
+
+ + + +

+Variables

uArmClass uarm
 
+

Detailed Description

+

uArm Library for Arduino

+
Author
Joe Song Alex Tan, Dave Corboy GNU
+ +

Variable Documentation

+ +
+
+ + + + +
uArmClass uarm
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00024.html b/a00024.html new file mode 100644 index 0000000..fb863b2 --- /dev/null +++ b/a00024.html @@ -0,0 +1,1158 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.h File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
uarm_library.h File Reference
+
+
+ +

uarm library header +More...

+
#include <Arduino.h>
+#include <EEPROM.h>
+#include <Wire.h>
+#include "UFServo.h"
+#include "linreg.h"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  uArmClass
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define UARM_MAJOR_VERSION   1
 
#define UARM_MINOR_VERSION   7
 
#define UARM_BUGFIX   2
 
#define SUCCESS   1
 
#define FAILED   -1
 
#define SERVO_ROT_NUM   0
 
#define SERVO_LEFT_NUM   1
 
#define SERVO_RIGHT_NUM   2
 
#define SERVO_HAND_ROT_NUM   3
 
#define SERVO_ROT_PIN   11
 
#define SERVO_LEFT_PIN   13
 
#define SERVO_RIGHT_PIN   12
 
#define SERVO_HAND_PIN   10
 
#define SERVO_ROT_ANALOG_PIN   2
 
#define SERVO_LEFT_ANALOG_PIN   0
 
#define SERVO_RIGHT_ANALOG_PIN   1
 
#define SERVO_HAND_ROT_ANALOG_PIN   3
 
#define ARM_STRETCH_MIN   0
 
#define ARM_STRETCH_MAX   195
 
#define ARM_HEIGHT_MIN   -150
 
#define ARM_HEIGHT_MAX   160
 
#define ARM_A   148
 
#define ARM_B   160
 
#define ARM_2AB   47360
 
#define ARM_A2   21904
 
#define ARM_B2   25600
 
#define ARM_A2B2   47504
 
#define LIMIT_SW   2
 
#define PUMP_EN   6
 
#define VALVE_EN   5
 
#define STOPPER   2
 
#define BUZZER   3
 
#define BTN_D4   4
 
#define BTN_D7   7
 
#define GRIPPER   9
 
#define MATH_PI   3.141592653589793238463
 
#define MATH_TRANS   57.2958
 
#define MATH_L1   (10.645+0.6)
 
#define MATH_L2   2.117
 
#define MATH_L3   14.825
 
#define MATH_L4   16.02
 
#define MATH_L43   MATH_L4/MATH_L3
 
#define RELATIVE   1
 
#define ABSOLUTE   0
 
#define TopOffset   -1.5
 
#define BottomOffset   1.5
 
#define CALIBRATION_FLAG   10
 
#define CALIBRATION_LINEAR_FLAG   11
 
#define CALIBRATION_MANUAL_FLAG   12
 
#define CALIBRATION_STRETCH_FLAG   13
 
#define LINEAR_INTERCEPT_START_ADDRESS   70
 
#define LINEAR_SLOPE_START_ADDRESS   50
 
#define MANUAL_OFFSET_ADDRESS   30
 
#define OFFSET_STRETCH_START_ADDRESS   20
 
#define SERIAL_NUMBER_ADDRESS   100
 
#define A
 
#define CONFIRM_FLAG   0x80
 
#define PATH_LINEAR   0
 
#define PATH_ANGLES   1
 
#define F_ABSOLUTE   0
 
#define F_POSN_RELATIVE   1
 
#define F_HAND_RELATIVE   2
 
#define F_HAND_ROT_REL   4
 
#define INTERP_EASE_INOUT_CUBIC   0
 
#define INTERP_LINEAR   1
 
#define INTERP_EASE_INOUT   2
 
#define INTERP_EASE_IN   3
 
#define INTERP_EASE_OUT   4
 
#define LINEAR_INTERCEPT   1
 
#define LINEAR_SLOPE   2
 
+ + + +

+Variables

uArmClass uarm
 
+

Detailed Description

+

uarm library header

+
+
Author
Joey Song Joey Song, Alex Tan, Dave Corboy
+
Date
12/Dec/2014 GNU 2016 UFactory Team. All right reserved
+

Macro Definition Documentation

+ +
+
+ + + + +
#define A
+
+ +
+
+ +
+
+ + + + +
#define ABSOLUTE   0
+
+ +
+
+ +
+
+ + + + +
#define ARM_2AB   47360
+
+ +
+
+ +
+
+ + + + +
#define ARM_A   148
+
+ +
+
+ +
+
+ + + + +
#define ARM_A2   21904
+
+ +
+
+ +
+
+ + + + +
#define ARM_A2B2   47504
+
+ +
+
+ +
+
+ + + + +
#define ARM_B   160
+
+ +
+
+ +
+
+ + + + +
#define ARM_B2   25600
+
+ +
+
+ +
+
+ + + + +
#define ARM_HEIGHT_MAX   160
+
+ +
+
+ +
+
+ + + + +
#define ARM_HEIGHT_MIN   -150
+
+ +
+
+ +
+
+ + + + +
#define ARM_STRETCH_MAX   195
+
+ +
+
+ +
+
+ + + + +
#define ARM_STRETCH_MIN   0
+
+ +
+
+ +
+
+ + + + +
#define BottomOffset   1.5
+
+ +
+
+ +
+
+ + + + +
#define BTN_D4   4
+
+ +
+
+ +
+
+ + + + +
#define BTN_D7   7
+
+ +
+
+ +
+
+ + + + +
#define BUZZER   3
+
+ +
+
+ +
+
+ + + + +
#define CALIBRATION_FLAG   10
+
+ +
+
+ +
+
+ + + + +
#define CALIBRATION_LINEAR_FLAG   11
+
+ +
+
+ +
+
+ + + + +
#define CALIBRATION_MANUAL_FLAG   12
+
+ +
+
+ +
+
+ + + + +
#define CALIBRATION_STRETCH_FLAG   13
+
+ +
+
+ +
+
+ + + + +
#define CONFIRM_FLAG   0x80
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define F_ABSOLUTE   0
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define F_HAND_RELATIVE   2
+
+ +
+
+ +
+
+ + + + +
#define F_HAND_ROT_REL   4
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define F_POSN_RELATIVE   1
+
+ +
+
+ +
+
+ + + + +
#define FAILED   -1
+
+ +
+
+ +
+
+ + + + +
#define GRIPPER   9
+
+ +
+
+ +
+
+ + + + +
#define INTERP_EASE_IN   3
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define INTERP_EASE_INOUT   2
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define INTERP_EASE_INOUT_CUBIC   0
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define INTERP_EASE_OUT   4
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define INTERP_LINEAR   1
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define LIMIT_SW   2
+
+ +
+
+ +
+
+ + + + +
#define LINEAR_INTERCEPT   1
+
+ +
+
+ +
+
+ + + + +
#define LINEAR_INTERCEPT_START_ADDRESS   70
+
+ +
+
+ +
+
+ + + + +
#define LINEAR_SLOPE   2
+
+ +
+
+ +
+
+ + + + +
#define LINEAR_SLOPE_START_ADDRESS   50
+
+ +
+
+ +
+
+ + + + +
#define MANUAL_OFFSET_ADDRESS   30
+
+ +
+
+ +
+
+ + + + +
#define MATH_L1   (10.645+0.6)
+
+ +
+
+ +
+
+ + + + +
#define MATH_L2   2.117
+
+ +
+
+ +
+
+ + + + +
#define MATH_L3   14.825
+
+ +
+
+ +
+
+ + + + +
#define MATH_L4   16.02
+
+ +
+
+ +
+
+ + + + +
#define MATH_L43   MATH_L4/MATH_L3
+
+ +
+
+ +
+
+ + + + +
#define MATH_PI   3.141592653589793238463
+
+ +
+
+ +
+
+ + + + +
#define MATH_TRANS   57.2958
+
+ +
+
+ +
+
+ + + + +
#define OFFSET_STRETCH_START_ADDRESS   20
+
+ +
+
+ +
+
+ + + + +
#define PATH_ANGLES   1
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define PATH_LINEAR   0
+
+
Examples:
movement.ino.
+
+
+
+ +
+
+ + + + +
#define PUMP_EN   6
+
+ +
+
+ +
+
+ + + + +
#define RELATIVE   1
+
+
Examples:
GettingStarted.ino.
+
+
+
+ +
+
+ + + + +
#define SERIAL_NUMBER_ADDRESS   100
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_HAND_PIN   10
+
+ +
+
+ +
+
+ + + + +
#define SERVO_HAND_ROT_ANALOG_PIN   3
+
+ +
+
+ +
+
+ + + + +
#define SERVO_HAND_ROT_NUM   3
+
+
Examples:
GettingStarted.ino, and movement.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_LEFT_ANALOG_PIN   0
+
+ +
+
+ +
+
+ + + + +
#define SERVO_LEFT_NUM   1
+
+
Examples:
GettingStarted.ino, and movement.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_LEFT_PIN   13
+
+ +
+
+ +
+
+ + + + +
#define SERVO_RIGHT_ANALOG_PIN   1
+
+ +
+
+ +
+
+ + + + +
#define SERVO_RIGHT_NUM   2
+
+
Examples:
GettingStarted.ino, and movement.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_RIGHT_PIN   12
+
+ +
+
+ +
+
+ + + + +
#define SERVO_ROT_ANALOG_PIN   2
+
+ +
+
+ +
+
+ + + + +
#define SERVO_ROT_NUM   0
+
+
Examples:
GettingStarted.ino, and movement.ino.
+
+
+
+ +
+
+ + + + +
#define SERVO_ROT_PIN   11
+
+ +
+
+ +
+
+ + + + +
#define STOPPER   2
+
+ +
+
+ +
+
+ + + + +
#define SUCCESS   1
+
+ +
+
+ +
+
+ + + + +
#define TopOffset   -1.5
+
+ +
+
+ +
+
+ + + + +
#define UARM_BUGFIX   2
+
+ +
+
+ +
+
+ + + + +
#define UARM_MAJOR_VERSION   1
+
+ +
+
+ +
+
+ + + + +
#define UARM_MINOR_VERSION   7
+
+ +
+
+ +
+
+ + + + +
#define VALVE_EN   5
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
uArmClass uarm
+
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00024_source.html b/a00024_source.html new file mode 100644 index 0000000..a632aa3 --- /dev/null +++ b/a00024_source.html @@ -0,0 +1,166 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
uarm_library.h
+
+
+Go to the documentation of this file.
1 
10 #include <Arduino.h>
11 #include <EEPROM.h>
12 #include <Wire.h>
13 #include "UFServo.h"
14 #include "linreg.h"
15 
16 #ifndef uArm_library_h
17 #define uArm_library_h
18 
19 #define UARM_MAJOR_VERSION 1
20 #define UARM_MINOR_VERSION 7
21 #define UARM_BUGFIX 2
22 
23 #define SUCCESS 1
24 #define FAILED -1
25 
26 #define SERVO_ROT_NUM 0
27 #define SERVO_LEFT_NUM 1
28 #define SERVO_RIGHT_NUM 2
29 #define SERVO_HAND_ROT_NUM 3
30 
31 #define SERVO_ROT_PIN 11
32 #define SERVO_LEFT_PIN 13
33 #define SERVO_RIGHT_PIN 12
34 #define SERVO_HAND_PIN 10
35 
36 #define SERVO_ROT_ANALOG_PIN 2
37 #define SERVO_LEFT_ANALOG_PIN 0
38 #define SERVO_RIGHT_ANALOG_PIN 1
39 #define SERVO_HAND_ROT_ANALOG_PIN 3
40 
41 // Old Control method Stretch / Height
42 
43 #define ARM_STRETCH_MIN 0
44 #define ARM_STRETCH_MAX 195
45 #define ARM_HEIGHT_MIN -150
46 #define ARM_HEIGHT_MAX 160
47 #define ARM_A 148
48 #define ARM_B 160
49 #define ARM_2AB 47360
50 #define ARM_A2 21904
51 #define ARM_B2 25600
52 #define ARM_A2B2 47504
53 
54 #define LIMIT_SW 2 // LIMIT Switch Button
55 #define PUMP_EN 6 // HIGH = Valve OPEN
56 #define VALVE_EN 5 // HIGH = Pump ON
57 #define STOPPER 2 // LOW = Pressed
58 #define BUZZER 3 // HIGH = ON
59 #define BTN_D4 4 // LOW = Pressed
60 #define BTN_D7 7 // LOW = Pressed
61 #define GRIPPER 9 // LOW = Catch
62 
63 #define MATH_PI 3.141592653589793238463
64 #define MATH_TRANS 57.2958
65 #define MATH_L1 (10.645+0.6)
66 #define MATH_L2 2.117
67 #define MATH_L3 14.825
68 #define MATH_L4 16.02
69 #define MATH_L43 MATH_L4/MATH_L3
70 
71 #define RELATIVE 1
72 #define ABSOLUTE 0
73 
74 #define TopOffset -1.5
75 #define BottomOffset 1.5
76 
77 // Calibration Flag & OFFSET EEPROM ADDRESS
78 #define CALIBRATION_FLAG 10
79 #define CALIBRATION_LINEAR_FLAG 11
80 #define CALIBRATION_MANUAL_FLAG 12
81 #define CALIBRATION_STRETCH_FLAG 13
82 
83 #define LINEAR_INTERCEPT_START_ADDRESS 70
84 #define LINEAR_SLOPE_START_ADDRESS 50
85 #define MANUAL_OFFSET_ADDRESS 30
86 #define OFFSET_STRETCH_START_ADDRESS 20
87 #define SERIAL_NUMBER_ADDRESS 100
88 
89 #define A
90 
91 #define CONFIRM_FLAG 0x80
92 
93 // movement path types
94 #define PATH_LINEAR 0 // path based on linear interpolation
95 #define PATH_ANGLES 1 // path based on interpolation of servo angles
96 
97 // movement absolute/relative flags
98 #define F_ABSOLUTE 0
99 #define F_POSN_RELATIVE 1
100 #define F_HAND_RELATIVE 2 // standard relative, current + hand parameter
101 #define F_HAND_ROT_REL 4 // hand keeps orientation relative to rotationxn servo (+/- hand parameter)
102 // #define F_NEXT_OPT 8 // these are flags, next option is next available bit
103 
104 // interpolation types
105 #define INTERP_EASE_INOUT_CUBIC 0 // original cubic ease in/out
106 #define INTERP_LINEAR 1
107 #define INTERP_EASE_INOUT 2 // quadratic easing methods
108 #define INTERP_EASE_IN 3
109 #define INTERP_EASE_OUT 4
110 
111 #define LINEAR_INTERCEPT 1
112 #define LINEAR_SLOPE 2
113 
115 {
116 public:
117  uArmClass();
118 
119  double read_servo_offset(byte servo_num);
120  void read_linear_offset(byte servo_num, double& intercept_val, double& slope_val);
121  void alert(byte times, byte runt_time, byte stop_time);
122  void write_servo_angle(byte servo_num, double servo_angle, boolean with_offset);
123  void write_left_right_servo_angle(double servo_left_angle, double servo_right_angle, boolean with_offset);
124  double read_servo_angle(byte servo_num);
125  double read_servo_angle(byte servo_num, boolean with_offset);
126  double analog_to_angle(int input_angle, byte servo_num, boolean with_offset);
127 
128 
129  int move_to(double x, double y, double z, double hand_angle, byte relative_flags, double time, byte path_type, byte ease_type, boolean enable_hand);
130  void move_to(double x, double y,double z) {
131  move_to(x, y, z, 0, F_HAND_RELATIVE, 1.0, PATH_LINEAR, INTERP_EASE_INOUT_CUBIC, false);
132  }
133  void move_to(double x, double y,double z,double hand_angle) {
134  move_to(x, y, z, hand_angle, F_HAND_RELATIVE, 1.0, PATH_LINEAR, INTERP_EASE_INOUT_CUBIC, true);
135  }
136  void move_to(double x, double y,double z,int relative, double time) {
137  move_to(x, y, z, 0, F_HAND_RELATIVE | (relative ? F_POSN_RELATIVE : 0), time, PATH_LINEAR, INTERP_EASE_INOUT_CUBIC, false);
138  }
139  void move_to(double x, double y,double z,int relative, double time, double servo_4_angle) {
140  move_to(x, y, z, servo_4_angle, relative ? F_POSN_RELATIVE : 0, time, PATH_LINEAR, INTERP_EASE_INOUT_CUBIC, true);
141  }
142  void move_to(double x, double y, double z, int relative, double time, int servo_4_relative, double servo_4_angle) {
143  move_to(x, y, z, servo_4_angle, (relative ? F_POSN_RELATIVE : 0) | (servo_4_relative ? F_HAND_RELATIVE : 0), time, PATH_LINEAR, INTERP_EASE_INOUT_CUBIC, true);
144  }
145 
146  void move_to_at_once(double x, double y, double z) {
147  move_to(x, y, z, 0, F_HAND_RELATIVE, 0.0, PATH_LINEAR, INTERP_LINEAR, false);
148  }
149  void move_to_at_once(double x, double y, double z, int relative, double servo_4_angle) {
150  move_to(x, y, z, servo_4_angle, relative ? F_POSN_RELATIVE : 0, 0.0, PATH_LINEAR, INTERP_LINEAR, true);
151  }
152 
153  void write_stretch_height(double stretch, double height);
154 
155 
156  double get_current_x() {
157  return g_current_x;
158  }
159  double get_current_y() {
160  return g_current_y;
161  }
162  double get_current_z() {
163  return g_current_z;
164  }
165 
166  void get_current_xyz();
167  void get_current_xyz(double theta_1, double theta_2, double theta_3);
168 
169  void angle_to_coordinate(double& x, double& y, double &z) {
171  }
172  void angle_to_coordinate(double theta_1, double theta_2, double theta_3, double& x, double& y, double &z) {
173  get_current_xyz(theta_1, theta_2, theta_3); x = g_current_x; y = g_current_y; z = g_current_z;
174  }
175  void coordinate_to_angle(double x, double y, double z, double& theta_1, double& theta_2, double& theta_3);
176 
177 
178  void gripper_catch();
179  void gripper_release();
180  void interpolate(double start_val, double end_val, double *interp_vals, byte ease_type);
181  void pump_on();
182  void pump_off();
183 
184  int write_servo_angle(byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle, byte trigger);
185  int write_servo_angle(double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle);
186  int write_servo_angle(double servo_rot_angle, double servo_left_angle, double servo_right_angle);
187 
188 
189  unsigned int INTERP_INTVLS;
190  // void attach_all();
191  boolean set_servo_status(boolean attach_state, byte servo_num);
192  void init();
193 
194 protected:
195  double cur_rot;
196  double cur_left;
197  double cur_right;
198  double cur_hand;
199  double angle_to_coordinate_y(double theta_1, double theta_2, double theta_3);
200 
201  double g_current_x;
202  double g_current_y;
203  double g_current_z;
204 
206 
207 private:
208  Servo g_servo_rot;
209  Servo g_servo_left;
210  Servo g_servo_right;
211  Servo g_servo_hand_rot;
212  Servo g_servo_hand;
213 
214 };
215 
216 extern uArmClass uarm;
217 
218 #endif
void angle_to_coordinate(double &x, double &y, double &z)
Definition: uarm_library.h:169
+
#define F_POSN_RELATIVE
Definition: uarm_library.h:99
+
double read_servo_angle(byte servo_num)
read Angle by servo_num without offset
Definition: uarm_library.cpp:266
+
double cur_rot
Definition: uarm_library.h:195
+
void gripper_catch()
Close Gripper.
Definition: uarm_library.cpp:669
+
void write_left_right_servo_angle(double servo_left_angle, double servo_right_angle, boolean with_offset)
Write the left Servo & Right Servo in the same time (Avoid demage the Servo)
Definition: uarm_library.cpp:126
+
boolean g_gripper_reset
Definition: uarm_library.h:205
+
void move_to(double x, double y, double z, int relative, double time, double servo_4_angle)
Definition: uarm_library.h:139
+
uArmClass()
Definition: uarm_library.cpp:13
+
void coordinate_to_angle(double x, double y, double z, double &theta_1, double &theta_2, double &theta_3)
Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3.
Definition: uarm_library.cpp:319
+
#define INTERP_EASE_INOUT_CUBIC
Definition: uarm_library.h:105
+
void angle_to_coordinate(double theta_1, double theta_2, double theta_3, double &x, double &y, double &z)
Definition: uarm_library.h:172
+
#define INTERP_LINEAR
Definition: uarm_library.h:106
+
void move_to(double x, double y, double z, int relative, double time)
Definition: uarm_library.h:136
+ +
int move_to(double x, double y, double z, double hand_angle, byte relative_flags, double time, byte path_type, byte ease_type, boolean enable_hand)
Move To, Action Control Core Function.
Definition: uarm_library.cpp:544
+
double cur_right
Definition: uarm_library.h:197
+
void move_to(double x, double y, double z, int relative, double time, int servo_4_relative, double servo_4_angle)
Definition: uarm_library.h:142
+
void move_to_at_once(double x, double y, double z)
Definition: uarm_library.h:146
+
void read_linear_offset(byte servo_num, double &intercept_val, double &slope_val)
read Linear Offset from EEPROM, From LINEAR_INTERCEPT_START_ADDRESS & LINEAR_SLOPE_START_ADDRESS, each offset occupy 4 bytes in rom
Definition: uarm_library.cpp:240
+
double cur_hand
Definition: uarm_library.h:198
+
void write_stretch_height(double stretch, double height)
Write Sretch & Height. This is an old control method to uArm. Using uarm&#39;s Stretch and height...
Definition: uarm_library.cpp:439
+
void get_current_xyz()
Calculate X,Y,Z to g_current_x,g_current_y,g_current_z.
Definition: uarm_library.cpp:466
+ +
void move_to(double x, double y, double z, double hand_angle)
Definition: uarm_library.h:133
+
#define PATH_LINEAR
Definition: uarm_library.h:94
+
Definition: uarm_library.h:114
+
double cur_left
Definition: uarm_library.h:196
+
uArmClass uarm
Definition: uarm_library.cpp:11
+
unsigned int INTERP_INTVLS
Definition: uarm_library.h:189
+
double get_current_y()
Definition: uarm_library.h:159
+
void alert(byte times, byte runt_time, byte stop_time)
Use BUZZER for Alert.
Definition: uarm_library.cpp:35
+
void gripper_release()
Release Gripper.
Definition: uarm_library.cpp:679
+
double get_current_z()
Definition: uarm_library.h:162
+
void move_to_at_once(double x, double y, double z, int relative, double servo_4_angle)
Definition: uarm_library.h:149
+
double get_current_x()
Definition: uarm_library.h:156
+
Definition: UFServo.h:94
+
void interpolate(double start_val, double end_val, double *interp_vals, byte ease_type)
"Genernate the position array"
Definition: uarm_library.cpp:493
+
boolean set_servo_status(boolean attach_state, byte servo_num)
Attach Servo, if servo has not been attached, attach the servo, and read the current Angle...
Definition: uarm_library.cpp:145
+
void move_to(double x, double y, double z)
Definition: uarm_library.h:130
+
void write_servo_angle(byte servo_num, double servo_angle, boolean with_offset)
Write the angle to Servo.
Definition: uarm_library.cpp:97
+
double analog_to_angle(int input_angle, byte servo_num, boolean with_offset)
Convert the Analog to Servo Angle, by this formatter, angle = intercept + slope * analog...
Definition: uarm_library.cpp:252
+
void init()
Definition: uarm_library.cpp:17
+
double g_current_x
Definition: uarm_library.h:201
+
double read_servo_offset(byte servo_num)
Read Servo Offset from EEPROM. From OFFSET_START_ADDRESS, each offset occupy 4 bytes in rom...
Definition: uarm_library.cpp:227
+
double g_current_z
Definition: uarm_library.h:203
+
double angle_to_coordinate_y(double theta_1, double theta_2, double theta_3)
Calculate Y.
Definition: uarm_library.cpp:659
+
void pump_off()
Turn off Pump.
Definition: uarm_library.cpp:704
+
void pump_on()
Turn on Pump.
Definition: uarm_library.cpp:692
+
#define F_HAND_RELATIVE
Definition: uarm_library.h:100
+
double g_current_y
Definition: uarm_library.h:202
+
+ + +
+
+
+
+
+ + + diff --git a/a00025.html b/a00025.html new file mode 100644 index 0000000..3046c5b --- /dev/null +++ b/a00025.html @@ -0,0 +1,115 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.cpp File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UFServo.cpp File Reference
+
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00026.html b/a00026.html new file mode 100644 index 0000000..db5006d --- /dev/null +++ b/a00026.html @@ -0,0 +1,247 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h File Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
UFServo.h File Reference
+
+
+
#include <inttypes.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  ServoPin_t
 
struct  servo_t
 
class  Servo
 
+ + + + + + + + + + + + + + + + + +

+Macros

#define Servo_VERSION   2
 
#define MIN_PULSE_WIDTH   500
 
#define MAX_PULSE_WIDTH   2500
 
#define DEFAULT_PULSE_WIDTH   1500
 
#define REFRESH_INTERVAL   20000
 
#define SERVOS_PER_TIMER   12
 
#define MAX_SERVOS   (_Nbr_16timers * SERVOS_PER_TIMER)
 
#define INVALID_SERVO   255
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define DEFAULT_PULSE_WIDTH   1500
+
+ +
+
+ +
+
+ + + + +
#define INVALID_SERVO   255
+
+ +
+
+ +
+
+ + + + +
#define MAX_PULSE_WIDTH   2500
+
+ +
+
+ +
+
+ + + + +
#define MAX_SERVOS   (_Nbr_16timers * SERVOS_PER_TIMER)
+
+ +
+
+ +
+
+ + + + +
#define MIN_PULSE_WIDTH   500
+
+ +
+
+ +
+
+ + + + +
#define REFRESH_INTERVAL   20000
+
+ +
+
+ +
+
+ + + + +
#define Servo_VERSION   2
+
+ +
+
+ +
+
+ + + + +
#define SERVOS_PER_TIMER   12
+
+ +
+
+
+ + +
+
+
+
+
+ + + diff --git a/a00026_source.html b/a00026_source.html new file mode 100644 index 0000000..1107a3e --- /dev/null +++ b/a00026_source.html @@ -0,0 +1,130 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h Source File + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UFServo.h
+
+
+Go to the documentation of this file.
1 /*
2  Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
3  Copyright (c) 2009 Michael Margolis. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 /*
21  A servo is activated by creating an instance of the Servo class passing
22  the desired pin to the attach() method.
23  The servos are pulsed in the background using the value most recently
24  written using the write() method.
25 
26  Note that analogWrite of PWM on pins associated with the timer are
27  disabled when the first servo is attached.
28  Timers are seized as needed in groups of 12 servos - 24 servos use two
29  timers, 48 servos will use four.
30  The sequence used to sieze timers is defined in timers.h
31 
32  The methods are:
33 
34  Servo - Class for manipulating servo motors connected to Arduino pins.
35 
36  attach(pin ) - Attaches a servo motor to an i/o pin.
37  attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds
38  default min is 544, max is 2400
39 
40  write() - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds)
41  writeMicroseconds() - Sets the servo pulse width in microseconds
42  read() - Gets the last written servo pulse width as an angle between 0 and 180.
43  readMicroseconds() - Gets the last written servo pulse width in microseconds. (was read_us() in first release)
44  attached() - Returns true if there is a servo attached.
45  detach() - Stops an attached servos from pulsing its i/o pin.
46  */
47 
48 #ifndef UFServo_h
49 #define UFServo_h
50 
51 #include <inttypes.h>
52 
53 /*
54  * Defines for 16 bit timers used with Servo library
55  *
56  * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
57  * timer16_Sequence_t enumerates the sequence that the timers should be allocated
58  * _Nbr_16timers indicates how many 16 bit timers are available.
59  */
60 
61 // Architecture specific include
62 #if defined(ARDUINO_ARCH_AVR)
63 #include "ServoTimers.h"
64 #elif defined(ARDUINO_ARCH_SAM)
65 #include "sam/ServoTimers.h"
66 #elif defined(ARDUINO_ARCH_SAMD)
67 #include "samd/ServoTimers.h"
68 #else
69 #error "This library only supports boards with an AVR, SAM or SAMD processor."
70 #endif
71 
72 #define Servo_VERSION 2 // software version of this library
73 
74 #define MIN_PULSE_WIDTH 500 // the shortest pulse sent to a servo
75 #define MAX_PULSE_WIDTH 2500 // the longest pulse sent to a servo
76 #define DEFAULT_PULSE_WIDTH 1500 // default pulse width when servo is attached
77 #define REFRESH_INTERVAL 20000 // minumim time to refresh servos in microseconds
78 
79 #define SERVOS_PER_TIMER 12 // the maximum number of servos controlled by one timer
80 #define MAX_SERVOS (_Nbr_16timers * SERVOS_PER_TIMER)
81 
82 #define INVALID_SERVO 255 // flag indicating an invalid servo index
83 
84 typedef struct {
85  uint8_t nbr :6 ; // a pin number from 0 to 63
86  uint8_t isActive :1 ; // true if this channel is enabled, pin not pulsed if false
87 } ServoPin_t ;
88 
89 typedef struct {
91  volatile unsigned int ticks;
92 } servo_t;
93 
94 class Servo
95 {
96 public:
97  Servo();
98  uint8_t attach(int pin); // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
99  uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
100  void detach();
101  void write(float value); // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds
102  void writeMicroseconds(int value); // Write pulse width in microseconds
103  int read(); // returns current pulse width as an angle between 0 and 180 degrees
104  int readMicroseconds(); // returns current pulse width in microseconds for this servo (was read_us() in first release)
105  bool attached(); // return true if this servo is attached, otherwise false
106 private:
107  uint8_t servoIndex; // index into the channel data for this servo
108  int8_t min; // minimum is this value times 4 added to MIN_PULSE_WIDTH
109  int8_t max; // maximum is this value times 4 added to MAX_PULSE_WIDTH
110 };
111 
112 #endif
int read()
+
ServoPin_t Pin
Definition: UFServo.h:90
+
void detach()
+ +
void writeMicroseconds(int value)
+ +
int readMicroseconds()
+
int value
Definition: Calibration.ino:11
+
void write(float value)
+
Definition: UFServo.h:89
+
volatile unsigned int ticks
Definition: UFServo.h:91
+
Definition: UFServo.h:84
+
bool attached()
+
Definition: UFServo.h:94
+
uint8_t attach(int pin)
+
+ + +
+
+
+
+
+ + + diff --git a/a00027.html b/a00027.html new file mode 100644 index 0000000..524113f --- /dev/null +++ b/a00027.html @@ -0,0 +1,124 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
Servo Member List
+
+
+ +

This is the complete list of members for Servo, including all inherited members.

+ + + + + + + + + + +
attach(int pin)Servo
attach(int pin, int min, int max)Servo
attached()Servo
detach()Servo
read()Servo
readMicroseconds()Servo
Servo()Servo
write(float value)Servo
writeMicroseconds(int value)Servo
+ + +
+
+
+
+
+ + + diff --git a/a00028.html b/a00028.html new file mode 100644 index 0000000..bf1a9b0 --- /dev/null +++ b/a00028.html @@ -0,0 +1,137 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
LinearRegression Member List
+
+
+ +

This is the complete list of members for LinearRegression, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
aLinearRegressionprotected
addXY(const double &x, const double &y)LinearRegressionvirtual
bLinearRegressionprotected
Calculate()LinearRegressionprotected
coefCLinearRegressionprotected
coefDLinearRegressionprotected
estimateY(double x) const LinearRegressioninlinevirtual
getA() const LinearRegressioninlinevirtual
getB() const LinearRegressioninlinevirtual
getCoefCorrel() const LinearRegressioninline
getCoefDeterm() const LinearRegressioninline
getStdErrorEst() const LinearRegressioninline
haveData() const LinearRegressioninline
items() const LinearRegressioninline
LinearRegression(double *x, double *y, long size=0)LinearRegression
nLinearRegressionprotected
stdErrorLinearRegressionprotected
sumXLinearRegressionprotected
sumXsquaredLinearRegressionprotected
sumXYLinearRegressionprotected
sumYLinearRegressionprotected
sumYsquaredLinearRegressionprotected
+ + +
+
+
+
+
+ + + diff --git a/a00029.html b/a00029.html new file mode 100644 index 0000000..7e79e0b --- /dev/null +++ b/a00029.html @@ -0,0 +1,124 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
Servo Member List
+
+
+ +

This is the complete list of members for Servo, including all inherited members.

+ + + + + + + + + + +
attach(int pin)Servo
attach(int pin, int min, int max)Servo
attached()Servo
detach()Servo
read()Servo
readMicroseconds()Servo
Servo()Servo
write(float value)Servo
writeMicroseconds(int value)Servo
+ + +
+
+
+
+
+ + + diff --git a/a00030.html b/a00030.html new file mode 100644 index 0000000..c0c5ac8 --- /dev/null +++ b/a00030.html @@ -0,0 +1,117 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
servo_t Member List
+
+
+ +

This is the complete list of members for servo_t, including all inherited members.

+ + + +
Pinservo_t
ticksservo_t
+ + +
+
+
+
+
+ + + diff --git a/a00031.html b/a00031.html new file mode 100644 index 0000000..edf8847 --- /dev/null +++ b/a00031.html @@ -0,0 +1,117 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
ServoPin_t Member List
+
+
+ +

This is the complete list of members for ServoPin_t, including all inherited members.

+ + + +
isActiveServoPin_t
nbrServoPin_t
+ + +
+
+
+
+
+ + + diff --git a/a00032.html b/a00032.html new file mode 100644 index 0000000..b65dcbe --- /dev/null +++ b/a00032.html @@ -0,0 +1,161 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
uArmClass Member List
+
+
+ +

This is the complete list of members for uArmClass, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alert(byte times, byte runt_time, byte stop_time)uArmClass
analog_to_angle(int input_angle, byte servo_num, boolean with_offset)uArmClass
angle_to_coordinate(double &x, double &y, double &z)uArmClassinline
angle_to_coordinate(double theta_1, double theta_2, double theta_3, double &x, double &y, double &z)uArmClassinline
angle_to_coordinate_y(double theta_1, double theta_2, double theta_3)uArmClassprotected
coordinate_to_angle(double x, double y, double z, double &theta_1, double &theta_2, double &theta_3)uArmClass
cur_handuArmClassprotected
cur_leftuArmClassprotected
cur_rightuArmClassprotected
cur_rotuArmClassprotected
g_current_xuArmClassprotected
g_current_yuArmClassprotected
g_current_zuArmClassprotected
g_gripper_resetuArmClassprotected
get_current_x()uArmClassinline
get_current_xyz()uArmClass
get_current_xyz(double theta_1, double theta_2, double theta_3)uArmClass
get_current_y()uArmClassinline
get_current_z()uArmClassinline
gripper_catch()uArmClass
gripper_release()uArmClass
init()uArmClass
INTERP_INTVLSuArmClass
interpolate(double start_val, double end_val, double *interp_vals, byte ease_type)uArmClass
move_to(double x, double y, double z, double hand_angle, byte relative_flags, double time, byte path_type, byte ease_type, boolean enable_hand)uArmClass
move_to(double x, double y, double z)uArmClassinline
move_to(double x, double y, double z, double hand_angle)uArmClassinline
move_to(double x, double y, double z, int relative, double time)uArmClassinline
move_to(double x, double y, double z, int relative, double time, double servo_4_angle)uArmClassinline
move_to(double x, double y, double z, int relative, double time, int servo_4_relative, double servo_4_angle)uArmClassinline
move_to_at_once(double x, double y, double z)uArmClassinline
move_to_at_once(double x, double y, double z, int relative, double servo_4_angle)uArmClassinline
pump_off()uArmClass
pump_on()uArmClass
read_linear_offset(byte servo_num, double &intercept_val, double &slope_val)uArmClass
read_servo_angle(byte servo_num)uArmClass
read_servo_angle(byte servo_num, boolean with_offset)uArmClass
read_servo_offset(byte servo_num)uArmClass
set_servo_status(boolean attach_state, byte servo_num)uArmClass
uArmClass()uArmClass
write_left_right_servo_angle(double servo_left_angle, double servo_right_angle, boolean with_offset)uArmClass
write_servo_angle(byte servo_num, double servo_angle, boolean with_offset)uArmClass
write_servo_angle(byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle, byte trigger)uArmClass
write_servo_angle(double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle)uArmClass
write_servo_angle(double servo_rot_angle, double servo_left_angle, double servo_right_angle)uArmClass
write_stretch_height(double stretch, double height)uArmClass
+ + +
+
+
+
+
+ + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..58972c5 --- /dev/null +++ b/annotated.html @@ -0,0 +1,121 @@ + + + + + + + + + + + UArm Arduino Library: Class List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+ + +
+
+
+
+
+ + + diff --git a/arrowdown.png b/arrowdown.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/arrowdown.png differ diff --git a/arrowright.png b/arrowright.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/arrowright.png differ diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/bdwn.png differ diff --git a/class_linear_regression-members.html b/class_linear_regression-members.html new file mode 100644 index 0000000..0f4b7c5 --- /dev/null +++ b/class_linear_regression-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
LinearRegression Member List
+
+
+ +

This is the complete list of members for LinearRegression, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
aLinearRegressionprotected
addXY(const double &x, const double &y)LinearRegressionvirtual
bLinearRegressionprotected
Calculate()LinearRegressionprotected
coefCLinearRegressionprotected
coefDLinearRegressionprotected
estimateY(double x) const LinearRegressioninlinevirtual
getA() const LinearRegressioninlinevirtual
getB() const LinearRegressioninlinevirtual
getCoefCorrel() const LinearRegressioninline
getCoefDeterm() const LinearRegressioninline
getStdErrorEst() const LinearRegressioninline
haveData() const LinearRegressioninline
items() const LinearRegressioninline
LinearRegression(double *x, double *y, long size=0)LinearRegression
nLinearRegressionprotected
stdErrorLinearRegressionprotected
sumXLinearRegressionprotected
sumXsquaredLinearRegressionprotected
sumXYLinearRegressionprotected
sumYLinearRegressionprotected
sumYsquaredLinearRegressionprotected
+ + +
+
+
+
+
+ + + diff --git a/class_linear_regression.html b/class_linear_regression.html new file mode 100644 index 0000000..8356beb --- /dev/null +++ b/class_linear_regression.html @@ -0,0 +1,674 @@ + + + + + + + + + + + UArm Arduino Library: LinearRegression Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <linreg.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LinearRegression (double *x, double *y, long size=0)
 
virtual void addXY (const double &x, const double &y)
 
int haveData () const
 
long items () const
 
virtual double getA () const
 
virtual double getB () const
 
double getCoefDeterm () const
 
double getCoefCorrel () const
 
double getStdErrorEst () const
 
virtual double estimateY (double x) const
 
+ + + +

+Protected Member Functions

void Calculate ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

long n
 
double sumX
 
double sumY
 
double sumXsquared
 
double sumYsquared
 
double sumXY
 
double a
 
double b
 
double coefD
 
double coefC
 
double stdError
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
LinearRegression::LinearRegression (double * x,
double * y,
long size = 0 
)
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void LinearRegression::addXY (const double & x,
const double & y 
)
+
+virtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void LinearRegression::Calculate ()
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual double LinearRegression::estimateY (double x) const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual double LinearRegression::getA () const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual double LinearRegression::getB () const
+
+inlinevirtual
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getCoefCorrel () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getCoefDeterm () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double LinearRegression::getStdErrorEst () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
int LinearRegression::haveData () const
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
long LinearRegression::items () const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
double LinearRegression::a
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::b
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::coefC
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::coefD
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
long LinearRegression::n
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::stdError
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumX
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumXsquared
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumXY
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumY
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double LinearRegression::sumYsquared
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.h
  • +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/linreg.cpp
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/class_servo-members.html b/class_servo-members.html new file mode 100644 index 0000000..98f1889 --- /dev/null +++ b/class_servo-members.html @@ -0,0 +1,124 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
Servo Member List
+
+
+ +

This is the complete list of members for Servo, including all inherited members.

+ + + + + + + + + + +
attach(int pin)Servo
attach(int pin, int min, int max)Servo
attached()Servo
detach()Servo
read()Servo
readMicroseconds()Servo
Servo()Servo
write(float value)Servo
writeMicroseconds(int value)Servo
+ + +
+
+
+
+
+ + + diff --git a/class_servo.html b/class_servo.html new file mode 100644 index 0000000..1fc2c53 --- /dev/null +++ b/class_servo.html @@ -0,0 +1,299 @@ + + + + + + + + + + + UArm Arduino Library: Servo Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
Servo Class Reference
+
+
+ +

#include <UFServo.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Servo ()
 
uint8_t attach (int pin)
 
uint8_t attach (int pin, int min, int max)
 
void detach ()
 
void write (float value)
 
void writeMicroseconds (int value)
 
int read ()
 
int readMicroseconds ()
 
bool attached ()
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
Servo::Servo ()
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
uint8_t Servo::attach (int pin)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t Servo::attach (int pin,
int min,
int max 
)
+
+ +
+
+ +
+
+ + + + + + + +
bool Servo::attached ()
+
+ +
+
+ +
+
+ + + + + + + +
void Servo::detach ()
+
+ +
+
+ +
+
+ + + + + + + +
int Servo::read ()
+
+ +
+
+ +
+
+ + + + + + + +
int Servo::readMicroseconds ()
+
+ +
+
+ +
+
+ + + + + + + + +
void Servo::write (float value)
+
+ +
+
+ +
+
+ + + + + + + + +
void Servo::writeMicroseconds (int value)
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/UFServo.h
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..5623c93 --- /dev/null +++ b/classes.html @@ -0,0 +1,125 @@ + + + + + + + + + + + UArm Arduino Library: Class Index + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
L | S | U
+ + + + + + +
  L  
+
  S  
+
ServoPin_t   
  u  
+
  s  
+
LinearRegression   Servo   uArmClass   
servo_t   
+
L | S | U
+
+ + +
+
+
+
+
+ + + diff --git a/classu_arm_class-members.html b/classu_arm_class-members.html new file mode 100644 index 0000000..7e5b966 --- /dev/null +++ b/classu_arm_class-members.html @@ -0,0 +1,161 @@ + + + + + + + + + + + UArm Arduino Library: Member List + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
uArmClass Member List
+
+
+ +

This is the complete list of members for uArmClass, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alert(byte times, byte runt_time, byte stop_time)uArmClass
analog_to_angle(int input_angle, byte servo_num, boolean with_offset)uArmClass
angle_to_coordinate(double &x, double &y, double &z)uArmClassinline
angle_to_coordinate(double theta_1, double theta_2, double theta_3, double &x, double &y, double &z)uArmClassinline
angle_to_coordinate_y(double theta_1, double theta_2, double theta_3)uArmClassprotected
coordinate_to_angle(double x, double y, double z, double &theta_1, double &theta_2, double &theta_3)uArmClass
cur_handuArmClassprotected
cur_leftuArmClassprotected
cur_rightuArmClassprotected
cur_rotuArmClassprotected
g_current_xuArmClassprotected
g_current_yuArmClassprotected
g_current_zuArmClassprotected
g_gripper_resetuArmClassprotected
get_current_x()uArmClassinline
get_current_xyz()uArmClass
get_current_xyz(double theta_1, double theta_2, double theta_3)uArmClass
get_current_y()uArmClassinline
get_current_z()uArmClassinline
gripper_catch()uArmClass
gripper_release()uArmClass
init()uArmClass
INTERP_INTVLSuArmClass
interpolate(double start_val, double end_val, double *interp_vals, byte ease_type)uArmClass
move_to(double x, double y, double z, double hand_angle, byte relative_flags, double time, byte path_type, byte ease_type, boolean enable_hand)uArmClass
move_to(double x, double y, double z)uArmClassinline
move_to(double x, double y, double z, double hand_angle)uArmClassinline
move_to(double x, double y, double z, int relative, double time)uArmClassinline
move_to(double x, double y, double z, int relative, double time, double servo_4_angle)uArmClassinline
move_to(double x, double y, double z, int relative, double time, int servo_4_relative, double servo_4_angle)uArmClassinline
move_to_at_once(double x, double y, double z)uArmClassinline
move_to_at_once(double x, double y, double z, int relative, double servo_4_angle)uArmClassinline
pump_off()uArmClass
pump_on()uArmClass
read_linear_offset(byte servo_num, double &intercept_val, double &slope_val)uArmClass
read_servo_angle(byte servo_num)uArmClass
read_servo_angle(byte servo_num, boolean with_offset)uArmClass
read_servo_offset(byte servo_num)uArmClass
set_servo_status(boolean attach_state, byte servo_num)uArmClass
uArmClass()uArmClass
write_left_right_servo_angle(double servo_left_angle, double servo_right_angle, boolean with_offset)uArmClass
write_servo_angle(byte servo_num, double servo_angle, boolean with_offset)uArmClass
write_servo_angle(byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle, byte trigger)uArmClass
write_servo_angle(double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle)uArmClass
write_servo_angle(double servo_rot_angle, double servo_left_angle, double servo_right_angle)uArmClass
write_stretch_height(double stretch, double height)uArmClass
+ + +
+
+
+
+
+ + + diff --git a/classu_arm_class.html b/classu_arm_class.html new file mode 100644 index 0000000..23dd2c7 --- /dev/null +++ b/classu_arm_class.html @@ -0,0 +1,1861 @@ + + + + + + + + + + + UArm Arduino Library: uArmClass Class Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

#include <uarm_library.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 uArmClass ()
 
double read_servo_offset (byte servo_num)
 Read Servo Offset from EEPROM. From OFFSET_START_ADDRESS, each offset occupy 4 bytes in rom. More...
 
void read_linear_offset (byte servo_num, double &intercept_val, double &slope_val)
 read Linear Offset from EEPROM, From LINEAR_INTERCEPT_START_ADDRESS & LINEAR_SLOPE_START_ADDRESS, each offset occupy 4 bytes in rom More...
 
void alert (byte times, byte runt_time, byte stop_time)
 Use BUZZER for Alert. More...
 
void write_servo_angle (byte servo_num, double servo_angle, boolean with_offset)
 Write the angle to Servo. More...
 
void write_left_right_servo_angle (double servo_left_angle, double servo_right_angle, boolean with_offset)
 Write the left Servo & Right Servo in the same time (Avoid demage the Servo) More...
 
double read_servo_angle (byte servo_num)
 read Angle by servo_num without offset More...
 
double read_servo_angle (byte servo_num, boolean with_offset)
 read Angle by servo_num More...
 
double analog_to_angle (int input_angle, byte servo_num, boolean with_offset)
 Convert the Analog to Servo Angle, by this formatter, angle = intercept + slope * analog. More...
 
int move_to (double x, double y, double z, double hand_angle, byte relative_flags, double time, byte path_type, byte ease_type, boolean enable_hand)
 Move To, Action Control Core Function. More...
 
void move_to (double x, double y, double z)
 
void move_to (double x, double y, double z, double hand_angle)
 
void move_to (double x, double y, double z, int relative, double time)
 
void move_to (double x, double y, double z, int relative, double time, double servo_4_angle)
 
void move_to (double x, double y, double z, int relative, double time, int servo_4_relative, double servo_4_angle)
 
void move_to_at_once (double x, double y, double z)
 
void move_to_at_once (double x, double y, double z, int relative, double servo_4_angle)
 
void write_stretch_height (double stretch, double height)
 Write Sretch & Height. This is an old control method to uArm. Using uarm's Stretch and height, , Height from -180 to 150. More...
 
double get_current_x ()
 
double get_current_y ()
 
double get_current_z ()
 
void get_current_xyz ()
 Calculate X,Y,Z to g_current_x,g_current_y,g_current_z. More...
 
void get_current_xyz (double theta_1, double theta_2, double theta_3)
 Calculate X,Y,Z to g_current_x,g_current_y,g_current_z. More...
 
void angle_to_coordinate (double &x, double &y, double &z)
 
void angle_to_coordinate (double theta_1, double theta_2, double theta_3, double &x, double &y, double &z)
 
void coordinate_to_angle (double x, double y, double z, double &theta_1, double &theta_2, double &theta_3)
 Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3. More...
 
void gripper_catch ()
 Close Gripper. More...
 
void gripper_release ()
 Release Gripper. More...
 
void interpolate (double start_val, double end_val, double *interp_vals, byte ease_type)
 "Genernate the position array" More...
 
void pump_on ()
 Turn on Pump. More...
 
void pump_off ()
 Turn off Pump. More...
 
int write_servo_angle (byte servo_rot_angle, byte servo_left_angle, byte servo_right_angle, byte servo_hand_rot_angle, byte trigger)
 
int write_servo_angle (double servo_rot_angle, double servo_left_angle, double servo_right_angle, double servo_hand_rot_angle)
 Write 4 Servo Angles, servo_rot, servo_left, servo_right, servo_hand_rot. More...
 
int write_servo_angle (double servo_rot_angle, double servo_left_angle, double servo_right_angle)
 Write 3 Servo Angles, servo_rot, servo_left, servo_right. More...
 
boolean set_servo_status (boolean attach_state, byte servo_num)
 Attach Servo, if servo has not been attached, attach the servo, and read the current Angle. More...
 
void init ()
 
+ + + +

+Public Attributes

unsigned int INTERP_INTVLS
 
+ + + + +

+Protected Member Functions

double angle_to_coordinate_y (double theta_1, double theta_2, double theta_3)
 Calculate Y. More...
 
+ + + + + + + + + + + + + + + + + +

+Protected Attributes

double cur_rot
 
double cur_left
 
double cur_right
 
double cur_hand
 
double g_current_x
 
double g_current_y
 
double g_current_z
 
boolean g_gripper_reset
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
uArmClass::uArmClass ()
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::alert (byte times,
byte runTime,
byte stopTime 
)
+
+ +

Use BUZZER for Alert.

+
Parameters
+ + + + +
timesBeep Times
runTimeHow Long from High to Low
stopTimeHow Long from Low to High
+
+
+
Examples:
movement.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double uArmClass::analog_to_angle (int input_analog,
byte servo_num,
boolean withOffset 
)
+
+ +

Convert the Analog to Servo Angle, by this formatter, angle = intercept + slope * analog.

+
Parameters
+ + + + +
input_analogAnalog Value
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
withOffsettrue, false
+
+
+
Returns
Return Servo Angle
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::angle_to_coordinate (double & x,
double & y,
double & z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::angle_to_coordinate (double theta_1,
double theta_2,
double theta_3,
double & x,
double & y,
double & z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
double uArmClass::angle_to_coordinate_y (double theta_1,
double theta_2,
double theta_3 
)
+
+protected
+
+ +

Calculate Y.

+
Parameters
+ + + + +
theta_1
theta_2
theta_3
+
+
+
Returns
Y Axis Value
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::coordinate_to_angle (double x,
double y,
double z,
double & theta_1,
double & theta_2,
double & theta_3 
)
+
+ +

Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3.

+

Calculate the angles from given coordinate x, y, z to theta_1, theta_2, theta_3

+
Parameters
+ + + + + + + +
xX axis
yY axis
zZ axis
theta_1SERVO_ROT_NUM servo angles
theta_2SERVO_LEFT_NUM servo angles
theta_3SERVO_RIGHT_NUM servo angles
+
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double uArmClass::get_current_x ()
+
+inline
+
+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::get_current_xyz ()
+
+ +

Calculate X,Y,Z to g_current_x,g_current_y,g_current_z.

+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::get_current_xyz (double theta_1,
double theta_2,
double theta_3 
)
+
+ +

Calculate X,Y,Z to g_current_x,g_current_y,g_current_z.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double uArmClass::get_current_y ()
+
+inline
+
+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
double uArmClass::get_current_z ()
+
+inline
+
+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::gripper_catch ()
+
+ +

Close Gripper.

+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::gripper_release ()
+
+ +

Release Gripper.

+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::init ()
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::interpolate (double start_val,
double end_val,
double * interp_vals,
byte ease_type 
)
+
+ +

"Genernate the position array"

+
Parameters
+ + + + + +
start_valStart Position
end_valEnd Position
interp_valsinterpolation array
ease_typeINTERP_EASE_INOUT_CUBIC, INTERP_LINEAR, INTERP_EASE_INOUT, INTERP_EASE_IN, INTERP_EASE_OUT
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::move_to (double x,
double y,
double z,
double hand_angle,
byte relative_flags,
double time,
byte path_type,
byte ease_type,
boolean enable_hand 
)
+
+ +

Move To, Action Control Core Function.

+
Parameters
+ + + + + + + + +
xX Axis Value
yY Axis Value
zZ Axis Value
hand_angleHand Axis
relative_flagsABSOLUTE, RELATIVE
path_typePATH_LINEAR, PATH_ANGLES
enable_handEnable Hand Axis
+
+
+
Returns
SUCCESS, FAILED
+
Examples:
GettingStarted.ino, movement.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
double hand_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
int relative,
double time 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
int relative,
double time,
double servo_4_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to (double x,
double y,
double z,
int relative,
double time,
int servo_4_relative,
double servo_4_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to_at_once (double x,
double y,
double z 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::move_to_at_once (double x,
double y,
double z,
int relative,
double servo_4_angle 
)
+
+inline
+
+ +
+
+ +
+
+ + + + + + + +
void uArmClass::pump_off ()
+
+ +

Turn off Pump.

+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + +
void uArmClass::pump_on ()
+
+ +

Turn on Pump.

+
Examples:
GettingStarted.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::read_linear_offset (byte servo_num,
double & intercept_val,
double & slope_val 
)
+
+ +

read Linear Offset from EEPROM, From LINEAR_INTERCEPT_START_ADDRESS & LINEAR_SLOPE_START_ADDRESS, each offset occupy 4 bytes in rom

+
Parameters
+ + + + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
intercept_valget intercept_val
slope_valget slope_val
+
+
+ +
+
+ +
+
+ + + + + + + + +
double uArmClass::read_servo_angle (byte servo_num)
+
+ +

read Angle by servo_num without offset

+
Parameters
+ + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
+
+
+
Returns
Return servo_num Angle
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
double uArmClass::read_servo_angle (byte servo_num,
boolean withOffset 
)
+
+ +

read Angle by servo_num

+
Parameters
+ + + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
withOffsettrue, false
+
+
+
Returns
Return servo_num Angle
+ +
+
+ +
+
+ + + + + + + + +
double uArmClass::read_servo_offset (byte servo_num)
+
+ +

Read Servo Offset from EEPROM. From OFFSET_START_ADDRESS, each offset occupy 4 bytes in rom.

+
Parameters
+ + +
servo_numSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
+
+
+
Returns
Return servo offset
+
Examples:
GettingStarted.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
boolean uArmClass::set_servo_status (boolean setAttached,
byte servoNum 
)
+
+ +

Attach Servo, if servo has not been attached, attach the servo, and read the current Angle.

+
Parameters
+ + +
servonumber SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
+
+
+
Examples:
GettingStarted.ino, movement.ino, and UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::write_left_right_servo_angle (double servo_left_angle,
double servo_right_angle,
boolean writeWithoffset 
)
+
+ +

Write the left Servo & Right Servo in the same time (Avoid demage the Servo)

+
Parameters
+ + + + +
servo_left_angleleft servo target angle
servo_right_angleright servo target angle
writeWithoffsetTrue: with Offset, False: without Offset
+
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uArmClass::write_servo_angle (byte servo_number,
double servo_angle,
boolean writeWithoffset 
)
+
+ +

Write the angle to Servo.

+
Parameters
+ + + + +
servo_numberSERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
servo_angleServo target angle, 0.00 - 180.00
writeWithoffsetTrue: with Offset, False: without Offset
+
+
+
Examples:
UArmProtocol.ino.
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::write_servo_angle (byte servo_rot_angle,
byte servo_left_angle,
byte servo_right_angle,
byte servo_hand_rot_angle,
byte trigger 
)
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::write_servo_angle (double servo_rot_angle,
double servo_left_angle,
double servo_right_angle,
double servo_hand_rot_angle 
)
+
+ +

Write 4 Servo Angles, servo_rot, servo_left, servo_right, servo_hand_rot.

+
Parameters
+ + + + + +
servo_rot_angleSERVO_ROT_NUM
servo_left_angleSERVO_LEFT_NUM
servo_right_angleSERVO_RIGHT_NUM
servo_hand_rot_angleSERVO_HAND_ROT_NUM
+
+
+
Returns
SUCCESS, FAILED
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int uArmClass::write_servo_angle (double servo_rot_angle,
double servo_left_angle,
double servo_right_angle 
)
+
+ +

Write 3 Servo Angles, servo_rot, servo_left, servo_right.

+
Parameters
+ + + + +
servo_rot_angleSERVO_ROT_NUM
servo_left_angleSERVO_LEFT_NUM
servo_right_angleSERVO_RIGHT_NUM
+
+
+
Returns
SUCCESS, FAILED
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void uArmClass::write_stretch_height (double armStretch,
double armHeight 
)
+
+ +

Write Sretch & Height. This is an old control method to uArm. Using uarm's Stretch and height, , Height from -180 to 150.

+
Parameters
+ + + +
armStretchStretch from 0 to 195
armHeightHeight from -150 to 150
+
+
+
Examples:
UArmProtocol.ino.
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_hand
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_left
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_right
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::cur_rot
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::g_current_x
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::g_current_y
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
double uArmClass::g_current_z
+
+protected
+
+ +
+
+ +
+
+ + + + + +
+ + + + +
boolean uArmClass::g_gripper_reset
+
+protected
+
+ +
+
+ +
+
+ + + + +
unsigned int uArmClass::INTERP_INTVLS
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.h
  • +
  • /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src/uarm_library.cpp
  • +
+
+ + +
+
+
+
+
+ + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/closed.png differ diff --git a/docs/customdoxygen.css b/customdoxygen.css similarity index 100% rename from docs/customdoxygen.css rename to customdoxygen.css diff --git a/dir_1a98773d75fe27b428f3720cd80183e4.html b/dir_1a98773d75fe27b428f3720cd80183e4.html new file mode 100644 index 0000000..9b2994d --- /dev/null +++ b/dir_1a98773d75fe27b428f3720cd80183e4.html @@ -0,0 +1,121 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/UArmTextControl2.0 Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UArmTextControl2.0 Directory Reference
+
+
+ + + + +

+Files

file  UArmTextControl2.0.ino
 
+
+ + +
+
+
+
+
+ + + diff --git a/dir_347db6ab49fda08848a1220a6fd73a96.html b/dir_347db6ab49fda08848a1220a6fd73a96.html new file mode 100644 index 0000000..b746ff5 --- /dev/null +++ b/dir_347db6ab49fda08848a1220a6fd73a96.html @@ -0,0 +1,122 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/UArmProtocol Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UArmProtocol Directory Reference
+
+
+ + + + + +

+Files

file  UArmProtocol.ino
 uArm Protocol Arduino Sketch
 
+
+ + +
+
+
+
+
+ + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..c7d0014 --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,135 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/src Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Files

file  linreg.cpp
 
file  linreg.h [code]
 
file  ServoTimers.h [code]
 
file  uarm_library.cpp
 uArm Library for Arduino
 
file  uarm_library.h [code]
 uarm library header
 
file  UFServo.cpp
 
file  UFServo.h [code]
 
+
+ + +
+
+
+
+
+ + + diff --git a/dir_70c933def14b4354517bb7369ca39488.html b/dir_70c933def14b4354517bb7369ca39488.html new file mode 100644 index 0000000..b379ab2 --- /dev/null +++ b/dir_70c933def14b4354517bb7369ca39488.html @@ -0,0 +1,122 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/GettingStarted Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
GettingStarted Directory Reference
+
+
+ + + + + +

+Files

file  GettingStarted.ino
 GettingStarted Arduino Sketch.
 
+
+ + +
+
+
+
+
+ + + diff --git a/dir_b23837d91b4065b747aa171009dc6e1c.html b/dir_b23837d91b4065b747aa171009dc6e1c.html new file mode 100644 index 0000000..3a35aef --- /dev/null +++ b/dir_b23837d91b4065b747aa171009dc6e1c.html @@ -0,0 +1,122 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/movement Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
movement Directory Reference
+
+
+ + + + + +

+Files

file  movement.ino
 movement Arduino Sketch
 
+
+ + +
+
+
+
+
+ + + diff --git a/dir_c43ffed018fae7654a900ab6da451d2b.html b/dir_c43ffed018fae7654a900ab6da451d2b.html new file mode 100644 index 0000000..c0aa9eb --- /dev/null +++ b/dir_c43ffed018fae7654a900ab6da451d2b.html @@ -0,0 +1,122 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples/Calibration Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Calibration Directory Reference
+
+
+ + + + + +

+Files

file  Calibration.ino
 Calibration Arduino Sketch.
 
+
+ + +
+
+
+
+
+ + + diff --git a/dir_d28a4824dc47e487b107a5db32ef43c4.html b/dir_d28a4824dc47e487b107a5db32ef43c4.html new file mode 100644 index 0000000..35160f0 --- /dev/null +++ b/dir_d28a4824dc47e487b107a5db32ef43c4.html @@ -0,0 +1,129 @@ + + + + + + + + + + + UArm Arduino Library: /Users/alex/Workspace/develop/uarm_metal/uarm4arduino/examples Directory Reference + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
examples Directory Reference
+
+
+ + + + + + + + + + + + +

+Directories

directory  Calibration
 
directory  GettingStarted
 
directory  movement
 
directory  UArmProtocol
 
directory  UArmTextControl2.0
 
+
+ + +
+
+
+
+
+ + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc.png differ diff --git a/docs/doxy.conf b/docs/doxy.conf deleted file mode 100644 index e6ffd6f..0000000 --- a/docs/doxy.conf +++ /dev/null @@ -1,2407 +0,0 @@ -# Doxyfile 1.8.11 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "UArm Arduino Library" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = ino=c++ - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = ../README.MD ../HISTORY.MD ../src ../examples -#INPUT = ../ - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, -# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. - -FILE_PATTERNS = *.cpp *.h *.md *.ino *.html *.js *.css - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = ../examples - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = *.ino - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = YES - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = README.md - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = header.html - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = customdoxygen.css - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = doxy-boot.js - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /