Referencia Arduino
Transcript of Referencia Arduino
-
7/25/2019 Referencia Arduino
1/19
LUIS LLAMASINGENIERA, INFORMTICA Y DISEO
TUTORIA LES ARD UINO
SHARE ON:
REFERENCIA PARA ELPROGRAMADOR DEL LENGUAJEARDUINO4 NOVIEMBRE, 2013
Os presentamos una referencia para el programador del lenguaje Arduino, con las distintas
instrucciones y sentencias disponibles en el lenguaje, organizados por categoras y con un ejemplo
de cada caso.
Operadores y comparadores Seleccionar Ocultar
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/mailto:?subject=Referencia%20para%20el%20programador%20del%20lenguaje%20Arduino&body=http%3A%2F%2Fwww.luisllamas.es%2F2013%2F11%2Freferencia-lenguaje-arduino%2Fhttp://linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fwww.luisllamas.es%2F2013%2F11%2Freferencia-lenguaje-arduino%2F&title=Referencia%20para%20el%20programador%20del%20lenguaje%20Arduinohttp://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.luisllamas.es%2F2013%2F11%2Freferencia-lenguaje-arduino%2F&media=http://www.luisllamas.es/wp-content/uploads/2013/11/arduino-referencia.jpg&description=Referencia%20para%20el%20programador%20del%20lenguaje%20Arduinohttps://plus.google.com/share?url=http%3A%2F%2Fwww.luisllamas.es%2F2013%2F11%2Freferencia-lenguaje-arduino%2Fhttps://twitter.com/home?status=Referencia%20para%20el%20programador%20del%20lenguaje%20Arduino%20http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.luisllamas.es%2F2013%2F11%2Freferencia-lenguaje-arduino%2F&t=Referencia%20para%20el%20programador%20del%20lenguaje%20Arduinohttp://www.luisllamas.es/tutoriales-arduino/http://www.luisllamas.es/https://twitter.com/https://plus.google.com/https://facebook.com/ -
7/25/2019 Referencia Arduino
2/19
COMPARADORES
OPERADORES ARITMTICOS
OPERADORES DE BITS
123456789
101112131415
1617
//x igual a yx == y//x distinto de yx != y//x menor que yx < y
//x mayor que yx > y//x menor o igual que yx = y
123456
789
1011121314151617
//operador de asignacina = b//adicina + b
//substraccina b//multiplicacina * b//divisina / b//moduloa % b
123456789
10111213
//and binarioa & b
//or binarioa | b
//xor binarioa ^ b
//not binarioa ~ b
//desplazamiento a izquierda
-
7/25/2019 Referencia Arduino
3/19
OPERADORES COMPUESTOS
OPERADORES BOOLEANOS
OPERADORES DE ACCESO
Declaracin y conversin de tipos de variables Seleccionar Ocultar
14151617
a > b
123456789
1011
121314151617181920212223
//incrementoa++//decrementoa//adicin compuestaa += b//substraccin compuestaa = b
//multiplicacin compuestaa *= b//divisin compuestaa /= b//and compuestoa &= b//or compuestoa |= b
12345678
//not!a//anda && b//ora || b
12345
//operacion indireccin*variable//operacion direccin&variable
1 //tipo vacio (solo para funciones)
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
4/19
BOOLEANOS
ENTEROS
COMA FLOTANTE
BYTES
CARACTERES
CONVERSIN ENTRE VARIABLES
2 void
12
//booleano, false o trueboolean = false;
12345678
91011121314
//entero, 16 bits, de 32,768 a 32,767intvar = 100;//entero, 16 bits, de 0 a 65535 (excepto en Due, donde son 32 bits)unsignedintvar = 100;//entero, 16 bits, de 0 a 65535shortvar = 100;
//entero, 32 bits, de 2,147,483,648 a 2,147,483,647longvar = 100000L;//entero, 32bits, de 0 a 4,294,967,295unsignedlongvar = 100000L;
12345
//coma floante, 32 bits, de 3.4028235E+38 a 3.4028235E+38. Precision 6 digitosfloatvar = 1.117;//idntico a float, excepto en Arduino Due donde es flotante de 64 bitsdoublevar = 1.117;
12345
//8 bits, de 0 a 255bytevar = B10010;//16bits, sin signo, de 0 a 65535wordvar = 10000;
12345
//8 bits, de 128 a 127charvar = 'A';//8 bits, de 0 a 255unsignedcharvar = 240;
1 //convierte a char
-
7/25/2019 Referencia Arduino
5/19
CUALIFICADORES DE VARIABLES
Vectores Seleccionar Ocultar
CREACIN DE VECTORES
MANIPULACIN VECTORES
2345678
91011121314151617
char(variable);//convierte a bytebyte(variable);//convierte a intint(variable);
//convierte a wordword(variable);//convierte a longlong(variable);//convierte a floatfloat(variable);
123456789
10111213141516
//STATIC//Variables visibles nicamente en el interior de una funcin,//y cuyo valor se mantiene entre llamadas a la misma.staticint variable;//CONST//Variables cuyo valor no puede ser redefinido tras la inicializacinconstfloatpi = 3.14;//VOLATILE//Variables en las que se indica al compilador que no guarde en los registros//del microprocesador, sino que fuerza la actualizacin en memoria. Esto se//hace cuando existe la posibilidad de que el valor de la variable sea//modificado por otro proceso que se ejecuta concurrentemente con el actual//(por ejemplo cuando se emplean hilos o interrupciones)volatileintvariable = LOW;
12345678
//declarar vectorintmiArray[5];//iniciar vectorintmiArray[] = {2,4,8,3,6};//declarar e iniciar vectorintmiArray[5] = {2,4, 8,3,2};
12
//asignar valor a elemento del vectormiArray[0] = 10;
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
6/19
Cadenas de texto Seleccionar Ocultar
TEXTOS COMO VECTOR DE CARACTERES
TEXTOS COMO OBJETO STRING
Condicionales Seleccionar Ocultar
CONDICIONAL ABREVIADO
CONDICIONAL IF
345
//obtener valor de elemento del vectorx = miArray[4];
12345678
910
charcadena1[15];charcadena2[8] = {'a','r','d','u','i','n','o'};charcadena3[8] = {'a','r','d','u','i','n','o','\0'};charcadena4[] = "texto";charcadena5[8] = "texto";charcadena6[15] = "texto";//vector de cadenas
char* cadenaArray[]={"Cadena 1","Cadena 2","Cadena 3","Cadena 4","Cadena 5","Cadena 6"};
123456
789
1011
// literal de cadena de textoStringtxtMsg = "Hola";// convirtiendo un char a StringStringtxtMsg = String('a');
// convirtiendo un literal a StringStringtxtMsg = String("Texto");// concatenando dos literales a StringStringtxtMsg = String("texto1" + "texto2");
1 condition?true : false;
12345
6789
if(variable < 10){ // accion A}
if(variable < 10){ // accion A
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
7/19
CONDICIONAL SWITCH / CASE OF
Bucles Seleccionar Ocultar
BUCLE FOR
BUCLE WHILE
BUCLE DO WHILE
10111213141516
171819202122232425262728
}else{ // accion B}
if(variable < 10){ // accion A}elseif(variable >= 100){ // accion B}else{ // accion C}
123456789
10
switch(variable){ case1: // accion A break; case2: // accion B break; default:
// caso por defecto (opcional)}
12
3
for(inti=0;i
-
7/25/2019 Referencia Arduino
8/19
Funciones matemticas Seleccionar Ocultar
FUNCIONES DE RANGO
POTENCIACIN
NMEROS ALEATORIOS
TRIGONOMETRIA
12345
do{ //accion variable++;}while(variable < 100);
123456
789
1011121314
//devuelve mnimo entra a y bmin(a,b);//devuelve mximo entra a y bmax(a,b);
//devuelve valor absoluto de aabs(a);//devuelve x restringido a (a,b)constrain(x,a,b);//interpola linealmente y entre x1,y1 x2,y2map(x,x1,x2,y1,y2);
12345
//devuelve a^b (ambos tipo float)pow(a,b);//devuelve la raiz cuadrada de asqrt(a);
12345
//inicializa la semilla del generador de numeros pseudo aleatoriosrandomSeed(semilla);//devuelve un numero aleatorio entre a y b (ambos tipo long)random(a,b);
12345678
//devuelve el seno de a (a tipo float y en radianes)sin(a);//devuelve el coseno de a (a tipo float y en radianes)cos(a);//devuelve la tangente de a (a tipo float y en radianes)tan(a);
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
9/19
FUNCIONES DE BITS Y BYTES
Funciones de textos Seleccionar Ocultar
COMPARACIN
123456789
1011121314151617
181920212223
//devuelve el byte menos signiticativo de una palabra o variable.lowByte(variable);//devuelve el byte ms significativo de una palabra//(o el segundo byte menos significativo en variables mayores)highByte(variable);//devuelve el bit n de una variable x//(siendo el bit 0 el menos significativo)bitRead(x,n);//escribe el bit n de la variable x con el valor b//(siendo el bit 0 el menos significativo)bitWrite(x,n,b);//pone a 1 el bit n de la variable xbitSet(x,n);
//pone a 0 el bit n de la variable xbitClear(x,n);//obtiene el valor del bit n (idntico a 2^n)bit(n);
1
23456789
10111213
14151617181920212223
//delvuelve el caracter en la posicin 3 (idntico a txtMsg[3];)
txtMsg.charAt(3);//sustituye el caracter en la posicin 3 por "A" (idntico a txtMsg[3]="A";)txtMsg.setCharAt("A",3);//concatena texto 1 y texto 2 (idntico a texto1=texto1+texto2;)texto1.concat("texto2");//devuelve la longitud de la cadenatxtMsg.length();//devuelve la cadena convertida en minsculas
txtMsg.toLowerCase();//devuelve la cadena convertida en maysculastxtMsg.toUpperCase();//elimina espacios y carcteres incorrectostxtMsg.trim();//devuelve la cadena de texto como enterotxtMsg.toInt();
12
//compara dos cadenas. Devuelve 1 si texto1 es mayor que texto2,//0 si son iguales, y 1 en caso contrario
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
10/19
SUBCADENAS
BSQUEDA Y SUSTITUCIN
Funciones de usuario Seleccionar Ocultar
VARIABLES GLOBALES
3456789
texto1.compareTo(texto2);//compara si dos cadenas son iguales (idntico a texto1==texto2)texto1.equals(texto2);//compara si dos cadenas son iguales, ignorando maysculas y minsculastexto1.equalsIgnoreCase(texto2);
12345678
//devuelve una subcadena de la posicion 3 a la 10txtMsg.substring(3,10);//comprueba si la cadena empieza por "texto", con offset 3txtMsg.startsWith("texto",3);//comprueba si la cadena empieza por "texto", con offset 3txtMsg.endsWith("texto");
12345678
910
//devuelve el ndice de la primera ocurrencia de 'A',//a partir de la posicin offsettxtMsg.indexOf('A',offset);//devuelve el ndice de la ltima ocurrencia de 'A'//previa a la posicin offsettxtMsg.lastIndexOf('A',offset);
//sustituye las ocurrencias de "texto1" por "texto2"txtMsg.replace("texto1","texto2");
123456789
1011121314
15
intoption=1;intcambiar(){ option=4;}voidsetup(){ Serial.begin(9600);}voidloop(){ cambiar(); Serial.print(option); //muestra 4 delay(10000);
}
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
11/19
PASO DE PARMETROS POR VALOR
PASO DE PARMETROS POR REFERENCIA
PASO DE PARMETROS POR PUNTERO
DEVOLUCIN DE VALORES
123456789
1011121314
intcambiar(var){ var=4;}voidsetup(){ Serial.begin(9600);}voidloop(){ intoption=1; cambiar(option); Serial.print(option); //muestra 1 delay(10000);}
123456789
1011
121314
intcambiar(int&var){ var=4;}voidsetup(){ Serial.begin(9600);}voidloop(){ intoption=1; cambiar(option);
Serial.print(option); //muestra 4 delay(10000);}
12345
6789
1011121314
intcambiar(int* var){ *var=4;}voidsetup(){
Serial.begin(9600);}voidloop(){ intoption=1; cambiar(&option); Serial.print(option); //muestra 4 delay(10000);}
12
intcambiar(){ intvar=4;
-
7/25/2019 Referencia Arduino
12/19
Tipos datos avanzados (Enum / Struct / Typedef) Seleccionar Ocultar
ENUMERACIONES
ESTRUCTURAS
DEFINICION DE TIPOS DE DATOS DE USUARIO
3456789
101112131415
returnvar;}voidsetup(){ Serial.begin(9600);}
voidloop(){ intoption=1; option=cambiar(); Serial.print(option); //muestra 4 delay(10000);}
123456789
10
111213
//declaracionenummiEnumeracion{ opcion1, opcion2, opcion3};//ejemplo de usomiEnumeracion variable = opcion2;
if(variable==opcion2){ //accion}
12345
6789
101112
//declaracionstructmiEstructura{ int campo1; int campo2;
charcampo3;};//ejemplo de usostructmiEstructura variable;variable.campo1=10;
1
234
//declaraciones
typedefintnuevotipo;typedefenummiEnumeracion nuevotipo;typedefstructmiEstructura nuevotipo;
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
13/19
Clases Seleccionar Ocultar
EJEMPLO DE USO DE CLASE
567
//ejemplo de usonuevotipo variable;
12345678
91011121314151617181920
21222324252627282930313233343536373839404142434445
464748
classMiRobot;//definicion de clase ejemploclassMiRobot{public: voidsaludar(); //muestra "Hola" voidincCont(); //incrementa contador
int getCont(); //devuelve contador voidsayCont(); //muestra valor contador voidsetCont(int);//inicializa contador a un valorprivate: intcont=0; //variable contador privada};//muestra "Hola"voidMiRobot::saludar(){ Serial.println("Hola");}
voidMiRobot::incCont(){ this>cont++;}//devuelve contadorvoidMiRobot::getCont(){ returnthis>cont;}//muestra valor contadorvoidMiRobot::sayCont(){ Serial.println(this>cont);}//inicializa contador a un valorvoidMiRobot::setCont(int_cont){ this>cont=_cont;}voidsetup(){ Serial.println("Iniciando"); Serial.begin(9600);
MiRobot robot; robot.saludar(); //se muestra hola}
voidloop(){ robot.incCont(); //se incrementa el contador
http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/http://www.luisllamas.es/2013/11/referencia-lenguaje-arduino/ -
7/25/2019 Referencia Arduino
14/19
A RD UI NO A RD UI NO B AS IC O
NEXT POST
DUAL BOOT WINDOWS/LINUX (1 DE2) - REDIMENSIONAR PARTICIN DEWINDOWS
Esta referencia no es un manual de programacin. Es un chuletario orientado a gente
que ya sabe programar, que sirve para aprendizaje rpido, consulta, y compendio de la
sintaxis de programacin del lenguaje Arduino. Si no es vuestro caso, os recomendamos que
empezis aprendiendo a programar en C++ en alguno de los muchos cursos disponibles
gratuitamente en Internet.
Si te ha gustado esta entrada y quieres leer ms puedes consultar el resto de tutoriales de
Arduino
TAGS:
PREVIOUS POST
COMPILAR C# DESDE CONSOLA, SINVISUAL STUDIO
RELATED POSTSMEDIR LA HUMEDAD DEL SUELO CON ARDUINO E HIGRMETRO FC-28
495051
robot.sayCont(); //muestra el valor delay(1000);}
http://www.luisllamas.es/2016/01/comunicar-arduino-con-c/http://www.luisllamas.es/2016/01/medir-la-humedad-del-suelo-arduino-e-higrometro-fc-28/http://www.luisllamas.es/2016/01/medir-la-humedad-del-suelo-arduino-e-higrometro-fc-28/http://www.luisllamas.es/2013/10/compilar-c-desde-consola-sin-visual-studio/http://www.luisllamas.es/tutoriales-de-arduino/http://www.luisllamas.es/2013/11/dual-boot-windowslinux-redimensionar-particion-de-windows/http://www.luisllamas.es/tag/arduino-basico/http://www.luisllamas.es/tag/arduino/ -
7/25/2019 Referencia Arduino
15/19
0 Comentarios 1
CONTROLAR ARDUINO CON C# Y EL PUERTO DE SERIE
EL MEJOR IDE PARA ARDUINO. VISUAL STUDIO CON VISUAL MICRO
http://www.luisllamas.es/2015/12/el-mejor-ide-para-arduino-visual-studio-con-visual-micro/http://www.luisllamas.es/2015/12/el-mejor-ide-para-arduino-visual-studio-con-visual-micro/http://www.luisllamas.es/2016/01/comunicar-arduino-con-c/http://www.luisllamas.es/2016/01/comunicar-arduino-con-c/https://help.disqus.com/customer/portal/articles/1657951?utm_source=disqus&utm_medium=embed-footer&utm_content=privacy-btnhttps://publishers.disqus.com/engage?utm_source=luisllamas&utm_medium=Disqus-Footerhttps://disqus.com/https://disqus.com/home/inbox/https://disqus.com/home/forums/luisllamas/ -
7/25/2019 Referencia Arduino
16/19
TWITTER G+ LINKEDIN RSS
SIGUENOS EN
SIGUE LEYENDO
TUTORIALES ARDUINO
Search
MEDIR LA HUMEDAD DEL SUELO CON ARDUINO E HIGRMETRO FC-28
CONTROLAR ARDUINO CON C# Y EL PUERTO DE SERIE
EL MEJOR IDE PARA ARDUINO. VISUAL STUDIO CON VISUAL MI CRO
SALIDA ANALGICA MEDIANTE PWM Y FILTRO PASO BAJO
USAR UN INTERRUPTOR MAGNTICO CON ARDUINO (MAGNETIC REED)
http://www.luisllamas.es/2015/12/usar-un-interruptor-magnetico-con-arduino-magnetic-reed/http://www.luisllamas.es/2015/12/salida-analogica-mediante-pwm-y-filtro-paso-bajo/http://www.luisllamas.es/2015/12/salida-analogica-mediante-pwm-y-filtro-paso-bajo/http://www.luisllamas.es/2015/12/el-mejor-ide-para-arduino-visual-studio-con-visual-micro/http://www.luisllamas.es/2015/12/el-mejor-ide-para-arduino-visual-studio-con-visual-micro/http://www.luisllamas.es/2016/01/comunicar-arduino-con-c/http://www.luisllamas.es/2016/01/comunicar-arduino-con-c/http://www.luisllamas.es/2016/01/medir-la-humedad-del-suelo-arduino-e-higrometro-fc-28/http://www.luisllamas.es/2016/01/medir-la-humedad-del-suelo-arduino-e-higrometro-fc-28/http://www.luisllamas.es/tutoriales-de-arduino/http://www.luisllamas.es/feed/http://www.linkedin.com/in/luisllamasbinaburohttps://plus.google.com/+LuisLlamashttp://twitter.com/luisllamas -
7/25/2019 Referencia Arduino
17/19
OTRAS CATEGORIAS
DISEO
INFORMTICA
INGENIERIA
PROGRAMACION
ZONA GEEK
http://www.luisllamas.es/2014/07/instalar-opencv-en-linux-mint-o-ubuntu/http://www.luisllamas.es/2014/07/usar-comandos-de-linux-en-windows/http://www.luisllamas.es/2014/12/arreglar-camara-en-moviles-thl-t5-y-t6/http://www.luisllamas.es/zona-geek/http://www.luisllamas.es/2015/09/consultar-usuarios-y-ordenadores-de-active-directory-con-c/http://www.luisllamas.es/2015/11/consultar-servidor-de-licencias-flexlm-desde-c/http://www.luisllamas.es/2016/01/primer-programa-python/http://www.luisllamas.es/programacion/http://www.luisllamas.es/2015/05/tipos-de-calderas-domesticas/http://www.luisllamas.es/2015/06/las-3-claves-de-la-mejora-de-procesos/http://www.luisllamas.es/2015/12/demasiado-ocupado-para-mejorar/http://www.luisllamas.es/ingenieria/http://www.luisllamas.es/2015/02/usar-la-carpeta-compartida-c-en-windows-7-y-8/http://www.luisllamas.es/2015/03/desactivar-thumbs-db-en-windows-7-y-8/http://www.luisllamas.es/2015/10/ver-television-online-sin-publicidad-abusiva/http://www.luisllamas.es/informatica/http://www.luisllamas.es/2012/07/render-exterior-2/http://www.luisllamas.es/2012/08/render-interior-habitacion-naranja/http://www.luisllamas.es/2012/09/render-exterior/http://www.luisllamas.es/diseno/http://www.luisllamas.es/2015/12/usar-un-interruptor-magnetico-con-arduino-magnetic-reed/ -
7/25/2019 Referencia Arduino
18/19
FREEWARE
LICENCIAExcepto notacin expresa, los contenidos de este sitio se ofrecen bajo licencia Creative Commons
License BY-NC-SA.
Ms informacin
ENTRADAS RECIENTESMedir la humedad del suelo con Arduino e higrmetro FC-28
Nuestro primer programa en Python
Controlar Arduino con C# y el puerto de serie
El mejor IDE para Arduino. Visual Studio con Visual Micro
Feliz Navidad! 2015
POLTICA DE COOKIESEste web utiliza cookies propias y de terceros para ofrecerle una mejor experiencia y servicio. Al
navegar o utilizar nuestros servicios el usuario acepta el uso de las mismas. El usuario tiene la opcin
de impedir la generacin de cookies y la eliminacin de las mismas mediante la seleccin de la
correspondiente opcin en su navegador.
Copyright , All Rights Reserved.
Back to top
http://www.luisllamas.es/2015/12/feliz-navidad-2015/http://www.luisllamas.es/2015/12/el-mejor-ide-para-arduino-visual-studio-con-visual-micro/http://www.luisllamas.es/2016/01/comunicar-arduino-con-c/http://www.luisllamas.es/2016/01/primer-programa-python/http://www.luisllamas.es/2016/01/medir-la-humedad-del-suelo-arduino-e-higrometro-fc-28/http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es/http://www.luisllamas.es/2014/07/instalar-opencv-en-linux-mint-o-ubuntu/http://www.luisllamas.es/2014/07/usar-comandos-de-linux-en-windows/http://www.luisllamas.es/2014/12/arreglar-camara-en-moviles-thl-t5-y-t6/http://www.luisllamas.es/freeware/ -
7/25/2019 Referencia Arduino
19/19