*sados generalmente dentro del condicional I. / s%'r $ F%r / 01&$
MODULO DE MECANICA SENSOR DE VELOCIDAD LINEAL ANGULAR ACELERACIÓN DISTANCIA (DISTANCIA) FUERZA
TERMODINAMICA TEMPERATURA PRESION CAUDAL
ELECTRICIDAD Y MAGNETISMO
VOLTAJE CORRIENTE CAMPO MAGNETICO CAMPO ELECTRICO HUMEDAD RADIACION ANEMÓMETRO
$$ (igual a
-$ (diferente de
$ (menor o igual
(menor que
/ (ma+or que
/$ (ma+or o igual
Operadores matemáticos Se aplican al manejo de variables, condicionales y ciclos
I. (a $$ b •
$ (asignar
0 (módulo
4 (división
1 (suma
2 (resta
3 (multiplicación
Estructuras + c%tr%$ Son instrucciones que nos permiten tomar decisiones + "acer diversas repeticiones de acuerdo a unos par!metros, dentro de las m!s importantes podemos destacar: f
S5itc"4case
6or
7"ile
C%+&c&%a$s I. (S&)
if (entrada '88 9 44 acción A else 9 44 acción #
S2&tc13cas (Cas%s)
Estructuras Son dos funciones principales que debe tener todo programa en Arduino:
stu!()" #
Código de configuración inicial, solo se ejecuta una vez.
$%%!()" #
s5itc" (var 9 case ;: 44 acción A brea<%% brea< case =: 44 acción # brea<% default: 44 acción C
C&c$%s deales para repetir lo que se encuentre dentro de ellos
F%r (!%r)
Esta función se ejecuta luego del stu!(, se mantiene ejecut!ndose "asta que se desenergice o desconecte el Arduino.
for( int a$8% a/;8% a11 9 44 acción a repetir
Var&a'$s
01&$ (,&tras)
%%$a%
true ó false #oolean encendido$true encendido$true%%
Etr% &alor entero int conta$' conta$'%%
Car*ctr
Almacena un ASC c"ar letra$)a) letra$)a)%%
O!ra+%rs '%%$a%s *sados generalmente dentro del condicional f && (+
(o
- (negación f (a || b
O!ra+%rs + c%,!arac&-
5"ile ( var =88 9 44 acción a repetir var11%
Fuc&%s *na función es un conjunto de l>ne as de código que realizan una tarea espec>fica + puede retornar un valor. ?as funciones pueden tomar par!2metros que modifiquen su funcionamiento. ?as funciones son utilizadas para descomponer gran2des problemas en tareas simples + para imple2mentar operaciones que son com@nmente utilizadas durante un programa + de esta manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control a la misma, una vez que sta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.
Fuc&%s +&4&ta$s
Brientas a revisar el estado + la configuración de las entradas + salidas digitales
!&M%+() ermite configurar un pin !&M%+(pin,modo)
!&M%+ (;D,B**)% !&M%+ (a,F*); +&4&ta$0r&t() Escribir un pin digital con ; ó 8 digital7rite(pin,estado
5O!ra+%rs '&t a '&t 2 & (bit a bit AFL 2 (bit a bit BI 2 M (bit a bit NBI 2 O (bit a bit FB 2 (a la izquierda #itS"ift 2 // (a la derec"a #itS"ift
5O!ra+%rs c%,!ust%s 2 1 1 (incremento 2 22 (decremento 2 1 $ (compuesto adición 2 2 $ (compuesto substracción 2 3 $ (compuesto multiplicación 2 4 $ (compuesto división 2& $ (compuesto bit a bit AFL & | = (compesto bit a bit R)
digital7rite (;D,GHG% digitalWrite (13,?B7);
*"RI"+-S
+&4&ta$Ra+()
2 GHG ?B7 2 F* B** 2 true false 2 Constantes enteras 2 Constantes flotante
?eer un pin digital (8 ó ; digitalIead(pin int a = digitalRead (13);
5C%stats
5T&!%s + +at%s
Funciones análogas Ideales para la lectra y escritra de valores an!logos analogRead()
?eer un valor an!logo 8 a ;8=D analogIead(pin int a = analogRead ("#); analogWrite() —> PWM
Escribir un valor an!logo 8 a ='' analog7rite(pin,valor de 7J analogWrite ($, 13%);
2 void 2 boolean & c.ar & byte
2 int 2 5ord 2 long 2 unsigned long 2 float 2 double 2 string 2 arreglo c"ar 2 String 2 objeto & array
5Ut&$&+a+s 2 sizeof(
5C%7rs&-
gu>a r!pida programación 2 setup( 2 loop(
5Estructuras + c%tr%$ 2 if 2 if...else 2 for 2 s5itc" case 2 5"ile 2 do... 5"ile 2 brea< 2 continue 2 return 2 goto
5S&ta6&s
2 % (punto + coma 2 9 (llaves 2 4 4 (comentario de una sola l>nea 2 4 3 3 4 (comentario de varias l>neas 2 K define 2 K include
5O!ra+%rs ,at,*t&c%s 2 $ (operador de asignación 2 1 (suma 2 2 (resta 2 3 (multiplicación 2 4 (división & ' (mdlo)
5O!ra+%rs + c%,!arac&- 2 $$ (igual que 2 - $ (diferente de 2 (menor que 2 / (ma+or que 2 $ (menor o igual a 2 /$ (ma+or o igual a
5O!ra+%rs '%%$a%s 2 && (+ 2 (o 2 - (no
2 c"ar( 2 b+te( 2 int( 2 5ord( 2 long( & /loat()
5D&4&ta$ I3O 2 pinJode( 2 digital7rite( 2 digitalIead(
5Aa$%4% I3O 2 analogIeference( 2 analogIead( 2 analog7rite( 2 7J
5A7a8a+as I3O 2 tone( 2 noone( 2 s"iftBut( 2 s"iftn( 2pulsen(
5T&,!%
2 millis( 2 micros( 2 dela+( 2 dela+Jicroseconds(
5Mat,*t&cas 2 min( 2 maP( 2 abs( 2 constrain( 2 map( 2 po5( 2 sqrt(
5Tr&4%%,9tr&cas 2 sin( 2 cos( & tan()
5Accs% c% a!uta+%rs 2 3 eliminar la referencia del opera2dor 2 & operador de referencia
5N:,r%s a$at%r&%s
2 randomSeed( 2 random(
5&ts / /ts
// Fin del pro+ra&a 4444444444444444444444444444444444444444444444444
2 lo5#+te( 2 "ig"#+te( 2 bitIead( 2 bit7rite( 2 bitSet( 2 bitClear( 2 bit(
5Itrru!c&%s 6tras 2 attac"nterrupt( 2 detac"nterrupt(
5Itrru!c&%s 2 interrupts( 2 nonterrupts(
5C%,u&cac&- 2 Serial 2 begin( 2 end( 2 available( 2 read( 2 pee<( 2 flus"( 2 print( 2 println( & 0rite()
2 EEIBJ 2 leer + escribir 2 Et"ernet 2 conectarse a nternet 2 Cristal l>quido 2 control de ?CL 2 SL 2 lectura + escritura de tarjetas SL 2 Servo 2 control de servomotores 2 S 2 comunicación por el bus S 2 aso a paso 2 control de motores 2 7ire 2 enviar + recibir datos 74=C y mc.as m!s visita
Enciende un LED por un segundo y lo apaga por el mismo tiempo */ //-----------------------------------//Función principal //-----------------------------------void setup() // Se ejecuta cada vez que el Arduino se inicia { pinMode(13,!"#!")$ // %nicializa el pin 13 co&o una salida ' //-----------------------------------//Función cclica //-----------------------------------void loop() // sta *unción se &antiene ejecutando { // cuando este ener+izado el Arduino di+italrite(13,%.)$ // nciende el 0 dela(1222)$ // "e&poriza un se+undo (1s 1222&s) di+italrite(13,)$ // Apa+a el 0 dela(1222)$ // "e&poriza un se+undo (1s 1222&s) '
//-----------------------------------//0eclara puertos de entradas salidas //-----------------------------------int pulsador5$ //#in donde se encuentra el pulsador, entrada
int led13$ //#in donde se encuentra el 0, salida //-----------------------------------//Funcion principal //-----------------------------------void setup() // Se ejecuta cada vez que el Arduino se inicia
{ pinMode(pulsador, %6#!")$ //7on*i+urar el pulsador co&o
Bpción de Consola serial, ver U6 (paso D
una entrada
pinMode(led,!"#!")$ //7on*i+urar el 0 co&o una salida ' //-----------------------------------//Funcion ciclicla //-----------------------------------void loop() // sta *uncion se &antiene ejecutando { // cuando este ener+izado el Arduino //7ondicional para sa8er estado del pulsador i* (di+ital9ead(pulsador)%.) { //#ulsador opri&ido di+italrite(led,%.)$ //nciende el 0 ' else { //#ulsador 6 opri&ido di+italrite(led,)$ //Apa+a el 0 ' ' //Fin pro+ra&a
-2-RII #1 a mltinacional /rancesa Flante e4perta en ma&5inaria indstrial te .a contratado para 5e ato&matices na m!5ina cortadora de papel6 a condi&cin principal es 5e el operario de la m!5ina cando vaya a reali7ar el corte siempre mantenga las dos manos ocpadas, esta es na regla de seg&ridad indstrial para evitar accidentes6 -l operario debe oprimir los dos plsa&dores no con cada mano y la cc.illa cortadora debe bajar y .acer el corte6 -l sigiente montaje simla el control de la m!5ina, los dos plsadores (S1 y S8) y el -9 rojo simla la cc.illa cortadora6
-2-RII #8 : padre 5iere 5e realices n sistema de ilminacin -9 para las escaleras de la casa6 a condicin es 5e si est!s arriba y plsas a S1 o si est!s abajo y plsas S8 el -9 Rojo se enciende y al dejar de plsar se apaga6 omo ga de montaje toma la ima&gen anterior6
ectra serial de na entrada digital QRu aprendo
Janejar una entrada digital &er datos por la pantalla del computador Consola serial ?eer una entrada digital + escribir por consola serial
Conocimientos previos
SeTal digital 6unción digitalIead( + Se2rial.println(
Lectura serial de una entrada digital -------------------------------------Leer una entrada digital y mostrar por la pantalla del computador (consola serial) el estado del pulsador cuando es oprimido Cosas de Mecatrónica y Tienda de Robótica
*/ //-----------------------------------//0eclara puertos de entradas salidas //-----------------------------------int 8oton5$ //#in donde se encuentra el pulsador, entrada //-----------------------------------//Funcion principal //-----------------------------------void setup() // Se ejecuta cada vez que el Arduino se inicia { //7on*i+uración pinMode(8oton,%6#!")$ //7on*i+urar el 8oton co&o una entrada Serial:8e+in(;<22)$ //%nicia co&unicación serial ' //-----------------------------------//Funcion ciclicla //-----------------------------------void loop() // sta *uncion se &antiene ejecutando { // cuando este ener+izado el Arduino //.uardar en una varia8le entera el valor del 8oton 2 ó 1 int estado di+ital9ead(8oton)$ //7ondicional para sa8er estado del pulsador i* (estado1) { // #ulsado Serial:println(=#ulsado=)$ //%&pri&e en la consola serial ' // =#ulsado= else { // 6o esta pulsado Serial:println(=6 #ulsado=)$ //%&pri&e en la consola serial ' // =6 #ulsado= dela(122)$ //9etardo para la visualización de datos en la consola ' //Fin pro+ra&a
"%#S
;V ?a codificación binaria es mu+ importante para transmitir datos entre dispositivos, son las largas cadenas de 8 + ;, por ejemplo 888;;;8;8;8;8; esto podr>a ser un mensaje que contiene información referente a una clave personal para acceder a un edificio. ?os n@meros en base ;8 se pueden representar como valores binarios: =V ara recordar 2 ara leer una seTal digital usa: +&4&ta$Ra+(u,r%P&); 2 ara escribir una seTal digital usa: +&4&ta$0r&t(u,r%P&< 7a$%r); &
Ejercicio 8D *na empresa de gaseosas tiene un sistema con dos sensores, uno de ellos indica si la botella se "a llena2do con el l>quido + el otro sensor indica si la botella +a tiene la tapa. ara este caso simularemos los dos sensores por medio de dos pulsadores (S; + S=. a rtina se describe de esta manera si la botella se llena de manera adecada (se debe activar S1 y mostrar por consola >?aseosa llena‖ ) lego de ello si tiene la tapa colocada (se debe activar S8 y mostrar por consola >?aseosa tapada‖), al /inali7ar el proceso se debe encender n -9 5e indica 5e el proceso termin bien y adem!s se debe mostrar n mensaje por la consola >?aseosa bien empacada‖6 Recerda 5e primero se debe activar S1 y lego S8 para 5e le proceso sea v!lido6
-2-RII % lces navide@as moder&nas son las sigientes mien&tras se mantenga plsado S1 na variable entera iniciali7a&da en # se comien7a a incre&mentar de 8# en 8#, al soltar S1 la variable para de incre&mentarse, cando se plse S8 el valor de la variable se debe cargar a n >Aola Bndo‖ del -9, esto 5iere decir 5e el -9 va estar intermitente en intervalos de tie mpo igales al valor de la variable6 Cor consola serial debes ir mostrando el valor de la variable6 Cara 5e pedas volver la variable a # y pedas .acer otra rtina de intermitencia, coloca la condicin de 5e S1 y S8 se opriman al tiempo, con ello la variable entera debe volver a #6
ectra serial de na entrada an!loga QRu aprendo
Janejar una entrada an!loga &er datos por la pantalla del computador J@ltiples estados de un poten2ciómetro ?eer una entrada an!loga
Conocimientos previos
SeTal an!loga 6unción analogIead( + Serial.println( Bpción de Consola serial, ver U6 (paso D
int valor analo+9ead(A2)$ //%&pri&e en la consola serial el valor de la varia8le Serial:println(valor)$ //9etardo para la visualización de datos en la consola dela(122)$ ' //Fin pro+ra&a
"%#S
e invitamos a que c onozcas algunos tipos de potenciómetros
=V ara recordar 2 ara leer una seTal an!loga usa: aa$%4Ra+(u,r%P&); 2 ara escribir una seTal an!loga de 7J usa: aa$%40r&t(u,r%P&< 7a$%r); 2 *na entrada an!loga va de = o >=?@ &
#$%$R&I&IO "
Este reto es sencillo, pero te va a dar una idea de cómo "acer grandes cosas escribiendo unas pocas l>neas de código. Como bien lo sabes, la lectura de una seTal an!loga te d a un valor de 8 a ;8=D (si tienes alguna duda solo revisa el código de la p!gina anterior. -l desa/o de este ejercicio consiste en mostrar por la consola serial n nDmero entre # y 1#, este nDmero debe cambiar cando mevas el potencimetro6 -l montaje de este ejercicio sa el mismo -s5ema de cone4iones 5e el e4pesto en la p!gina EF6 Sge&rencia Revisa la /ncin map() #$%$R&I&IO "
en un n@mero secreto de 8 a ;8=D + gu!rdalo en una variable entera, "az un programa para que tu amigo deba mo2ver el potenciómetro, si el n@mero que el va generando (mostrar por consola serial el valor de la lectura del potenció2metro al girar el potenciómetro est! ;8 n@meros por arriba o ;8 n@meros por abajo al n@mero que tu pensaste + confirma con el pulsador S; que ese es e l n@mero, el progra2ma debe mostrar por consola WAdivinaste el n@ mero‖de lo contrario Wntenta de nuevo‖. -ste caso podra ser n ejemplo para 5e lo apli5es a na aja de segridad, para 5e gardes mc.o dinero ;)
Lectura serial de entrada anloga -------------------------------------Leer una entrada anloga y mostrar por la pantalla del computador (consola serial) el !alor luego de girar el potenciómetro Cosas de Mecatrónica y Tienda de Robótica */ //-----------------------------------//Funcion principal //-----------------------------------void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial:8e+in(;<22)$ //%nicia co&unicación serial ' //-----------------------------------//Funcion ciclicla //-----------------------------------void loop() // sta *uncion se &antiene ejecutando { // cuando este ener+izado el Arduino //.uardar en una varia8le entera el valor del potenció&etro 2 a 125>
-scritra serial Bu9 a!r+%
Entrada por consola (teclado &ariables booleanas Estado de un ?EL Escritura serial digital
C%%c&,&t%s !r7&%s
SeTal digital 6unción digital7rite( + Serial.read( Configuración de una comu2nicación serial olaridad de un ?EL
{ di+italrite(led,%.)$ // nciende el 0 prendidotrue$ // Actualiza el estado del 0 ' // Si es la letra a ade&Bs el 0 estB encendido else i* ( (leera) CC (prendidotrue) ) { di+italrite(led,)$ // Apa+a el 0 prendido*alse$ // Actualiza el estado del 0 ' ' //Fin pro+ra&a
D97%7%S
Avisos luminosos S.A. te "a contratado para que realices un programa que tiene la caracter>stica de recibir datos, porque la idea es que el aviso de luces se ubique en el piso ;D8 del Edificio #ulli + tu lo puedas controlar desde el piso ;, as> que por cada letra que le escribas por teclado a la Consola serial el programa debe "acer determinada rutina con tres ?ELs, si le escribes: Ltra A rende los tres ?EL Ltra rende el ?EL; por un segundo + lo apaga, luego prende el ?EL= por un segun2do + lo apaga + finalmente prende el ?ELD por un segundo + lo apaga, + vuelve a comenzar. Esta rutina genera una sensación de movimiento 'Letra & "paga los tres -9
-------------------------------------Escritura serial -------------------------------------Consiste en escribir por la pantalla del computador (consola serial) una letra predeterminada" la primera !e# $ue se escriba est un LED se enciende" si se !uel!e a escribir por segunda !e# el LED se apaga% Cosas de Mecatrónica y Tienda de Robótica */ //-------------------------------------------------//0eclara puertos de entradas salidas varia8les //-------------------------------------------------int led 13$ //#in donde se encuentra el 0, salida c?ar leer$ //@aria8le donde se al&acena la letra 8oolean prendido*alse$ //stado 0 la pri&era vez, apa+ado //-----------------------------------//Funcion principal //-----------------------------------void setup() // Se ejecuta cada vez que el Arduino se inicia { Serial:8e+in(;<22)$ //%nicia co&unicación serial pinMode(led, !"#!")$ //7on*i+urar el 0 co&o una salida ' //-----------------------------------//Funcion ciclicla //-----------------------------------void loop() // sta *uncion se &antiene ejecutando { // cuando este ener+izado el Arduino //.uardar en una varia8le el valor de la consola serial leerSerial:read()$ // Si es la letra a ade&Bs el 0 estB apa+ado i* ( (leera) CC (prendido*alse) )
-2-RII u abuelito tiene un cultivo de grandes + verdes lec"ugas, este cultivo tiene D aspersores de agua + tu abuelito quiere prender estos aspersores desde su computador solo escribien2do unos valores por teclado, los aspersores tienen un estado digital (&alor 8 es apagado + valor ; es prendido. Lebes reali2zar un programa que lea una cadena de tres valores, para este ejercicio los aspersores los vamos a simular con tres ?EL ;, = + D por ejemplo: Si tu abuelito escribe === : odos los aspersores de agua deben estar apagados Si tu abuelito escribe >=> : El aspersor ; + D se prenden pero el dos debe estar apagado Si t abelito escribe -l aspersor 1 y 8 se apagan pero el tres debe estar prendido
-ncender n -9 por CWB Bu9 a!r+%
Encender un ?EL de manera proporcional Apropiar el concepto de 7J Escribir una salida an!loga f4else con operadores lógicos
C%%c&,&t%s !r7&%s
7J 6unción analog7rite( olaridad de un ?EL ncrementar + manipular variables
//0eclara puertos de entradas salidas varia8les //-------------------------------------------------int 8rillo 2$ //@aria8le de 8rillo inicia en 2 int variacion E$ //@aria8le de incre&ento con*i+urada de E en E int led ;$ //#in donde se encuentra el 0, salida //-----------------------------------//Funcion principal //-----------------------------------void setup () // Se ejecuta cada vez que el Arduino se inicia { pinMode(led, !"#!")$ //7on*i+urar el 0 co&o una salida ' //-----------------------------------//Funcion ciclicla //-----------------------------------void loop () // sta *uncion se &antiene ejecutando { // cuando este ener+izado el Arduino // scritura analo+a (#M) en el 0 escri8o el valor de 8rillo analo+rite(led, 8rillo)$ // %ncre&ento la varia8le 8rillo de E en E 8rillo 8rillo variacion$ // 6otaG #M ----H 2 - 5EE // Si el 8rillo es 2 o 5EE i* (8rillo 2 II 8rillo 5EE) variacion -variacion$ //a variación se vuelve ne+ativa dela (32)$ //"ie&po de incre&ento en el 8rillo ' //Fin pro+ra&a
1G -stos elementos reciben se@ales de CWB y sirven para