Arduino Cheat Sheet / Acordeón Arduino
Idea adaptada del original Arduino Cheat Sheet por Gavin para "Robots and Dinosaurs".
Referencia de Lenguaje Arduino: http://arduino.cc/en/Reference/HomePage
Estructura y Flujo Variables, Datos y Vectores Funciones Incluidas Bibliotecas
Bibliotecas
Sintaxis Conversiones I/O Digital Serie
// (Comentario en una linea) char() byte() pinMode(pin,[INPUT, OUTPUT]) begin([300, 1200, 2400, 4800,
/* (Comentario de multiple linea)*/ int() word() digitalWrite(pin, valor) 9600, 14400, 19200, 28800,
#define() long() float() int digitalread(pin) 38400, 57600, 115200])
#include <NombreDeLibreria.h> //Escribe HIGH en entradas para //Puede ser cualquier número
Calificadores end()
Estructúra básica del programa //usar los pull-ups
static //persiste entre llamadas int available()
void setup() { byte read()
volatile //usa la RAM
//Corre una tan sola vez I/O Analógicas byte peek()
const //sólo lectura flush()
} analogReference([DEFAULT, Pines Digitales
PROGMEM //usar la flash print(misDatos)
void loop() { INTERNAL, EXTERNAL])
// Se ejecuta repetidamente println(misDatos)
Punteros int analogRead(pin) write(misBytes) Pines Seriales
} & (referencia: obtener puntero) analogWrite(pin, valor) //PWM
Estructuras de control flush()
* (valor: seguir puntero)
if (x < 5) { ... } else { ... } EEPROM( #include <EEPROM.h>) Interruptores
Externos
while (x < 5) { ... } Constantes Advanced I/O byte read(dirInterna)
do { ... } while ( x < 5); HIGH | LOW tone(pin, freqhz) write(dirInterna, miByte) Pines PWM
for (int i = 0; i < 10; i++) INPUT | OUTPUT tone(pin, freqhz, duracion_ms)
noTone(pin) Servo (#include <Servo.h>)
{ ... } true | false
shiftOut(pinDatos, pinReloj, attach(pin, [min_uS, max_uS])
break; //sale del bucle inmediatamente 143 //Decimal ISP
[MSBFIRST,LSBFIRST], valor) write(ángulo) // 0, 180
continue; //va a la siguiente 0173 //Octal (comenzando en 0)
iteración unsigned long pulseIn(pin, writeMicroseconds(uS)
0b11011111 //Binario //1000-2000; 1500 es en medio
switch (miVariable) { I2C
0x7B //Hex (hexadecimal) [HIGH,LOW])
case 1: read() //0 - 180
7U //forzar unsigned attached() //regresa boleano ISP [6 pines]
... 10L //forzar long Tiempo detach()
break; 15UL //forzar long unsigned unsigned long millis()
case 2: 10.0 //forzar floating point SoftwareSerial(RxPin, TxPin)
//desbordamiento en 50 dias
... 2.4e5 //240000 (#include <softwareSerial.h>) ISP [10 pines]
unsigned long micros()
break; begin(long velocidad) //hasta 9600 MOSI VCC
//desbordamiento en 70 minutos NC GND
default: Tipos de datos char read() //espera los datos RESET GND
delay(ms) SCK GND
... void vacío print(misDatos) MISO GND
delayMicroseconds(us)
} boolean (0, 1, true, false) println(misDatos) Cable FTDI
return x; // o "return;" para char (ej. 'a' -128 a 127) Negro GND
Matemáticas Wire( #include <Wire.h>) //para I²C Cafe CTS#
vacíos int (-32768 a 32767) Rojo
Naranja
VCC
TX
min(x, y) max(x, y) abs(x) begin() //se une a maestro Amarillo RX
long (-2147483648 a 2147483647) Verde RTS#
Operadores unsigned char (0 a 255) sin(rad) cos(rad) tan(rad) begin(addr) //se une a esclavo @dir
sqrt(x) pow(base, exponente) requestFrom(dirección, cuenta) I2C
byte (0 a 255)
Operadores generales constrain(x, valMin, valMax) beginTransmission(dir) // Paso 1
unsigned int (0 a 65535)
= (operador de asignación) map(val, deBAJO, deALTO, send(miByte) // Paso 2
word (0 a 65535)
+ (adición) - (sustracción) aBAJO,aAlto) send(char * miCadena)
unsigned long (0 a 4294967295)
* (multiplicación) send(byte * datos, tamaño)
float (-3.4028e+38 a 3.4028e+38)
/ (división) % (módulo) endTransmission() // Paso 3
double (igual que los flotantes) Números aleatorios
== (igual a) != (desigual a) byte available() // Num de bytes
randomSeed(semilla) //long ó int byte receive() //Regresa el sig byte
< (menor que) > (mayor que) Cadenas
long random(max) onReceive(manejador)
<= (igual o menor que) char S1[8] =
long random(min, max) onRequest(manejador)
>= (mayor o igual que) {'A','r','d','u','i','n','o'};
&& (y) || (ó) ! (negación) //cadena sin terminación
Operadores compuestos //puede producir error Bits y Bytes
++ (incremento) char S2[8] = lowByte(x) highByte(x)
{'A','r','d','u','i','n','o','\0'}; bitRead(x, bitn)
GND
9
8
7
6
5
4
3
2
1
0
-- (decremento)
13
12
11
10
AREF
RESET
RX0
TX0
//incluye terminación nula \0 bitWrite(x, bitn, bit)
DIGITAL (PWM= )
+= (suma compuesta) ICSP2
L
bitSet(x, bitn) Este trabajo está bajo licencia
-= (resta compuesta) char S3[]="arduino"; TX ON
Atribución-CompartirIgual 3.0
char S4[8]="arduino"; bitClear(x, bitn) Arduino
TM
*= (multiplicación compuesta) RX
/= (división compuesta) bit(bitn) // bitn: 0=LSB 7=MSB
1
- Adaptación por Liffiton
Vectores y matrices - Versión SVG por Frederic Dufourg
ICSP
&= (AND binario compuesto)
int myInts[6]; //vector de 6 enteros - Traducción al español de Antonio Maldonado
|= (OR binario compuesto) Interrupciones Externas
int myPins[]={2, 4, 8, 3, 6}; - Diseño y adaptación por Karla L. Hdz
Operadores a nivel de bit int mySensVals[6]={2, 4, -8, 3, 2}; attachInterrupt(interrup, func,
- Inspirado en adaptación de Sparkfun Electronics
& (AND binario) | (OR binario) myInts[0]=42; //asigna al primero [LOW, CHANGE, RISING, FALLING]) POWER ANALOG IN
- Paleta de colores tomada del "Arduino Day"
RESET
IOREF
GND
GND
3V3
^ (XOR binario) ~ (NOT binario) detachInterrupt(interrupción) VIN
5V
A0
A1
A2
A3
A4
A5
//en el índice MAS INFORMACIÓN EN:
<< (desplazamiento a la izquierda) myInts[6]=12; //ERROR! El índice va interrupts()
Arduino UNO R3 [Vector extraido de Fritzing]
>> (desplazamiento a la derecha) //de 0 a 5 noInterrupts()