Tag Archives: Robotics

Arduino Programming Quick Reference

Structure
void setup()
void loop()

Control Structures
if (x<7){} else{}
switch (newvar) {
case 1:
break;
case 2:
break;
default:
}
for (int i=0; i <=255; i++){}
while (X<7){}
do {} while (x<7);
continue;                                              //Go to next in do, for, while loop
return x;                                               //Or return; for voids
goto                                                       //potentially harmful

More Syntax
// Single line comment
/* MultiLine comment */
#define COUPLE 2
#include <avr/pgmspace.h>

General Operators
= Assignment Operator
+ Addition
– Subtraction
* Multiplication
/ Division
% Modulo
== Equal to
!= Not equal to
< Less than
> Greater than
<= Less then or equal to
>= Greater than or equal to
&& And
|| Or
! Not

Pointer Access
& Reference operator
* Dereference operator

Bitwise Operators
& Bitwise and
| Bitwise or
^ Bitwise xor
~ Bitwise not
<< Bitshift left
>> Bitshift right

Compound Operators
++ Increment
— decrement
+= compound addition
-= compound subtraction
*= Compound multiplication
/= Compound division
&= Compound bitwise and
|= Compound bitwise or

Constants
HIGH | LOW
INPUT | OUTPUT
true | false
143                                                   //Decimal number
0173                                               //Octal number
0b11011111                            //Binary
0x7B                                              //Hex number
7U                                                  //Force unsigned
10L                                                //Force long
15UL                                            //Force long unsigned
10.0                                               //Forces floating point
2.4e5                                           //240000

Data Types
void
boolean                                                                                //0,1,false,true
char (‘a’ -128 to 127)
unsigned char (0 to 255)
byte (0 to 255)
int (-32,768 to 32,767)
unsigned int (0 to 65,535)
word (0 to 655word (0 to 65,535))
long (-2,147,483,648 to 2,147,483,647)
unsigned long                                                                 //0 to 4,294,967,295
float                                                                                    //-3.4028235E+38 to                                                                                                                   3.4028235E+38
double                                                                              //same as float)
sizeof(newint)                                                            //returns 2 bytes

Strings
char S1[15];
char S2[9]={‘s,’y,’s’,’r’,’e’,’c’,’o’,’n’};
char S#[9]={‘s,’y,’s’,’r’,’e’,’c’,’o’,’n’,’\0′};               //included \0 null termination
char S4[] = “sysrecon”;
char S5[9] = “sysrecon”;
char S6[15] = “sysrecon”;

Arrays
int newInts[6];
int newPins[] = {2,4,8,3,6};
int newSensVals[6] = {2,4,-8,3,2};

Conversions
byte()
char()
float()
int()
long()
word()

Qualifiers
static                                //persists between calls
volatile                           //use RAM
const                               //make read only
PROGMEM               //use flash

Digital I/O
pinMode(pin, [INPUT,OUTPUT])
digitalWrite(pin, value)
int digitalRead(pin)                                        //Write high to inputs to use                                                                                                 pull up res

Analog I/O
analogReference([DEFAULT, INTERNAL, EXTERNAL])
int analogRead(pin)                                    //call twice if switching pins from                                                                                       high Z source
analogWrite(pin, value)                          //PWM

Advanced I/O
tone(pin, freqhz)
tone(pin, feqhz, duration_ms)
noTone(pin)
shiftOut(dataPin, clockPin, [MSBFIRST, LSBFIRST], value)
unsigned long pulseIn(pin,[HIGH, LOW])

Time
unsigned long mills()                               //50 days overflow
unsigned long micros()                         //70 min overflow
delay(ms)
delayMicroseconds(us)

Math
min(x,y)
max(x,y)
abs(x)
constrain(x, minval, maxval)
map(val, fromL, fromH, toL, toH)
pow(base, exponent)
sqrt(x)
sin(rad)
cos(rad)
tan(rad)

Random Numbers
randomSeed(seed)                               //Long or int
long random(max)
long random(min,max)

