Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacao Arduino PDF
Programacao Arduino PDF
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
u
Y
Y
Y Operadores de bits
6Y Y Y YY'($$Y
6Y d Y
YY
6Y pY Y YY)*$$Y
6Y d YYY
6Y ]Y Y YY+)*$$Y
Y
Estruturas de controle 6Y mY Y YY'),$-Y
6Y Y dY.Y&
$Y
6Y Y
6Y Y dY.Y $Y
6Y Y
6Y - YYY'($Y
6Y Y
6Y p- YYY)*$Y
6Y Y Y
6Y !"Y
Operadores compostos
6Y Y!"Y
6Y DDY$Y
6Y # Y
6Y [[Y $Y
6Y
!!Y
6Y D-Y Y$Y
6Y
!!Y
6Y [-Y
Y$Y
6Y !$Y
6Y -Y
Y$Y
6Y -Y dY$Y
Elementos de sintaxe Y
6Y GYYYd
!%Y Y
6Y Yd!%Y Y
Y
6Y YY Y
!Y Y
6Y Y YY Y
!Y Y
6Y !Y Y
Y
6Y
!Y
Y
Y
Operadores aritmticos Y
Y
6Y -Y
!Y
Y
6Y DY !Y Y
6Y [Y
!Y Y
Y
6Y Y
!Y
Y
6Y Y d!Y Y
6Y rYY Y d! Y Y
Y
Y
Operadores de comparao Y
6Y --Y
Y$"Y Y
6Y -Y Y $"Y Y
Y
6Y YY&
$"Y Y
6Y YY&
$"Y Y
6Y -YY
Y
Y$"Y Y
Y
6Y -YY
Y
Y$"Y
Y
Y
Operadores booleanos Y
Y
6Y Y$!Y
Y
6Y ppY
$!Y Y
6Y Y$!Y Y
Y
c
dY
dYY/0Y&
Yd1Y Y
YY
YY2YdYYY
Y Y
YYY
YY3Y
Constantes
*YYdY
YY
Y Y
6Y A AYpY4)5$ Y
6Y ' 6,YpY)6, 6,$ Y
6Y
YpY$ Y
6Y *Y%!Y
Tipos de dados
dY YY Yd
YY
6Y %$Y
6Y %$Y
6Y %%Y
6Y %%Y
6Y
Y%-Y
6Y %-Y
6Y
Y%Y
6Y %Y
6Y
%Y
6Y %Y
6Y % Y
6Y d -"Y
Converso
6Y -!Y
6Y -!Y
6Y -!Y
6Y -!Y
6Y -$Y
Referncia
6Y ,Yu* -$Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
0Y
Entrada e sada digitalY
6Y 7 Y8Y -%Y Comunicao serialY
6Y 5Y8Yd
--Y 6 YY
YYYY
YY
6Y Y * Y-Y
Y
Y
Y
Y dYY
YYdY YY
Entrada e sada analgicaY Y
Y6uY YY
YYYY
6Y Y* Y-Y Y"Y*+YY!Y,+Y8YYd1Y
2Y
6Y 5Y8Yd
Y9Y 57-Y Y
0YY
Y
2YYY"YY!Y
Y YY Y Y
Entrada e sada avanadaY 6Y uY $Y
6Y )
Y 8Y# 8Y) 8Yd
:-Y 6Y YudY::::::::::::::%Y
6Y
YY
Y8Yd
::::::- Y 6Y Yu Y::::::::::::::::-Y
6Y u
Y:::::::::::::::::Y
TempoY 6Y uY Y
6Y
YY"Y 6Y uY Y
Y
6Y
YY::::::::::::"Y
Y
6Y :::::::::::::::::::!Y Y
6Y 7 ; :::::::::::: Y
Y
$Y
Y
Y
MatemticaY Y
6Y Y/8Y-Y Y
Y
6Y /Y/8Y:::::::::::::::::::Y Y
6Y Y/Y Y
6Y Y/8Y8YY Y
Y
6Y Yd
8Y48YA8Y48YA::::Y Y
6Y Y8Y/Y Y
6Y &Y/:::::::::::::::::::::Y Y
Y
6Y &Y/Y Y
Y
TrigonometriaY Y
Y
6Y Y Y
Y
6Y Y Y Y
6Y Y Y Y
Y
Y
Nmeros aleatriosY Y
6Y u Y ::::::::::::::"Y Y
6Y Y Y/!Y Y
Y
6Y Y Y8Y/:::::::::::!Y Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
Y
setup()
Y
Y
YY Y&
Y
YYYY Y6YY
YY2YY
Y
d
d8YY Y Y8Y YY
Y Yd8YYY
Y
Y/
YY
Y
d2Y3YYY
YY Y
Y Y
Exemplo
Y
Y-Y%GY
Y
d Y
Y
Y
YYu ""GY
YY7
8Y ' 6,GY
Y
Y
d YY
Y
YYYY
Y
Y
Y
loop()
Y
3YY
Y
Y
Y&
Y YYdY8YY
YY2Y/YY&
Y
Y
Y
8YYYY/
YYYYY Y3 8Y YY
YY
2Y
YY Y6YY
YYYdYYY
Y
ExemploY
Y
Y-Y%GY
Y
Y
Yinicializa o serialYYYY Y
YY
d Y
Y
Y
YYu ""GY
YY7
8Y ' 6,GY
Y
Y
YYYYYY Yd28Y
YYdYYYYYY Y
d YY
Y
YYY *
Y--YA AY
YYYY5<A<GY
YYY
YYYY5<4<GY
Y
YY !"""GY
c
if (condicional) e ==, !=, <, > (operadores de
comparao)
if8Y&
YY
Y=
YY
Y Y Y8YdY&
Y
Y YY8Y
YY/Y
Y
YY Y
Y YdY)YYY
YdYYY
)YYYY
dYYYYY Yd
dYYY
YY YY
Y&
Y"YuY8YYY2Y
YY Y* Y Y
YYYYY
&
Y
Y Y Y1YYd YY3 Y&
Y
Y Y YdY GYY
YY
YYYY Y3 Y
if (x > 120)
digitalWrite(LEDpin, HIGH);
YY&
Y
Y Yd YYY
Y YYY
Y Y Y
Operadores de comparao:
x == y (x igual a y)
x != y (x no igual a y)
x < y (x menor que y)
x > y (x maior que y)
x <= y (x menor ou igual a y)
x >= y (x maior ou igual a y)Y
Cuidado:
,Y
YYY
Y Y YY
YY Y
YYY/Y-Y!"YY)YY Y
Y
YY
Y Y Y YYYYdY!"YYd
dY/YY
YYY YY
Y
YY/Y--Y!"Y8Y&
YY
Y Y Y8YdYY/YY
YY!"Y
YYY>YY
3YYd YY/YY
YY!"8YYYYY
Yd Y
YYY&
YY
Y*YY&
YY
YY Y
Y
YdY.YY/-!"Y Y
Y Y!"YY YYd
dY/YYYY Y
YYY
Y Y Y
8YY/YYY!"YYY Y<<Y
Y
YdYY!"8Y&
Y
YY
d Y,*68Y Y&
Y>Y Y Y2YYY&
Y.Yd Y
*&
8YY/Y-Y!"Y
YYd 8Y&
YYYY&
Y Y&
Y
Y
c
if/elseYY
YYYYY
/Y Y3 Y Y&
YYYifY
8Y Y dY
&
Y>YY=Y
Y Y/8Y
Y Y3Y YYd YY
Y
Y YY YYYdY Y
YYY&
Y""YY
YYY YYY
YY""Y
YY)Y3 YYY
'Y&
Y
YYelse ifY YY
YY
YY
YYelseYY6Y>Y Y Y
Yelse ifYY Y
)
Y Y Y2YY Y0Y
Y/
dYYdY YYYY
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
Descrio
YYforYY
2 YYY
YY Y3 Y YYdY6Y YY
YYY
YYYY2YYYYYforYY
YY&
&
Y
Yd8YYY&
Y
YYYYYY=
Y Y Y
Y Y
Y
Exemplo
// Aumentar o brilho de um LED usando um pino PWM
int PWMpin = 10; // um LED em srie com um resisotr de 1k no pino 10
void setup()
{
// nenhum setup necessrio
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
Dica de programao
'Y
Y*YY
YforYY
YY/ dY&
YY
YY YY
Y
Y
Y Y8Y
Yu *Y?
&
Y YY YY YY 8Y
YY@G@Y=Y
Y?
&
Y YYY YY
YY
&
&
YYd
YY*YYd
dYYYYYY
Y YYforYY
d2Y YYY
YY
YYY YY
Y
Y
Y
Y
Y
Y
Y
Y
c
Y
(YY Y&
YYYif8YYswitch / caseYYY
/Y Y
YSwitch/caseYYY Y
Y
YY Y@@Y Y Y
YY
YYdY)YYY YYYYd
dY YYY/
YY3 YY
Y
YdY 1Y
Switch / caseYY
Y
YY/ dY&
Y
Y
Yif/elseY Y Y&
YY Y Y
YYY
YswitchY dY
Y YYdY 1YYY Y@@Y
3YY
YdY 1YuYYYbreakYYY Y3YY/
Y YY Y
3 Y YY
Y Y@@8YYYYdY
YYYYYdY
1YYY@@YYuY
YYbreakYY YY3 YY Y
Y Y
Y Y&
YY
Y
Yif/else ifY
Parmetros
6Y dY[YYd
dYYY&
Yd1Y
YdY 1Y
6Y
Y[YY
Y
Y YYYY3 Y&
Y
YY
YY/
Y
6Y #Y[YYY#YYYswitchYdY
Y YY
YYcaseYY&
&
Y
Y dYdY 1YuY
YY Y
Y/
Y YY 8YY&
Y YY
YY&
Yd1Y =Y#Y YYYYY Y
YY
YdY 1YYY Y
YY
Exemplo
switch (var) {
case 1:
//faa alguma coisa quando var == 1
break;
// break is optional
case 2:
//faa alguma coisa quando == 2
break;
default:
// se nenhum valor for idntico, faa o default
// default opcional
}
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
DescrioY
whileY
YY&
YYY Y3 YYdYYY
YY YY&
YY
/YYYYYYYY&
YdY
Y
YYdY Yd
dY&
Y
Y Yd Y
YY3 YdYYY YdY Y YwhileY Y YYY
Y Y
Yd
dY
Y
Y Y/YYYY Y
YY
Syntax
while(expresso){
// cdigo
}
Parmetros
/Y[Y
YYYY*Y&
YYYd YYd Y
YY
Exemplo
var = 0;
while(var < 200){
// algum cdigo que se repete 200 vezes
var++;
}
Y
Y
)YdoY
Y YYY&
YYwhileY8YYY/Y Y&
YY YY YYY
YY Y3 Y&
YYwhile8YYY YY8YYY Y3 YY
Y/
8Y
YdoYYY
Y/
YYY
Yd2Y
do
{
// bloco de cdigo
} while (condio);
Exemplo
do
{
delay(50); // espera para que os sensores se estabilizem
x = readSensors(); // verifica o sensor
Y
Y
Y
Y
Y
c
continueYY
YYY0Y Y3 YYYdo8Yfor8Y
YwhileYYYY&
YY3 Y
dYYYY Y Y Y YY Y
Exemplo
for (x = 0; x < 255; x ++)
{
if (x > 40 && x < 120){ // criar saltos de execuo
continue;
}
digitalWrite(PWMpin, x);
delay(50);
}
Y
2Y
Y
YYY
Yd8YY
Y
Sintaxe:
GY
YdGYYYYYd
Y
Parmetros
dY
Yd
dY
YY
Exemplos:
6Y
YYYYdY Y
YYY
YY
int checkSensor(){
if (analogRead(0) > 400) {
return 1;
else{
return 0;
}
}
Yd[dYreturnYY>YYY
YY Y3 YYY&
YYY@
@Y
void loop(){
return;
c
,YY
/Y YYY
Y
YY&
Y
Sintaxe
Y
Y&
GYYdYY
/Y YYY&
Y
Dica
)Y
Y YYY = YYY*YY
dY
Y
YY&
YYY
YY
Y
8YY
YY
Y YY
YYY2YY&
Y
Y Y dY
Y
YY&
YYY
Y YY
Y YYY
Y
YY
Y
/Y YY
Y Y YY
Y
Y Y Y
Y
Y YY
Y
Y YY3YYY
Y Y Y
YY
Exemplo
for(byte r = 0; r < 255; r++){
for(byte g = 255; g > -1; g--){
for(byte b = 0; b < 255; b++){
if (analogRead(0) > 250){ goto bailout;}
// more statements ...
}
}
}
bailout:
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
G
6 YYY
YY
Exemplo
int a = 13;
Dica
&
Y Y2Y
YYYYYd
Y
Y
YY YY)Y/YYYY
YY3dYYYYY
YYYd
Y 8Y
YYuYY
YY YY
dY
YY3Y
Y YYYYYY
YYYd
Y Y
Yd28Y YYY YY Y
Y
*dYY
YYY Y
Y YY*YYY
YY
Y
0Y
8Y Y/8YYY Y
Yd2YY
YYY
Y&
YY
Y YdYYYd 8YY
YY
Y YY YY[dY@ @Y
Y3Y YY[dY@@Y&
YdY2 Y
Y
Y&
YY&
Y YY
Y@',*@YYYdYYYY YY3 Y YY
YdY
YY
&
Y
*dY &
Y
YY YYY
YY&
Y YY Y Y
YY
YYY Y
Y Y
Y
Yd 8YYdYYYdY
YYY/Y Y
YYYdY
YdY
Y
Y
YY YY
YY
Y Y
c
Os principais usos das chaves
Funes
void myfunction(datatype argument){
sentena(s)
}
Loops
while (expresso booleana)
{
sentena(s)
}
do
{
sentena(s)
} while (expresso booleana);
c
*
YYYYY&
YY
YYYYd1YY
Y
YY
YY YYYYYYY YY YYYY/ YYY
YYYY
YY3Y YY,Y
Exemplo
x = 5; // Esta uma linha simples de comentrio. Qualquer coisa depois das barras um
comentrio
// at o fim da linha
DicaY
?
YdY/ YYY3 Y@@YY YYY
Y YdY Y
dYY&
Y YYYY YYYYY3 YYY
YY
Y Y Y&
YY YYY Y YYY>Y&
Y
Y2Y
Y8Y
Y&
Y
YYYY YY
=Y
/0YY
Y
Y>Y
c
YY
YY
Y>Y Y
Y*Y&
YYY Y Y
YYY
Y
YY&
YYY=Y Y*Y YY
YY
YYY
3YYY)Y Y
Y1YYYYYdY YYY
YY
Y Y
Y
YY =
dY8YY/8Y
YY YY&
YY Y
YY
Y YY
YY
Y
YY
YY Yd
dY'YYY/Y
dYY
YYdY
Y/Y Y Y
Sintaxe
Y(*YdY
&
Y&
YYYY
Y
Exemplo
#define ledPin 3
// O compilador vai substituir quanquer meno a ledPin pelo valor 3 no momento da
compilao.
Dica
c
#includeYY
YY
Y
YYY
YY YYY YY
&
Y&
Y#include8Y Y YYY#define8YYdYYYd
YYY
Exemplo
Y/Y
Y
YY&
YY
2 YY2Y YY3YYYdY YY
Y Y2YYYYYY Y Y3Y AYYYY
Y Y Y
YY
Y
#include <avr/pgmspace.h>
-
2YYdY Y&
Y
Y.Y Y YY Y
YYd
dY&
Y
Y.Y&
Y
)YY Y
YYY
Y YY*YY Y Y Y YYY
Y
Y Y &
Y
2 YY
8YY&
Y Y
Y&
Y
Y
Y)Y Y
Y Y YY YY
YYdY Y/Y.Y Y YY Y
YY
2YYdYYd
dY&
Y
Y.Y&
Y
Exemplo
int sensVal; // declera uma variavel do tipo inteiro com o nome de sensVal
senVal = analogRead(0); // armazena o valor da voltagem (digitalizado) no pino
analgico 0 em sensVal
Dicas de programao
Yd
dY.Y&
YYY2Y YYYdY&
YY&
Y2YuYYYY YY
YYdY2 Y YYY
'Y
YY Y Y YBY-YCYY Y
YYYY Y YYBY
--YCYY Y
Y
8Y&
Y
Y&
Y
Y/0YY
Y
YY
c
a
DescrioY
Y YYY8Y 8Y
8Y
Y&
dY Y Y Y
YYYY
YYY Y Y Y 8Y8YY/Y -Y
YY$8Y Y
&
Y YY-YYY YYY&
Y
YY Y/YYY
YYY
Y&
YY&
Y YY2 YYY Y YY Y!YY
YYYYdY Y%$Y
YdY[%$YuYY YY YY Y Y YYYYY
YY
Y
uY
Y Y YY YYY
Y YY
8YYY
Y YY
Y
Y
YYY
Y
Exemplos
y = y + 3;
x = x - 7;
i = j * 6;
r = r / 5;
Sintaxe
result = value1 + value2;
result = value1 - value2;
result = value1 * value2;
result = value1 / value2;
Parmetros:
d
!Y&
&
Yd
dY
YY
d
$Y&
&
Yd
dY
YY
Dicas de programao
6Y uY&
YYYYY Y8YY
Y
YYY Y
/YY"Y Y!"""Y
YY
Y>YdY
6Y YY Yd
dY&
Y=Y YY
YYYYY
Y dY
Y
Y
6Y *YYYY&
Y
Yd
dY Y@ YYd@YYYY&
YYY Y
Y
"Y[Y!Y
Y"Y[Y%$Y
6Y Y
Y&
YY Y0Y
Yd
dY YY8YYYYY
YY
dYYYYYd Y Y
Y
6Y 6YY Y Y YYdY Y
YY Yd
dYY
YY
Y
c
r
DescrioY
*
YYY Y dY&
Y
YYY d YY
YDY>YYY
Yd
dY Y
Y
YY YYYY Y
YY
Sintaxe
Y-Y d YrY dY
Parmetros
d YY>Y&
Y
Y d Y
dYY>YY d YY
Retorna
YY
Exemplo
x = 7 % 5; // x agora comtm 2
x = 9 % 5; // x agora comtm 4
x = 5 % 5; // x agora comtm 0
x = 4 % 5; // x agora comtm 4
Cdigo de exemplo
/* atualizar os valores de um array um de cada vez em um bloco */
int values[10];
int i = 0;
void setup() {}
void loop()
{
values[i] = analogRead(0);
i = (i + 1) % 10; // operador de resto de diviso atualiza a varivel
}
Dica
)Y Y YY Y dYY
YYd
dYYY
c
---
if8Y&
YY
Y=
YY
Y Y Y8YdY&
Y
Y YY8Y
YY/Y
Y
YY Y
Y YdY)YYY
YdYYY
if (algumaVariavel > 50)
{
// faa alguma coisa
}
)YYYY
dYYYYY Yd
dYYY
YY YY
Y&
Y"YuY8YYY2Y
YY Y* Y Y
YYYYY
&
Y
Y Y Y1YYd YY3 Y&
Y
Y Y YdY GYY
YY
YYYY Y3 Y
YdY YY Y3Y
YYYY3Y
dY
Y>YY Y3 Y YY
YYd
Y&
Y
Y/
Y Y Y Y
if (x > 120) digitalWrite(LEDpin, HIGH);
if (x > 120)
digitalWrite(LEDpin, HIGH);
c
Y Y YY
Y Y Y YY
YYY
! (negao)
YYYY YYYY
if (!x) {
// ...
}
Yd YYY/YYYYY/YY
YY"Y
Cuidado
*&
[Y YY
YY YY@@Y YY@@YYY Y3Y YY
@@Y YYY@@YYYYY Y
(YY YY
YYY@)6@Y YY@pp@YYY Y3Y YY@p@Y
)Y Y3Y YY@'E)@Y YY
Y@m@YYYYYY YY@@8Y
YYYY2Y YY
YY&
Yd1Y =Y
Exemplos
if (a >= 10 && a <= 20){} // verdadeiro se a estiver entre 10 e 20
c
a !"#
Operadores de bits
)Y Y YY2Y
YY dY YY Yd
dYY=
YdY
Y Y
&
Y YY YY7
Y YY/YY Y
Y/Y
YYY
Y&
Y YY Y&
Y
c
'YYYYY dY
6Y 4YY )*,(YYYYYY&
Y&
YYYY Y'(Y
6Y *YYdY Y Y )*,(YYYdYdY YY&
Y&
YYYY
Y)*Y
int i; // varivel do contador
int j;
void setup(){
DDRD = DDRD | B11111100; // marca a direcao dos bits para os pinos 2 a 7 deixando o 0 e o
1 intocados (xx | 00 == xx)
// o mesmo que pinMode(pin, OUTPUT) para os pinos 2 a 7
Serial.begin(9600);
}
void loop(){
for (i=0; i<64; i++){
PORTD = PORTD & B00000011; // limpa os bits de 2 - 7, deixa os pinos 0 e 1 intocados (xx &
11 == xx)
j = (i << 2); // desvia os bits da variavel 2 bits para a esquerda para evitar os pino 0
e1
PORTD = PORTD | j; // combina a informao da porta com a nova informao para os
pinos dos LEDs
Serial.println(PORTD, BIN); // debug para verificar a mscara
delay(100);
}
}
c
void loop(){
PORTD = PORTD ^ B00100000; // inverte o bit 5 (digital pino 5), mantem os demais
intocados.
delay(100);
}
$
)Y Y YY'),YYY*DDYYYYY Y
1YmY(Y Y YYYpYY
YY YYY!Y YYYYdYdY Y YY Y/Y
YY
0 1 operando1
----------
1 0 ~ operando1
int a = 103; // binario: 0000000001100111
int b = ~a; // binario: 1111111110011000 = -104
,d2Yd1YY
YYdY
Y>YdYY
Y YY YYY
&
YYYYd YY
Yd
dYYY Y YY YYuYYYY!YY>YYdY
Y Y Y YdYYdYY Y YYY Y7Y0Y
Y5# Y
(Y Y8YYYY&
YY&
&
YY/8Ym/YYYY&
Y[/[!Y
Yd28YYY YYY
Y/YY Y
Y
Y
Y = Y
c
%
A
Y Y Y Y dY YYY*DDYY Y dYYY&
YYYYYY YY
Y Y2YY&
YYYY Y Y&
Y=Y d YY>Y Y
YYY Y Y Y
Sintaxe
ddYY
G GY
ddYY
G GY
Parmetros
ddY[Y8Y8YY
G GYY-Y%$Y
Exemplo:
int a = 5; // binario: 0000000000000101
int b = a << 3; // binario: 0000000000101000, ou 40 em decimal
int c = b >> 3; // binario: 0000000000000101, ou de volta ao 5 como no inicio
?
Yd1Y dYYY&
Y
YdY/Y
YY>Y YY/YYYYY&
YY
/YY Y
int a = 5; // binario: 0000000000000101
int b = a << 14; // binario: 0100000000000000 - o primeiro 1 em 101 descartado
uYd1YY2Y Y&
Y
Y Y!YY
YdYdYY d YYY YY8Y
Y Y
Y YYY YYY&
YY&
YY
YY Y Y YY$Yd Y
Y Y Y&
Y Y/YYY1Y Y$YYY/0Y YY
2 Y
1 << 0 == 1
1 << 1 == 2
1 << 2 == 4
1 << 3 == 8
...
1 << 8 == 256
1 << 9 == 512
1 << 10 == 1024
...
?
Yd1Y dYYY Y
YdY/Y
YY>Y YY/8YYY Y Y
Y Y Y Y/YuY/YY YY8YYYYd YYYY YY&
Y YY/YYdY
Y
Y'YYYY YYY YYYYYY20Y3YY
int x = -16; // binario: 1111111111110000
int y = x >> 3; // binario: 1111111111111110
YYY Y/Y YYY&FYYYYY = Y
8Yd1Y Y =Y dY YYYY2Y'YYd1Y dY
2Y
c
a -!-
)Y Y YYY2Y
Y
YY dY YY Yd
dYuY&FY
2 YYY
YYY Y
=YY Y YY'(YYY Y YY)*pYY YY
Y
Y
YY
operador de bits composto AND (&=)
Descrio
)Y Y YYY'(Y-YY&FY
2 YY
Yd
dYY
YY
YY&
Y
YYY
Y Yd
dY=Y YY4)5YY"YYY
YY
Y YYY@2@Y
Y@@Y YY
Sintaxe:
x &= y; // equivalente a x = x & y;
Parmetros:
/Y
Yd
dY YY8YY
YY
Y
YY YY8Y8Y
YY
Exemplo:
8Y
YdY Y Y YY'(YY
0 0 1 1 operando1
0 1 0 1 operando2
----------
0 0 0 1 (operando1 & operando2) - resultado de retorno
Y
Y&
YYY Y'(Y
Y Y"YY YY"Y YYYY
Y
d
dY YYYYY""""""""Y-Y"Y
Y&
YYY Y'(YY
Y Y!YYYYY YYY
!!!!!!!!Y-YY
YY
*&
YYYYY2Y
YY YY Y
Yd
dY / YY Y
YYY3Y
YY Y YYY'(Y-YY
YYY/Y!!!!!!""Y
1 0 1 0 1 0 1 0 varivel
1 1 1 1 1 1 0 0 mscara
----------------------
1 0 1 0 1 0 0 0
varivel no modificada
bits limpos
&
Y
YYYYYYY Yd
dY
YY Y/Y
x x x x x x x x varivel
1 1 1 1 1 1 0 0 mscara
----------------------
x x x x x x 0 0
c
varivel no modificada
bits limpos
YY
myByte = 10101010;
myByte &= B1111100 == B10101000;
Y
operador de bits composto OR (|=)
Descrio
)Y Y YYY)*Yp-YY&
Y
2 YY
Yd
dYY
YY
YY&
Y
YYY
Y=Y YY!Y
Sintaxe:
x |= y; // equivalente a x = x | y;
Parmetros
/Y
Yd
dY YY8YY
YY
Y
YY YY8Y8Y
YY
Exemplo:
8YYdYYYY)*YpYY
0 0 1 1 operando1
0 1 0 1 operando2
----------
0 1 1 1 (operando1 | operando2) - resultado de retorno
Y&
YYY Y)*YY
Y Y"YY YY8YYYYY
variivel no modificada
bits alterados
&
YYYYYYd
dY
YY Y/Y
x x x x x x x x varivel
0 0 0 0 0 0 1 1 mscara
----------------------
x x x x x x 1 1
variivel no modificada
bits alterados
uYY
myByte = B10101010;
myByte |= B00000011 == B10101011;
c
DD
DescrioY
Y
Y Y
Yd
dY Y
Y
Y!Y
Sintaxe
x++; // incrementa x em 1 e retorna o antigo valor de x
++x; // incrementa x em 1 e retorna o novo vaor de x
D--&--
DescrioY
*2Y
YY
YY
Yd
dYY
YY
Yd
dY)Y YD-YYY
YYYd0Y
Y Y/Y/ Y Y/Y
Sintaxe
x += y; // equivalente expresso x = x + y;
x -= y; // equivalente expresso x = x - y;
x *= y; // equivalente expresso x = x * y;
x /= y; // equivalente expresso x = x / y;
Parmetros
/Y&
&
YY Yd
dY
Y&
&
YY Yd
dY
YY
Exemplos
x = 2;
x += 4; // x agora contm 6
x -= 3; // x agora contm 3
x *= 10; // x agora contm 30
x /= 2; // x agora contm 15
c
*YYd
dY[ YY
Y
YYY
YYYYY
YY dY'3YYYYY
Y
false
YYYYY Y
YYY YY"Y2Y
true
YY&
Y YY!8YY&
YY8YY
YY
Y YYY
?
&
YY&
YYY2YY,*68Y
Y YY8Y[!8Y$YY[$""YY Y Y
Y
Y
'Y&
Y
YYYY YY>
Y Y YA A8Y4)58Y ' 6,8YY)6, 6,Y
HIGHY
)Y Y YA AYY1YY
YY YdY
Y
Y YYYYY
Y
Y ' 6,Y
Y Y)6, 6,Y?
Y
YYY
YY ' 6,YY7 8YY Y
Y
Y * 8YY Y YYA AYYYdYY Y%YdY
YY
6YYY YY
YY
Y ' 6,YYY7 8YYYY
Y
A AYY
Y 58YYdY@d@YYYY Y$"H I Y&
YdYYY
Y YY
YA AYYYY&
YY=Y YYYY
Y
Y/Y
?
Y
YYY
YY)6, 6,YYY7 8YY YYA AYYY 58Y
Y
YYYdY'Y YY YdYYYY/Y Y
Y4(Y&
Y
Y
YY
YYYYY8Y
YY
YY
YY)6, 6,YY YY
4)5Y
LOWY
)Y Y Y4)5YY YdY Y YYY YY ' 6,Y
Y)6, 6,Y
?6 Y
YYY
YY
Y ' 6,YYY7 8YY YYY * 8YY
Y YY4)5YYYdYY Y$YdY
YY
?
Y
YYY
YY)6, 6,YY7 8YY YY4)5YYY 58Y
Y
YY"YdY'Y YY Y@ @YYYY/YY Y
Y4(Y&
Y
Y YY
YYYYYDYd8Y
YY
YY
YY)6, 6,YY
YYA AY
c
/Y&
YY
Y Y&
YY Y8YYY
YY Y!""Y
7YYYYYYu YYY>YYY
YYYYY2Y
Y4(Y
c
*YYY>Y
Y YY3 Y Y YY>YY Y
Y<8YYd1Y YYYYYY Y6YY4Yd=Y/Y
'YYYY YYY!"Y 8YY YY Y
Y
YYY>YY
YY
Base Exemplo Formatador Comentrio
2 (binrio) B1111011 'B' inicial somente valores de 8 bits (0 a 255) caracteres vlidos 0-1
c
&
d
dYY YYY YdYd Y
YYYY
Exemplo
int LEDpin = 5; // LED no pino 5
int switchPin = 13; // interruptor no, outro lado conectado ao terra.
void setup()
{
pinMode(LEDpin, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(switchPin, HIGH); // "levanta" o resistor
}
void loop()
{
if (digitalRead(switchPin) == LOW)
{ // interruptor pressionado - resistor se mantm "levantado"
delay(100); // espera para filtrar rudo da chave
running = !running; // inverte o valor da varivel running
digitalWrite(LEDpin, running) // indica via LED
}
}
YY YYYYY Y
Y
Y
Y
Y
Descrio
6YY Y Y&
Y
Y!YY Y3YY2YYdY Y
YY*YY
YYY<Y<YY1YYYYYY&
8YYYYY
YYY
1YYY<<YY Y YY[YY[Y
YY@*@Y
YYY2 YY>Y1Y YdYY3 Y YYY
u* Y YY&
YY dY2Y0YYY8YY&
YYdYu* Y
YYY
2 YY<<YDY!YdY8Y Y&
YYdYu* Y YY
YYY=YY
Y YuYYYY YYYYY
2 YY>Y
)YY Y YYYY YY 8YY&
Y 2Y&
YY dY Y>Y Y[!$Y
Y!$Y Y
YY Y YY Y Y!YYYY
YYY Y YY
Exemplo
char myChar = 'A';
char myChar = 65; // ambos so equivalentes
Y
Y
Y
Y
Y
c
'
DescrioY
6YY2Y
Y>Y YYYY 8Y Y"YY$Y
Exemplo
byte b = B10010; // "B" o formatador binrio (B10010 = 18 decimal)
Y
Y
Y
DescrioY
YYYYY Y YY2Y
Y2Y Y>Y Y$YY Y
YY/Y Y[%$YY%$YdY Y Y[$]!YYdY
/Y Y$]!Y[!Y
Y2Y>YdYY
YY Y*YY Y)YYY8Y
Yd2Y Y YY Y@@8YY2YYY>YYdY
YY
)Y
Y
Y Y
Y Y>YdYYd18YYY0YY
Y Y YYY YY YY
YY YY
Y YY YY.Y YY
Exemplo
int ledPin = 13;
Sintaxe
int var = val;
6Y dY[YYY Yd
dYY
6Y dY[YYdY YYYd
dY
Dica de programao
?
Y
Yd
dY/ Y
YdY
/Y Y&
YY2YY@ @YYdY Y Y&
YY
2Y'Y&
YYYY
Y 0Y
int x
x = -32,768;
x = x - 1; // x agora contm 32,767 - decaindo na direo negativa
x = 32,767;
x = x + 1; // x agora contm -32,768 - decaido
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
DescrioY
YY YYYYYYY&
YYY YY2YdY Y$Y
Y8YYdY Y2Y>Yd8Y2YYdYdY
YY/Y Y"YY%Y$]![!Y
Y YYYYYY Y
YY YYYYYYY 'Y
Y
YYY&
YY 8YYYYYd YY!8YY>YY YYdY
Exemplo
unsigned int ledPin = 13;
Sintaxe
unsigned int var = val;
6Y dY[YY Yd
dY YYYY Y
6Y dY[YYdY YYYd
dY
Dica de programao
?
Yd
dY/ Y
Y Y
/YY@ @YYYdY Y
Y Y Y
'Y&
YYYY
Y 0Y
unsigned int x
x = 0;
x = x - 1; // x agora contm 65535 - decaindo na direo negatica
x = x + 1; // x now contains 0 - decaindo
Y
Y
DescrioY
dY YY4Y1Y
YY YY2Y Y>8YYY2Y Y
2Y%$YY-Y8Y Y[$!--%8-YY$!--%-Y
Exemplo
long speedOfLight = 186000L; // veja Constantes inteiras para a explicao do 'L'
Sintaxe
long var = val;
6Y dY[YYY Yd
dY YYY
6Y dY[YYdY YYYYd
dY
Y
Y
Y
Y
Y
c
DescrioY
4YY YYYYYd
dY YY YY2Y
Y(Y YYY 8YYY YY2Y>Yd8Y
YY/Y Y"YY-$ - $ Y$]%$Y[Y!Y
Exemplo
unsigned long time;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("Time: ");
time = millis();
//imprime o tempo desde que o programa comeou a rodar
Serial.println(time);
// espera um segundo de modo que o programa no envie quantidades absurdas de dados
delay(1000);
}
Sintaxe
unsigned long var = val;
6Y dY[YYY Y
Yd
dYYY
6Y dY[YYdY YYYd
dY
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
DescrioY
,Y Y YY>Y YY
8Y
Y>Y&
YY
YY Y'>Y Y
Y
YY&FY
YY/YdY
YY
Y&
Y1YY
Y&
YYYYY'>Y YY
YYY/Y Y%8-"$$%D%YY[
%8-"$$%D%YYY2 YY%$YY-YY YY
'>Y YY
YYY/YY YY
YY&
Y Y Y
/Y"YY%"Y YYY
YY$"Y1Y d8YYd2Y 8YdY&
YYdY
Y Y
YYY>YYY&
Y
YdY&
Y[ Y
Y
Y YY
YYY
YYY&
YY YYY2Y Y
8Y
dYYYd Y8YY/8Y
YYY&
Y YYd Y
/YY
Y
Y
Y&
YYYY<Y Y&FYYYYdY
YYY
YY
Y YYY
YYd Y
Exemplos
float myfloat;
float sensorCalbrate = 1.117;
Sintaxe
float var = val;
6Y dY[YYY Y
Yd
dY YY
Y
6Y dY[YYdY YYYd
dY
Cdigo de exemplo
int x;
int y;
float z;
x = 1;
y = x / 2; // y agora contm 0, inteiros no suportam fraes
z = (float)x / 2.0; // z agora contm .5 (voce deve usar 2.0, no 2)
Dica de programao
uY
YYY 2YY0YYY&
Yd Y
YY
7
&
YY1Y Y!"YYdYY
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
DescrioY
'>Y YY
Y YY
Y)
Y-YY
YY Y
YY
YY
Y/YYY Y8YYY Y
Y
Dica
6
Y&
Y
2Y3 Y Y
YY&
Y
Yd
dY YY
Y dY/YY
3 YYYdYYYY YY Y &
YY YY
Y
Y
Y
DescrioY
uYY YYY YY Y YYY YY
Y
Y
Exemplos
, YY
YY 0Yd
Y YY
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
Possibilidades de declarao de stringsY
6Y (Y
YY YYY2YYYu!Y
6Y (Y
YY YYY
YYYYYY YdY YYY
Y
Y
YYu$Y
6Y Y/YYY
YYYu%Y
6Y 2YY
YYYYGYY Y YYY Y YY
2YYYYYY
YYYYu-Y
6Y 2YYYY
YYYYYY/YYYuY
6Y 2YYY / YY/YY
YYYYYuY
Terminao em NullY
YYY YYYY
Y3 Yu* Y"Y YY.Y
0YY
uYY Y
YYY YY(Y
Y YY
Y YYY
&
Y Y3Y&
Y YYYY.YY
YY&
Y
YY dYYYY
YYYY Y&
YY/Y&
YYYDY
YY&
Yu$YYuYYYY8YY@
@YYYY[YY>YYY
Y YYYY
Yu-Y
YYY Y
Y
YY8Y
Y/YYY
Y'Yu%Y3Y
Y/YYY
YY
Y<J"<Y
'Y&
YY dYY
YYYYYY
YYYd1YdY YYY
Yu$YYYYdY YY YdY YYY Y
0Y&
Y
Y8YY
d1YY dY2YYYYYd1YYYY Y YY
Y0YYY&
YYY.YYY YYYY
Aspas ou apstrofos?Y
uYYY YYY@@YYYY YY3<<Y
Envolvendo strings longasY
1Y YddYYY Y Y
c
char myString[] = "This is the first line"
" this is the second line"
" etcetera";
Arrays de stringsY
&FYYd8Y&
YY
Y YY Y&
Y Y/8YYY
Y=YY
Y Y Y4*(8Y
Y
YY YY(d YYY YYYY
YY8YYY YY
Y/Y Y
YY[ Y
'Y3 Y/YYY3YYY Y YY@ @Y Y&
YYY Y
YY Y
@@Y, YYY YYY YY8YYYY&
YYY
Y
Y
Y YY YY
Y YYYY Y
Y*Y&
YYY1Y
&
Y 8YYY
Y YYYY YY2Y
Y
YdY YY
Y
Exemplo
char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};
void setup(){
Serial.begin(9600);
}
void loop(){
for (int i = 0; i < 6; i++){
Serial.println(myStrings[i]);
delay(500);
}
}
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
a '
6YYY
YY Yd
dY&
YY YY
Y Y
YYY
Y Y
Y*8YY&
YY
YY 8Y YY 8YYY
Y YYYY
dY2
dY
Criando (Declarando) um Array
, YY Y/YY Yd
YYY Y
YY
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";
1Y Y Y
YYY2YYY Y
Y Y Y
YYYY/Y
YY)Y YYY
YYYYY YY Y
8Yd1Y Y2YYYYY YYYYuY'Y&
Y
&
Y Y
YY YY8Y
YYYYY
YY2YYY
Y
Y2Y
Acessando um Array
YY / YYY Y28Y
Y=8Y2 Y1Y.Y2Y YY8YY
YY YY
YY Y"8YY
mySensVals[0] == 2, mySensVals[1] == 4,
YYY Y
YY
YYY&
YY
YY Y!"YYY Y Y>YYY 8YY
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] contm 11
// myArray[10] invlido e contm informao aleatria (outro endereo de memria)
YY2Yd1Y dYYY
YY
YY3YY
YY
Y
Y
YY Y&
YY YYY
Y/Y Y3Y&
Y
Y Y
2 YY
Y
3Y4Y YYddYYdYY YY Y Yd
YdYY
Y Y3Y3Y YYY
YY 8YYddY
2
YY
Y
YY
Y
YdY YY YY YY
Y
Y Y Y
Y
(Y Y
Yd0Y Yu *8YY Y*YYYYdYY
YYY
YY
Y
Y YYY YYY&
YYYY Y
Designar um valor para um array:
mySensVals[0] = 10;
Recuperar um valor de um array:
x = mySensVals[4];
Arrays e FOR
YY&FY
Y Y YYfor8YY&
YY YY
YY Y
Y YY Y/8YYYYY Y
YYdY YYYd1Y
Y2Y
YYY
int i;
for (i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}
Y
Y
c
Yd[dYd YY
YYY 0Y Y
0YY Y&
YY
YY dYdY
YY YY.Y
Y&
YY
Y
Exemplo:
// aes so realizadas nas funes "setup" e "loop"
// mas nenuma informao enviada ao programa mais amplo
void setup()
{
// ...
}
void loop()
{
// ...
}
c
DescrioY
*dY
YdYYYY Y YY
Sintaxe
/Y
Parmetros
/Y
YdY Y&
&
YY
Retorno
Y
'
DescrioY
*dY
YdYYYY Y YY
Sintaxe
/Y
Parmetros
/Y
YdY Y&
&
YY
Retorno
Y
DescrioY
*dY
YdYYYY Y YY
Sintaxe
/Y
Parmetros
/Y
YdY Y&
&
YY
Retorno
Y
DescrioY
*dY
YdYYYY Y YY
Sintaxe
/Y
Parmetros
/Y
YdY Y&
&
YY
Retorno
Y
c
DescrioY
*dY
YdYYYY Y YY
Sintaxe
/Y
Parmetros
/Y
YdY Y&
&
YY
Retorno
Y
a((
)Y3 YYu* YYu Y* YY Y Y
YY
Y YY Y Y
! "YYYY Y YY Y/Y
Y
'Y&
YYY%$YY"[%!YYYY d8YY Y Y
Y YY)YYYYY YYY/Y
Valor Caractere Valor Caractere Valor Caractere Valor Caractere
Decimal Decimal Decimal Decimal
0 null 32 espao 64 @ 96 `
1 33 ! 65 A 97 a
2 34 " 66 B 98 b
3 35 # 67 C 99 c
4 36 $ 68 D 100 d
5 37 % 69 E 101 e
6 38 & 70 F 102 f
7 39 ' 71 G 103 g
8 40 ( 72 H 104 h
9 tab 41 ) 73 I 105 i
10 line feed 42 * 74 J 106 j
11 43 + 75 K 107 k
12 44 , 76 L 108 l
13 carriage 45 - 77 M 109 m
return 46 . 78 N 110 n
14 47 / 79 O 111 o
15 48 0 80 P 112 p
16 49 1 81 Q 113 q
17 50 2 82 R 114 r
18 51 3 83 S 115 s
19 52 4 84 T 116 t
20 53 5 85 U 117 u
21 54 6 86 V 118 v
22 55 7 87 W 119 w
23 56 8 88 X 120 x
24 57 9 89 Y 121 y
25 58 : 90 Z 122 z
26 59 ; 91 [ 123 {
27 60 < 92 \ 124 |
28 61 = 93 ] 125 }
29 62 > 94 ^ 126 ~
30 63 ? 95 _ 127
31
Y'Y Y
Y)Y3 Yu* YY
Y YY Y/Y
YYYY
YAY38YdY Y dY
YY 0YYYYY6,8Y
Y
Y dYd8YYY=
Y YYY YY u)Y Y
)2YYu 2Y
c
)
DescrioY
*
YYY YY&
YYY
YY
Y Y
Y
Y
Y Y
Y
=YY Y Y YYYY Y
Sintaxe
7 8Y Y
Parmetros
YY>Y YYY&
Yd1Y =Y Y
Y YY ' 6,Y
Y)6, 6,Y
Retorno
'
Y
Exemplo
int ledPin = 13; // LED conectado ao pino digital 13
void setup()
{
pinMode(ledPin, OUTPUT); // predetermina o pino digital como uma sada
}
void loop()
{
digitalWrite(ledPin, HIGH); // acende o LED
delay(1000); // espera um segundo
digitalWrite(ledPin, LOW); // apaga o LED
delay(1000); // espera um segundo
}
Nota
)YY Y Y3Y YY
YYY YY dYY YYY
>Y Y!-Y Y3Y"YY! Y Y3YY
c
*
DescrioY
dY
YdYA AY
Y
Y4)5YY
YY YuYYYY
YY
Y Y
YYY7 8Y
YdY
Y YYdY YY
Y%%YY
Y Y%%YYA A8Y"YYY4)5Y
uYYY
Y
YY
Y Y
YdY
YA AYd
YYYY Y
$"H I Y
Y YYY YdY
Y4)5Y/
YYY
Sintaxw
58YdY
Parmetros
YY>Y YY
dYA AYY4)5Y
Retorno
Y
Exemplo
void setup()
{
pinMode(ledPin, OUTPUT); // determia o pino digital como uma sada
}
void loop()
{
digitalWrite(ledPin, HIGH); // acende o LED
delay(1000); // espera um segundo
digitalWrite(ledPin, LOW); // apaga um led
delay(1000); // espera um segundo
}
Nota
)YY Y Y3Y YY
YYY YY dYY YYY
>Y Y!-Y Y3Y"YY! Y Y3YY
c
DescrioY
41YYdY Y
YY Y 8YYA AY
Y4)5Y
Sintaxe
* Y
Parmetros
YY>Y YY Y&
Yd1Y&
YYY
Retorno
A AY
Y4)5Y
Exemplo
void setup()
{
pinMode(ledPin, OUTPUT); // pr-determina o pino digital 13 como uma sada
pinMode(inPin, INPUT); // pr-determina o pino dgital 7 como uma entrada
}
void loop()
{
val = digitalRead(inPin); // l o pino de entrada
digitalWrite(ledPin, val); // acende ou apaga o LED de acordo com o pino de entrada
}
,YYYY!%YYdY YYYY&
YY
Y Y
Nota
uYYYYdY YY Y * Y YYYA AYY4)5YYY Y
dYY
)YY Y Y3Y YY
YYY YY dYY YYY
>Y Y!-Y Y3Y"YY! Y Y3YY
c
DescrioY
41YYdY Y
YY3Y YYY
YY
YdY3[ Y Y
!"YYYYYYYY7YYY'Y*YYY YYdY Y YY
"YYYdYYdYYY"YY!"$%Y YY
Y
YY
Y YYdYY
!"$-Y
Y
Y"8""- YdY- YYY
Y
uY
Y/ Y!""Y; Y""""!YYYY
Y Y38YYY
d Y
/Y Y
YY Y/ Y!""""Yd2YY
Y
Sintaxe
* Y
Parmetros
YY>Y YY3Y&
YY =YY"YYYYY Y8Y"YYYY7YYY'Y
Retorno
Y"YY!"$%Y
Note
uYYY3YYdY YY YYdY YY Y* YdYdY Y Y
Y
Y Y&
Y YYYYdY Y
Y Y38YY AY Y
Y
Y.Y8YY'Y
YY
YdY3Y
Exemplo
void loop()
{
val = analogRead(analogPin); // l o pino de entrada
Serial.println(val); // informa o valor lido
}
c
*
DescrioY
dY
YdY3Y Y 57YY
YY YY
YY Y
Y4(Yd YY
Y
YY
YYYd Yd
dY(Y Y2Y
YanalogWrite()8YYYdYY
Y Y&
Y
dYYYY Y Y YY&
YY
3/YanalogWrite()Y=Y2 Y
Y&
Y=Y2 Y
YdigitalRead()Y
digitalWrite()YY
YYY&F1Y YY 57YY Y/ Y- "A2Y
'YdYY
Y
YY7YYY,YYYY,!YY
YYYY
Y%888 8!"YY!!Y Y
YYYY
Y,Y
YY5YY
YY 8!"YY!!Y
Sintaxe
58YdY
Parmetros
YYYY&
YY =YdY
dYY Y YYY"YY YY$YY Y
Retorno
Y
Notas e problemas conhecidos
'YY
Y2Y
Y7 YY[ YYY YYY YY
Y2Y
Y5Y
Y Y 57Y YYYYYYY Y YYY Y Y YY dY.Y
0YYY
0YYY 8Y&
YYYY2 YY
YY
YY Y 57Y
Exemplo
,YYY Y
Y4(YYYdY YY
Y3Y
void setup()
{
pinMode(ledPin, OUTPUT); // pr-determina o pino como sada
}
void loop()
{
val = analogRead(analogPin); // l o pino de entrada
analogWrite(ledPin, val / 4); // os valores do analogRead variam de 0 a 1023, os valores do
analogWrite variam de 0 a 255
c
Descrio
dY
YYYY Y
YY Y Yd2Y YYYYYYdYY.Y
&
Y&
YYYdYY.Y Y)YYdY YY
Y Y Yd2Y
Y
Y Y 8YYYYY0Y Y
YY Y#Y&
Y Y&
YY3/YY
Y
dY
YY YYYYKYYY
Y Y
Y
YY&
YY
YY
&
YYYYY
Y Y)Y YdYY
1Y2 YYd Y3/Y Y
/Y Y&
YYYYYY
Y#Y'YY YY YuY Y Yu YY
Y YY
YY
Sintaxe
)
8Y# 8Y) 8Yd
Y
Parmetros
YYYY&
Y
YY Y Y YYY
# YYY&
YY Y&
Y
YdYdYYd YYdataPinYY
) Y&
YYY Y YdY Y8Y YYMSBFIRSTYLSBFIRSTY
7YdYY
YYdYY
d
YYYYdYYY YY
Retorno
'
Y
Note
)YdataPinYYclockPinY dYY
YY
YY
Y7 Y
Exemplo
YY
Y Y1Y Y/Yd=Y
YYYY-A* YYY
//**************************************************************//
// Name : shiftOutCode, Hello World //
// Author : Carlyn Maw,Tom Igoe //
// Date : 25 Oct, 2006 //
// Version : 1.0 //
// Notes : Code for using a 74HC595 Shift Register //
// : to count from 0 to 255 //
//****************************************************************
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
c
void loop() {
//count up routine
for (int j = 0; j < 256; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
c(
Descrio
41Y
Y
YYA AYY4)5YY
YY Y/8YYvalorYYHIGH8YpulseIn()YY
&
YYYd
YHIGH8YYY8YYYY&
YYYd
YYLOWYYYY
Y*YY
Y Y
YY
Y(YYY"YY
Y
Y
Y Y Y
YY Y
)YY Y
YY YYYddY
YYY
YY
YY
YY!"Y
YY%Y
Y
Syntaxe
8YdYY
8Yd8YY
Parameters
YY>Y YYY&
Yd1Y =YYY
YY
dYY Y
YYYYA AYY4)5YY
YYY>Y Y
YYYY&
YY
YGYY YY
Y
Y
YY
Returno
Y
Y Y
YY
Y
Y"YY
Y
YYY YY Y
YY
Exemplo
int pin = 7;
unsigned long duration;
void setup()
{
pinMode(pin, INPUT);
}
void loop()
{
duration = pulseIn(pin, HIGH);
}
c
Descrio
*YY>Y Y
Y Y&
YYY
Y
YY YYYY>Y
/
Yd
YY2Y Y Y/Y"Y Y
Parmetros
'
Y
Retorno
)Y>Y Y
Y Y&
YYY
YY YY
YYYY Y
Exemplo
unsigned long time;
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print("Time: ");
time = millis();
//imprime o tempo desde que o programa comeou
Serial.println(time);
// espera um segundo para no ficar enviando quantidades absurdas de dados
delay(1000);
}
Dica:
&
YYYYYmillisYY
YYY YY YYY
Y Y
Y2Y
YY
YY Y 8YYY
DescrioY
*YY>Y Y
Y Y&
YYY
Y
YY YYYY
>Y/
Yd
YY2Y Y Y/Y"Y
Y'YY
Y Y!Y7A2Y
Y(
dYY'8YY
YY
Y
Y Y-Y
YYdY YY
Y
Y
Y>Y Y-Y'YY
Y Y7A2YY4 8YY
YY
Y
Y YY
Y
'YY!Y
Y
Y!"""Y
YY!""""""Y Y
YY!Y
Y
AY
'
Y
*Y
)Y>Y Y
Y Y&
YYY
YY YY
YYYY Y
c
Exempl0
unsigned long time;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("Time: ");
time = micros(); //imprime o tempo desde que o programa comeou a rodar
Serial.println(time); //espera um segundo para no ficar enviando quantidades absurdas de
dados
delay(1000);
}
'
Descrio
u
YY/
Y YYYYY
Y YYAYY
Y
Y
Y!"""Y
Y
Parmetros
Y
YYY>Y Y
YY&
YYY
YYY/
YY
Y
Retorno
Y
Exemplo
int ledPin = 13; // LED conectado ao pino digital 13
void setup()
{
pinMode(ledPin, OUTPUT); // marca o pino digital como sada
}
void loop()
{
digitalWrite(ledPin, HIGH); // acende o LED
delay(1000); // espera por um segundo
digitalWrite(ledPin, LOW); // apaga o LED
delay(1000); // espera por um segundo
}
Cuidado
Y=Y
YY
Y4(Y YYY
Y 8YY
YY
YdY
Y
YYYY YY
8YY
Y Y YY
YYYYdY
Y'
Y
Y Y8Y
Y
8Y
Y
Y YY Y
Y
YY/
Y Y
8YY
Y
Y
0YYYY YY Y
YdYd=YY
YYYY
YY Y/Y YYY
YYdYY
Y Y YYYdYYY Y&
Y!"Y
8YYYY&
YYY=Y
YY
c
YY YY
Y Y&
YY
Y Y
Y YYY
,Y&
YY
0YYY YY
Y&
YYYY*+Y
Y
Yd YYYYY
Y Y 57Y5YY 8YYY
0Y
Y
Y
Y
Y
Y
')
+
Descrio
u
YY/
Y YYYYY
Y YYAYY6Y!Y
Y
Y!"""Y
YYY!Y
Y
Y!YY
YYYdY&
Y
2
Y
Y
YYY!%%Y Y Y
YY
0Y
Y Y
Y Y
0YY&
YY Y
Yd1Y dY
2YY
Y Y
Parmetros
; YY>Y Y
Y Y
Y
Retorno
'
Y
Exemplo
void setup()
{
pinMode(outPin, OUTPUT); // marca o pino digital como sada
}
void loop()
{
digitalWrite(outPin, HIGH); // ativa o pino
delayMicroseconds(50); // suspeno de 50 microsegundos
digitalWrite(outPin, LOW); // desativa o pino
delayMicroseconds(50); // suspeno de 50 microsegundos
}
YYYYYYY
Y YdY
Y Y Y Y
YY
Y Y Y!""Y
Y
Cuidados e problemas conhecidos
Y
Y
YYYYY/Y Y%Y
YYY'Y YY
Y&
Y
YYYYY Y
YY
Y
Y
0YYYY
Y YY
0Y
Y
YY
YY&
Y
YYYYY Y0Y8Y
Y&
YY
2Y Y
dY YY Y
YYYY
Y(Y 8Yd1Y dY
YY
YY
Y
0Y
8YY
Y YYYYY
7 "Y
Y
Y
Y
YY Y&
YY Ym!"$"Y ; YYYYY
AYY
Y>YdY
Y
Y
Y
c
')
+
Descrio
u
YY/
Y YYYYY
Y YYAYY6Y!Y
Y
Y!"""Y
YYY!Y
Y
Y!YY
YYYdY&
Y
2
Y
Y
YYY!%%Y Y Y
YY
0Y
Y Y
Y Y
0YY&
YY Y
Yd1Y dY
2YY
Y Y
Parmetros
; YY>Y Y
Y Y
Y
Retorno
'
Y
Exemplo
void setup()
{
pinMode(outPin, OUTPUT); // marca o pino digital como sada
}
void loop()
{
digitalWrite(outPin, HIGH); // ativa o pino
delayMicroseconds(50); // suspeno de 50 microsegundos
digitalWrite(outPin, LOW); // desativa o pino
delayMicroseconds(50); // suspeno de 50 microsegundos
}
YYYYYYY
Y YdY
Y Y Y Y
YY
Y Y Y!""Y
Y
Cuidados e problemas conhecidos
Y
Y
YYYYY/Y Y%Y
YYY'Y YY
Y&
Y
YYYYY Y
YY
Y
Y
0YYYY
Y YY
0Y
Y
YY
YY&
Y
YYYYY Y0Y8Y
Y&
YY
2Y Y
dY YY Y
YYYY
Y(Y 8Yd1Y dY
YY
YY
Y
0Y
8YY
Y YYYYY
7 "Y
Y
Y
Y
YY Y&
YY Ym!"$"Y ; YYYYY
AYY
Y>YdY
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
,'
Descrio
*
YY YY Y>Y
Parmetros
/YYY>8Y Y&
&
YY Y Y
YY
Y>8Y Y&
&
YY Y Y
Retorno
)YY Y Y>Y
Exemplos
sensVal = min(sensVal, 100); // assinala varivel sensVal o mnimo entre seu prrio valor e
100
// assegurando que seu valor nunca seja menor que 100
Nota
,d28Y Y Y[
d8Y/YY&
Y
2 YYYYdYY/Y Y
Y
d
d8Y&
YYY
2 YYYYdYYY
Cuidado:
(d YY YYY
YYY Yd1Y dYdY
2Y
Y
0Y Y
Y18YY YdYY
YY
YY
min(a++, 100); // evite isso
a++;
min(a, 100); // usse isso, mantenha outros clculos fora da funo
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
c
,,'
Descrio
*
YY
/YY Y>Y
Parmetros
/YYY>8Y Y&
&
YY Y Y
YY
Y>8Y Y&
&
YY Y Y
Retorno
)YY Y Y>Y
Exemplo
sensVal = max(senVal, 20); // assinala varivel sensVal o mximo entre seu prrio valor e
20
// assegurando que seu valor seja pelo menos 20
Nota
,d28Y Y Y[
d8Y/YY&
Y
2 YYYYdYY/Y Y
Y
d
d8Y&
YYY
2 YYYYdYYY
Cuidado
(d YY YYY
Y/YY Yd1Y dYdY
2Y
Y
0Y Y
Y18YY YdYY
YY
max(a--, 0); // evite isso
c
,
Descrio
*
YYdY
Y Y
Y>Y
Parmetros
/YY>Y
Retorno
xYYxYYY
Y
YY"Y
-xYYxYYY&
Y"Y
Cuidado
(d YY YYY
YYY Yd1Y dYdY
2Y
Y
0Y Y Y
18YY YdYY
YY
abs(a++); // evite isso
c
-
.
-
.
Descrio
YY
*[Y
Y>Y Y
Y/Y YdYY
Y Y8Y
YdY Y4YY YY
48Y
YdYAYYA8YYdY
Y YY/YYY
Y/8Y
[YYYYY
'YYdY Y Y/8Y&
YdY&
Y/Y YY>YYYY
YY YY
2 YYYY Y Y
YYYYY/Y
Y
Y
&
Y&
YYYY Y
Y/Y YYY
YY&
YYY
Y
(Y YY
YY YY
2 YYYY YdY
Y/Y Yd8YY
Y/Y
Y-Y/8Y!8Y"8Y"8Y!GY
Y
YY Y
2Y>YdYYY/Y
Y-Y/8Y!8Y"8Y"8Y[!""GY
YY
Y
YY
2Y>YYYYY0Y?
YY
YY
YY
Y
YYY Y
Parmetros
d
YY>YYY Y
4YYY Y/Y
Y Yd
Y
AYY
Y Y/Y
Y Yd
Y
4YYY Y/YYY&
YY&
YY
AYY
Y Y/YYY&
YY&
YY
Retorno
)YdY Y
Exemplo
/* Mapear uma entrada analgica de 10 bits para uma sada analgica de 8 bits (0 a 255) */
void setup() {}
void loop()
{
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
Apndice
Y&
YYY
Y&
Y
YY
YY
YY/8YYG8YYG/8YY
G8YY
G/Y
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
c
,
Descrio
*
YYdY Y
Y>Yd YY
Y1Y Y YY
2 YY
Y1Y
YDY>YYYY/Y YdY
Y
dY
Parmetros
YY>Y
/YY1Y.Y&
YYYYd YY
Retorno
)
Y Y/Y
Y
Exemplo
=YY
YYYY Y3 Y
%,
Descrio
*
YY&
Y Y
Y>Y)Y>Y
YYYY
Parmetros
/YY>8Y&
&
YY Y Y
Retorno
Y&
Y Y>Y
%,
Descrio
*
YY 2Y&
Y Y
Y>Y
Parmetros
/YY>8Y&
&
YY Y Y
Retorno
8YY 2Y&
Y Y>Y
c
Descrio
*
YYY Y
YA
YY Y)Y
Y
YY[!YY!Y
Parmetros
YYA
YY YY
Retorno
YY YA
Y
Y
Nota
uYYuY
YY
YY
Descrio
*
YYY Y
YA
YY Y)Y
Y
YY[!YY!Y
Parmetros
YYA
YY YY
Retorno
YY YA
Y
Y
Nota
uYYuY
YY
YY
Descrio
*
YYY Y
YA
YY Y
Parmetros
YYA
YY YY
Retorno
YY YA
Y
Y
Nota
uYYuY
YY
YY
c
Descrio
u Y2Y
Y Y Y>Y
[38Y2 YY&
YY&F1Y Y
YY
YY
Y Y
Y&F1Y3YY&F1Y8YY
YYY
38YYYYY
uYYYY
Y&F1Y YdY YY
Y YY 8YY Y
/
Y Y
Y8Y
Y u YY2YY Y Y>Y3YYY Y
YdYY38YY
Y* Y Y
YY&
YY=Y Y
(Y Y8Y YYY>Y
Y&F1Y
[3Y&
YYY
/YY Y/
Y Y
YY Y YY Yd2Y Y
Y u Y Y
void setup(){
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop(){
randNumber = random(300);
Serial.println(randNumber);
delay(50);
}
c
Descrio
Y
Y YY>Y
[3Y
Sintaxe
Y /Y
Y 8Y/Y
Parmetros
Y[YYY YdY38Y
dYY
/Y[YY
Y YdY38Y/
dY
Retorno
Y[Y
Y>Y3YYYY/[!Y
Note:
uYYYY
Y&F1Y YdY YY
Y YY 8YY Y
/
Y Y
Y8Y
Y u YY2YY Y Y>Y3YYY Y
YdYY38YY
Y* Y Y
YY&
YY=Y Y
(Y Y8Y YYY>Y
Y&F1Y
[3Y&
YYY
/YY Y/
Y Y
YY Y YY Yd2Y Y
Y u Y Y
void setup(){
Serial.begin(9600);
void loop() {
// imprime um nmero aleatrio entre 0 e 299
randNumber = random(300);
Serial.println(randNumber);
delay(50);
}
c
/
Descrio
=
YY/Y Y1YYYY
Y
YYY Y YY YY
Y
YY
Y
Y
Y
Y Y/Y%""8Y!$""8Y$-""8Y-""8Y ""8Y!--""8Y
! $""8Y$""8Y""8Y!!$""Y1Y 8Y8YY
Yd YY/YY
YYdY YY"YY!YY
YY&
Y&
Y
Y/Y Y
Parameters
Yvelocidade8YYYY
Y
Y
Retorno
Y
Exemplo:
void setup() {
Serial.begin(9600); // abre a porta serial e ajusta a taxa de transferncia de dados
para 9600 bps
}
void loop() {}
Exemplo para o Arduino Mega:Y
// Arduino Mega usando as quatro portas seriais simultaneamente
// (Serial, Serial1, Serial2, Serial3),
// com diferentes taxas de transferncia:
void setup(){
Serial.begin(9600);
Serial1.begin(38400);
Serial2.begin(19200);
Serial3.begin(4800);
Serial.println("Hello Computer");
Serial1.println("Hello Serial 1");
Serial2.println("Hello Serial 2");
Serial3.println("Hello Serial 3");
}
void loop() {}
c
/
Descrio
)YY>Y YYY dYY
YdY YYY
Parmetros
'
Y
Retorno
)Y>Y YY dYY
YY
YY)Y
YY Y2YY!$YY
Exemplo
int incomingByte = 0; // para dados seriais que esto entrando
void setup() {
Serial.begin(9600); // abre a porta serial e ajusta a taxa de transferncia para
9600 bps
}
void loop() {
void loop() {
// l na porta 0 e envia para a porta 1:
if (Serial.available()) {
int inByte = Serial.read();
Serial1.print(inByte, BYTE);
}
// l na porta 1 e envia para a porta 0:
if (Serial1.available()) {
int inByte = Serial1.read();
Serial.print(inByte, BYTE);
}
}
c
/
Descrio
41Y Y&
Y=Y YYYY
Parmetros
'
Y
Retorno
YYY dYY Y YYY
Y[!YYYdY Y dYY
Exemplo
int incomingByte = 0; // para entrada serial
void setup() {
Serial.begin(9600); // abre a porta serial e ajusta a velocidade para 9600 bps
}
void loop() {
c
/
Descrio
dYY
Y Y Y YYY Y8Y&
&
Y Y.Yu Y
YudY
YY Y Y3YY>Y Y.Yu
Y
Parmetros
Y
Returns
Y
/
u Y
Descrio
dY YYYY
Parmetro
Y YYYY
YY
Sintaxe
Y Y Y
Y dYY
Serial.print(b)YY
YY 8YYYY
Y>Y YY
YY
u* Y Y/Y
int b = 79;
Serial.print(b);
YYYu* Y@ @Y
Serial.print(b, DEC)YYYY
Y>Y YY
YYu* Y Y/Y
int b = 79;
Serial.print(b, DEC);
YYYu* Y@ @Y
Serial.print(b, HEX)YYYY
Y>Y/ YY
YYu* Y Y/Y
int b = 79;
Serial.print(b, HEX);
YYYY@-@Y
Serial.print(b, OCT)YYYY
Y>YYY
YYu* Y Y/Y
int b = 79;
Serial.print(b, OCT);
YYY@!!@Y
Serial.print(b, BIN)YYYY
Y>Y
YY
YYu* Y Y/Y
int b = 79;
Serial.print(b, BIN);
YYY@!""!!!!@Y
Serial.print(b, BYTE)YYYY
YY>Y Y/Y
int b = 79;
Serial.print(b, BYTE);
YYY@)@Y&
YYYYu* Y YYdY Y YY0Yd=Y
Y,Yu* Y
YY
c
Serial.print(str)YYYY
YY
Y
YY YYY
YYu* Y Y/Y
Serial.print("Hello World!");
YYY@AY5 @Y
Parmetros
YYYY8Y
Y
YYYYY
Retorno
'
Y
Exemplo:
/*
Usa um bloco FOR para dados e imprime um nmero em vrios formatos.
*/
int x = 0; // varivel
void setup() {
Serial.begin(9600); // abre a porta serial e ajusta a velocidade para 9600 bps
}
void loop() {
// imprime etiquetas
Serial.print("SEM FORMATO"); // imprime uma etiqueta
Serial.print("\t"); // imprime um tab
Serial.print("DEC");
Serial.print("\t");
Serial.print("HEX");
Serial.print("\t");
Serial.print("OCT");
Serial.print("\t");
Serial.print("BIN");
Serial.print("\t");
Serial.println("BYTE");
c
Serial.print(x, OCT); // imprime um ASCII octal
Serial.print("\t"); // imprime um tab
c
/
D e s cr i o
YY YYYYYY dY/Yu* Y
YY
YYY YY
u* Y!%8Y
Y<JY<YY
YYdYYu* Y!"8Y
Y<JY<YY YYYYY
YuYY
Si n t a xe
uYdYY
uYd8YY
Pa r me t r o s
dYYdYYY[Y&
&
YY Y Y
YYY>YYYY Y YY
YY>Y YY YY
Y YY
Y
R e t o rn a
'
Y
E x a m pl e :
/*
Analog input
void setup() {
// open the serial port at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the analog input on pin 0:
analogValue = analogRead(0);
c
Serial.println(analogValue, BIN); // print as an ASCII-encoded binary
Serial.println(analogValue, BYTE); // print as a raw byte value
0
breakYY
YYY Y
YYdo8Yfor8Y
Ywhile8YY Y.Y YY YdY
,YY
YYY Y
YYswitchY
Examplo
for (x = 0; x < 255; x ++)
{
digitalWrite(PWMpin, x);
sens = analogRead(sensorPin);
if (sens > threshold){ // checar a deteco por um sensor
x = 0;
break;
}
delay(50);
}
c
YYY
Y YY
YY YYY Y Y YY
[*Y&
YYYY
Y
c