Arduino Variables, vectores y datos
AREF
GND
13
12
~11
~10
~9
8
7
~6
~5
4
~3
2
TX→1
RX←0
DIGITAL (PWM~)
Arduino es una plataforma electrónica para Tipos de datos Constants
L
prototipo de código abierto basado en void vacío HIGH | LOW
hardware y software flexible y fácil de usar. TX
RX
ARDUINO ON boolean (0, 1, true, false) INPUT | OUTPUT
Usado por artistas, diseñadores. hobbistas y char true | false
1
(ej. 'a' -128 a 127)
por cualquiera interesado en crear objetos o int (-32768 a 32767) 143 //Decimal
ICSP
ambientes interactivos long (-2147483648 a 2147483647) 0173 //Octal (comenzando en 0)
RESET unsigned char (0 a 255) 0b11011111 //Binario
byte (0 a 255) 0x7B //Hex (hexadecimal)
Estructura y flujo unsigned int (0 a 65535) 7U //forzar unsigned
word (0 a 65535) 10L //forzar long
Estructúra básica del programa POWER ANALOG IN unsigned long (0 a 4294967295) 15UL //forzar long unsigned
RESET
3.3V
GND
GND
Vin
void setup() { float (-3.4028e+38 a 3.4028e+38) 10.0 //forzar floating point
5V
A0
A1
A2
A3
A4
A5
// Corre una vez cuando el double (igual que los flotantes) 2.4e5 //240000
// programa inicia
} Calificadores Punteros
void loop() { static //persiste entre llamadas & (referencia: obtener puntero)
// Se ejecuta repetidamente volatile //usa la RAM * (valor: seguir puntero)
const //sólo lectura
Estructuras de control PROGMEM //usar la flash Cadenas
if (x < 5) { ... } else { ... } Bibliotecas más usadas Vectores y matrices
char S1[8] =
while (x < 5) { ... } {'A','r','d','u','i','n','o'};
do { ... } while ( x < 5); Puerto Serial por hardware int myInts[6]; //vector de 6 enteros //cadena sin terminación
for (int i = 0; i < 10; i++) { ... } char InChar; int myPins[]={2, 4, 8, 3, 6}; //puede producir error
break; //sale del bucle inmediatamente void setup() int mySensVals[6]={2, 4, -8, 3, 2}; char S2[8] =
{ myInts[0]=42; //asigna al primero {'A','r','d','u','i','n','o','\0'};
continue; //va a la siguiente iteración
Serial.begin(9600); //en el índice //incluye terminación nula \0
switch (miVariable) { } myInts[6]=12; //ERROR! El índice va char S3[]="arduino";
case 1: void loop() //de 0 a 5 char S4[8]="arduino";
... {
break; if (Serial.available()> 0)
case 2: {
... InChar=Serial.read();
Serial.print("Hola[");
break;
Serial.write(InChar);
default:
...
Serial.println("]"); Funciones incluídas
}
} } E/S Digital Matemáticas
return x; // o "return;" para vacíos
pinMode(pin,[INPUT, OUTPUT]) min(x, y) max(x, y) abs(x)
Servo Motor
digitalWrite(pin, valor) sin(rad) cos(rad) tan(rad)
#include <Servo.h>
int digitalread(pin) sqrt(x) pow(base, exponente)
attach(pin, [min_uS, max_uS])
Operadores write(ángulo) // 0, 180
//Escribe HIGH en entradas para constrain(x, valMin, valMax)
//usar los pull-ups map(val, deBAJO, deALTO,
writeMicroseconds(uS)
Operadores generales aBAJO,aAlto)
//1000-2000; 1500 es en medio
= (operador de asignación) read() //0 - 180 E/S Analógicas Números aleatorios
+ (adición) - (sustracción) attached() //regresa boleano analogReference([DEFAULT, randomSeed(semilla) //long ó int
* (multiplicación) INTERNAL, EXTERNAL]) long random(max)
/ (división) % (módulo) int analogRead(pin)
Puerto Serial por Software long random(min, max)
== (igual a) != (desigual a) #include <softwareSerial.h> analogWrite(pin, valor) //PWM
< (menor que) > (mayor que) SoftwareSerial(RxPin, TxPin)
<= (igual o menor que) Bits y Bytes
Advanced I/O
>= (mayor o igual que) lowByte(x) highByte(x)
begin(long velocidad) //hasta 9600 tone(pin, freqhz)
&& (y) || (ó) ! (negación) bitRead(x, bitn)
char read() //espera los datos tone(pin, freqhz, duracion_ms)
bitWrite(x, bitn, bit)
Operadores compuestos noTone(pin)
bitSet(x, bitn)
++ (incremento) Puerto I2C shiftOut(pinDatos, pinReloj,
bitClear(x, bitn)
-- (decremento) Wire (#include <Wire.h>) [MSBFIRST,LSBFIRST], valor)
bit(bitn) // bitn: 0=LSB 7=MSB
+= (suma compuesta) begin() //se une a maestro
unsigned long pulseIn(pin,
-= (resta compuesta) begin(addr) //se une a esclavo @dir
[HIGH,LOW])
Conversiones
*= (multiplicación compuesta) requestFrom(dirección, cuenta)
Tiempo char() byte()
/= (división compuesta) beginTransmission(dir) // Paso 1
unsigned long millis() int() word()
&= (AND binario compuesto) send(miByte) // Paso 2
//desbordamiento en 50 dias long() float()
|= (OR binario compuesto) send(char * miCadena)
unsigned long micros()
send(byte * datos, tamaño) Interrupciones Externas
//desbordamiento en 70 minutos
Operadores a nivel de bit endTransmission() // Paso 3 attachInterrupt(interrup, func,
delay(ms)
& (AND binario) | (OR binario) byte available() // Num de bytes [LOW, CHANGE, RISING, FALLING])
delayMicroseconds(us)
^ (XOR binario) ~ (NOT binario) byte receive() //Regresa el sig byte detachInterrupt(interrupción)
<< (desplazamiento a la izquierda) onReceive(manejador) interrupts()
>> (desplazamiento a la derecha) noInterrupts()