Bits and Bytes
lowByte()
highByte()
bitRead(x,bitn)
bitWrite(x,bitn,bit)
bitSet(x,bitn)
bitClear(x,bitn)
bit(bitn)                                                   //bitn: 0-LSB 7-MSB

External Interrupts
attachInterrupt(interupt, function, [LOW,CHANGE,RISING,FALLING])
detachInterrupt(interrupt)
interrupts()
noInterrupts()

Libraries
Serial.
begin([300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200])
end()
int available()
int read()
flush()
print()
printIn()
write()

EEPROM (#include <EEPROM.h>)
byte read(intAddr)
write(intAddr, newByte)

Servo (#include <Servo.h>)
attach(pin, [min_uS, max_uS])
write(angle)                                                           //0-180
writeMicroseconds(uS)                                //1000 – 2000, 1500 is midpoint
read()                                                                       //0-180
attached()                                                            //Returns boolean
detach()

SoftwareSerial (#include <SoftwareSerial.h>)
SoftwareSerial(RxPin, TxPin)
begin(longSpeed)                                           //up to 9600
char read()                                                          //blocks till data
print(newData)                                              //or printLn(newData)

Wire (#include <Wire.h>) //For I2C
begin()                                                                //Join as master
begin(addr)                                                     //Join as slave @ addr
requestFrom(addr, count)
beginTransmission(addr)                       //Step 1
send(newByte)                                             //Step 2
send(char * newString)
send(byte * data, size)
endTransmission()                                    //Step 3
byte available()                                           //Num of bytes
byte receive()                                               //Return next byte
onReceive(handler)
onRequest(handler)

OWI Robotic Arm Edge Plus OWI-535/SOFT USB Interface Kit

Today we are taking a look at the OWI Robotic Arm Edge and OWI-535/SOFT USB Interface with Programmable Software:

OWI Robotic Arm Edge Features:

  • 187 piece kit
  • No Soldering Required
  • Multiple movements and functions
  • Robotic arm gripper opens and closes
  • Radial wrist motion of 120°
  • Extensive elbow range of motion of 300°
  • Base rotation of 270°
  • Base motion of 180°
  • Vertical reach of 15 inches
  • Horizontal reach of 12.6 inches
  • Lifting capacity of 100g
  • Search light on the gripper
  • Audible safety gear indicator is included on all 5 gear boxes to prevent potential injury or gear breakage during operation
  • Manipulation using the “5’s”, five-switch wired controller, 5 motors, 5 gear boxes, and 5 joints
  • Remote requires no extra batteries

NOTES:

  • Costs about $40 on Amazon
  • Requires 4 D-size batteries (not included), get these before you even begin. You will put it together faster than you think(1-3 hours)
  • There are no sensors on the robot
  • There is no gripper rotation
  • Test motors before you assemble in case they are defective in anyway. You do not want to have to take this apart and reassemble
  • Smaller than it looks

OWI-535/SOFT USB Interface with Programmable Software for Robotic Arm Edge

Costs about $35 on Amazon

This package allows you to connect the OWI Robotic Arm Edge to a PC and have real time manual control of the robotic arm and program the arm to perform a sequence of movements.

The USB Interface Kit comes complete with a CD, printed circuit board, USB cable and accessories, and a detailed instruction manual.

NOTE: This software does not have any driver signature so you will have to disable Windows Driver Signature Enforcement in Windows 8. Anyone installing this software in Windows 8 / 8.1 please view our tutorial on “How to install unsigned drivers in Windows 8.1” https://www.sysrecon.com/operating-systems/how-to-install-unsigned-drivers-in-windows-8-1/

HARDWARE and SYSTEM REQUIREMENTS

OS: Windows XP (SP 1,2,3), Vista and Windows 7.

64-bit Windows is now supported and can be downloaded here: https://www.owirobot.com/pages/Downloads.html

CPU: Pentium3, 1.0GHz or higher

Memory: 256MB or higher

Hardware Disk Space: 100MB or more