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)