Buscar

Arduino comandos e outros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 184 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 184 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 184 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

digitalRead ()
[Digital I / O]
Descrição
Lê o valor de um pino digital especificado, HIGHou LOW.
Sintaxe
digitalRead(pin)
Parâmetros
pin: o número do pino digital que você quer ler
Retorna
HIGH ou LOW
Exemplo de código
Define o pino 13 para o mesmo valor do pino 7, declarado como uma entrada.
int ledPin = 13; // LED conectado ao pino digital 13
int inPin = 7; // botão conectado ao pino digital 7
int val = 0; // variável para armazenar o valor de leitura
void setup ()
{
 pinMode (ledPin, OUTPUT); // define o pino digital 13 como saída
 pinMode (inPin, INPUT); // define o pino digital 7 como entrada
}
Void loop ()
{
 val = digitalRead (inPin); // le o pino de entrada
 digitalWrite (ledPin, val); // define o LED para o valor do botão
}
Notas e avisos
Se o pino não estiver conectado a nada, o digitalRead () pode retornar HIGH ou LOW (e isso pode mudar aleatoriamente).
Os pinos de entrada analógica podem ser usados ​​como pinos digitais, referidos como A0, A1, etc.
digitalWrite ()
[Digital I / O]
Descrição
HIGH=ALTO LOW=BAIXO
Escreva um HIGH ou um LOW valor para um pino digital.
Se o pino foi configurado como OUTPUT=saida com pinMode(), sua voltagem será ajustada para o valor correspondente: 5V (ou 3.3V em placas de 3.3V) para HIGH, 0V (terra) para LOW.
Se o pino estiver configurado como um INPUT=entrada, digitalWrite() ativará ( HIGH) ou desativará ( LOW) o pullup interno no pino de entrada. Recomenda-se a definir o pinMode()que INPUT_PULLUPpara habilitar o resistor interno pull-up. Veja o tutorial de pinos digitais para mais informações.
Se você não definir o pinMode()para OUTPUT, e conectar um LED a um pino, ao chamar digitalWrite(HIGH), o LED pode aparecer ofuscado. Sem definir explicitamente pinMode(), digitalWrite()terá habilitado o resistor de pull-up interno, que atua como um grande resistor limitador de corrente.
Sintaxe
digitalWrite(pin, value) value=valor
Parâmetros
pin: o número do pino
value=VALOR: HIGH ou LOW
Retorna
Nada
Exemplo de código
O código faz o pino digital 13 an OUTPUT=saida e alterna entre HIGHe LOWem um segundo passo.
void setup ()
{
 pinMode (13, OUTPUT); // define o pino digital 13 como saída
}
Void loop()
{
 digitalWrite (13, HIGH); // define o pino digital 13 como alto =ligado/ativado
 delay (1000); // espera por um segundo
 digitalWrite (13,LOW); // define o pino 13 como baixo =desligado/desativado
 delay(1000); // espera por um segundo
}
Notas e avisos
Os pinos de entrada analógica podem ser usados ​​como pinos digitais, referidos como A0, A1, etc.
pinMode ()
[Digital I / O]
Descrição
Configura o pino especificado para se comportar como entrada ou saída. Veja a descrição de ( pinos digitais ) para detalhes sobre a funcionalidade dos pinos.
A partir do Arduino 1.0.1, é possível habilitar os resistores internos de pullup com o modo INPUT_PULLUP. Além disso, o modo INPUT desativa explicitamente os pullups internos.
Sintaxe
pinMode(pin, mode)
Parâmetros
pin: o número do pin cujo modo você deseja definir
mode: INPUT, OUTPUTOu INPUT_PULLUP. (veja a página ( pinos digitais ) para uma descrição mais completa da funcionalidade.)
Retorna
Nada
Exemplo de código
O código faz o pino digital 13 OUTPUTe alterna HIGHeLOW
void setup ()
{
 pinMode (13, OUTPUT); // define o pino digital 13 como saída
}
Void loop ()
{
 digitalWrite (13, HIGH); // define o pino digital 13 como alto = ativado/ligado
 delay(1000); // espera por um segundo
 digitalWrite (13, LOW// define o pino digital 3 como baixo = desligado/desativado
 delay (1000); // espera por um segundo
}
Notas e avisos
Os pinos de entrada analógica podem ser usados ​​como pinos digitais, referidos como A0, A1, etc.
analogRead ()
[E / S analógica]
Descrição
Lê o valor do pino analógico especificado. A placa Arduino contém um conversor de analógico para digital de 6 canais (8 canais no Mini e Nano, 16 no Mega). Isso significa que ele mapeará as tensões de entrada entre 0 e 5 volts em valores inteiros entre 0 e 1023. Isso produz uma resolução entre leituras de: 5 volts / 1024 unidades ou, .0049 volts (4,9 mV) por unidade. O intervalo de entrada e resolução podem ser alterados usando analogReference () .
Demora cerca de 100 microssegundos (0,0001 s) para ler uma entrada analógica, portanto, a taxa máxima de leitura é de cerca de 10.000 vezes por segundo.
Sintaxe
analogRead(pin)
Parâmetros
pin: o número do pino de entrada analógica para ler (0 a 5 na maioria das placas, 0 a 7 no Mini e Nano, 0 a 15 na Mega)
Retorna
int (0 a 1023)
Exemplo de código
O código lê a voltagem no analogPin e o exibe.
int analogPin = 3; // // limpador do potenciômetro (terminal intermediário) conectado ao pino analógico 3
 // fora leva ao solo e + 5V
int val = 0; // variável para armazenar o valor lido
void setup()
{
 Serial.begin(9600); // setup serial /inicia o serial/ configura o seria
}
void loop()
{
 val = analogRead(analogPin); // le o pino de entrada 
 Serial.println(val); // valor de depuraçao
}
Notas e avisos
Se o pino de entrada analógica não estiver conectado a nada, o valor retornado por analogRead () flutuará com base em vários fatores (por exemplo, os valores das outras entradas analógicas, quão próxima sua mão está da placa, etc.).
analogReference ()
[E / S analógica]
Descrição
Configura a tensão de referência usada para entrada analógica (ou seja, o valor usado como o topo do intervalo de entrada). As opções são:
Placas AVR Arduino (Uno, Mega, etc.)
· PADRÃO: a referência analógica padrão de 5 volts (em placas 5V Arduino) ou 3.3 volts (em placas 3.3V Arduino)
· INTERNO: uma referência interna, igual a 1,1 volts no ATmega168 ou ATmega328P e 2,56 volts no ATmega8 (não disponível no Arduino Mega)
· INTERNAL1V1: uma referência embutida de 1.1V (apenas no Arduino Mega)
· INTERNAL2V56: uma referência 2.56V integrada (somente no Arduino Mega)
· EXTERNAL: a tensão aplicada ao pino AREF (apenas 0 a 5V) é usada como referência.
Placas SAMD Arduino (Zero, etc.)
· AR_DEFAULT: a referência analógica padrão de 3.3V
· AR_INTERNAL: uma referência interna de 2.23V
· AR_INTERNAL1V0: uma referência interna de 1.0V
· AR_INTERNAL1V65: uma referência de 1,65 V integrada
· AR_INTERNAL2V23: uma referência interna de 2.23V
· AR_EXTERNAL: a tensão aplicada ao pino AREF é usada como referência
Placas de SAM do Arduino (Due)
· AR_DEFAULT: a referência analógica padrão de 3.3V. Esta é a única opção suportada pelo Due.
Sintaxe
analogReference(type)
Parâmetros
type: qual tipo de referência usar (veja lista de opções na descrição).
Retorna
Nada
Notas e avisos
Depois de alterar a referência analógica, as primeiras leituras analogRead()podem não ser precisas.
Não use nada menor que 0V ou mais que 5V para tensão de referência externa no pino AREF! Se você estiver usando uma referência externa no pino AREF, deverá definir a referência analógica como EXTERNAL antes de chamar analogRead(). Caso contrário, você irá encurtar a tensão de referência ativa (gerada internamente) e o pino AREF, possivelmente danificando o microcontrolador na sua placa Arduino.
Alternativamente, você pode conectar a tensão de referência externa ao pino AREF através de um resistor de 5K, permitindo alternar entre as tensões de referência externa e interna. Note que o resistor irá alterar a tensão que é usada como referência porque existe um resistor interno de 32K no pino AREF. Os dois atuam como um divisor de tensão, portanto, por exemplo, 2,5 V aplicados através do resistor produzirão 2,5 * 32 / (32 + 5) = ~ 2,2V no pino AREF.
analogWrite ()
[E / S analógica]
Descrição
Escreve um valor analógico ( onda PWM ) em um pino. Pode ser usado para acender um LED com brilho variável ou acionar um motor em várias velocidades. Depois de uma chamada analogWrite(), o pino gerará uma onda quadrada estável do ciclo de serviço especificado até a próxima chamada analogWrite()(ou uma chamada para digitalRead()ou digitalWrite()) no mesmo pino. A frequência do sinal PWM na maioria dos pinos é de aproximadamente 490 Hz. Nas placas Unoe semelhantes, os pinos 5 e 6 têm uma frequência de aproximadamente 980 Hz.
Na maioria das placas Arduino (aquelas com ATmega168 ou ATmega328P), esta função funciona nos pinos 3, 5, 6, 9, 10 e 11. No Arduino Mega, funciona nos pinos 2 - 13 e 44 - 46. Arduino mais antigo placas com um ATmega8 suportam apenas os analogWrite()pinos 9, 10 e 11. 
O Arduino DUE suporta os analogWrite()pinos 2 a 13, além dos pinos DAC0 e DAC1. Ao contrário dos pinos PWM, DAC0 e DAC1 são conversores de Digital para Analógico e atuam como verdadeiras saídas analógicas. 
Você não precisa chamar pinMode()para definir o pino como uma saída antes de chamar analogWrite(). 
A analogWritefunção não tem nada a ver com os pinos analógicos ou a analogReadfunção.
Sintaxe
analogWrite(pin, value)
Parâmetros
pin: o pino para escrever. Tipos de dados permitidos: int. 
value: o ciclo de trabalho: entre 0 (sempre desligado) e 255 (sempre ligado). Tipos de dados permitidos: int
Retorna
Nada
Exemplo de código
Define a saída para o LED proporcional ao valor lido no potenciômetro.
int ledPin = 9; // LED conctado no pino digital 9
int analogPin = 3; // potentiometer conctado analog pin 3//potenciômetro no pino analógico 3
int val = 0; // variável para armazenar o valor de leitura
void setup()
{
 pinMode(ledPin, OUTPUT); // define o pino como saída 
}
void loop()
{
 val = analogRead(analogPin); // le o pino de entrada 
 analogWrite(ledPin, val / 4); // os valores de analogRead vão de 0 a 1023, valores de analogWrite de 0 a 255
}
Notas e avisos
As saídas PWM geradas nos pinos 5 e 6 terão ciclos de trabalho mais altos do que o esperado. Isso ocorre devido às interações com as funções millis()e delay(), que compartilham o mesmo temporizador interno usado para gerar essas saídas PWM. Isso será notado principalmente em configurações de ciclo de serviço baixo (por exemplo, 0 a 10) e pode resultar em um valor de 0 não desligando totalmente a saída nos pinos 5 e 6.
analogReadResolution ()
[Família Zero, Due & MKR]
Descrição
analogReadResolution () é uma extensão da API analógica para a família Arduino Due, Zero e MKR.
Define o tamanho (em bits) do valor retornado por analogRead(). O padrão é 10 bits (retorna valores entre 0 e 1023) para compatibilidade retroativa com placas baseadas em AVR.
As placas Família Due, Zero e MKR possuem recursos ADC de 12 bits que podem ser acessados ​​alterando a resolução para 12. Isso retornará valores analogRead()entre 0 e 4095.
Sintaxe
analogReadResolution(bits)
Parâmetros
bits: determina a resolução (em bits) do valor retornado pela analogRead()função. Você pode definir isso entre 1 e 32. Você pode definir resoluções superiores a 12, mas valores retornados por analogRead()sofrerão aproximação. Veja a nota abaixo para detalhes.
Retorna
Nada
Exemplo de código
// read the input on A0 at default resolution (10 bits)
 // and send it out the serial connection
 analogReadResolution(10);
 Serial.print("ADC 10-bit (default) : ");
 Serial.print(analogRead(A0));
 // change the resolution to 12 bits and read A0
 analogReadResolution(12);
 Serial.print(", 12-bit : ");
 Serial.print(analogRead(A0));
 // change the resolution to 16 bits and read A0
 analogReadResolution(16);
 Serial.print(", 16-bit : ");
 Serial.print(analogRead(A0));
 // change the resolution to 8 bits and read A0
 analogReadResolution(8);
 Serial.print(", 8-bit : ");
 Serial.println(analogRead(A0));
 // a little delay to not hog Serial Monitor
 delay(100);
}
O código mostra como usar o ADC com diferentes resoluções.
void setup () {
  // abre uma conexão serial
  Serial.begin (9600);
}
void loop () {
  // le a entrada em A0 na resolução padrão (10 bits)
  // e enviá-lo pela conexão serial
  analogReadResolution (10);
  Serial.print ("ADC 10-bit (padrão):");
  Serial.print (analogRead (A0));
  // muda a resolução para 12 bits e lê A0
  analogReadResolution (12);
  Serial.print (", 12 bits:");
  Serial.print (analogRead (A0));
  // muda a resolução para 16 bits e lê A0
  analiseReadResolution (16);
  Serial.print (", 16 bits:");
  Serial.print (analogRead (A0));
  // muda a resolução para 8 bits e lê A0
  analogReadResolution (8);
  Serial.print (", 8 bits:");
  Serial.println (analogRead (A0));
  // um pequeno atraso para não roubar o Monitor Serial
  delay (100);
Notas e avisos
Se você definir o analogReadResolution()valor para um valor maior do que os recursos da sua placa, o Arduino reportará apenas na sua resolução mais alta, preenchendo os bits extras com zeros.
Por exemplo: usar o método Due with analogReadResolution(16)lhe dará um número aproximado de 16 bits com os primeiros 12 bits contendo a leitura real do ADC e os últimos 4 bits preenchidos com zeros .
Se você definir o analogReadResolution()valor para um valor inferior aos recursos da sua placa, os bits extra menos significativos lidos do ADC serão descartados .
O uso de uma resolução de 16 bits (ou qualquer resolução maior do que a capacidade real de hardware) permite escrever esboços que manipulam automaticamente dispositivos com um ADC de resolução mais alta quando eles se tornam disponíveis em placas futuras sem alterar uma linha de código.
analogWriteResolution ()
[Família Zero, Due & MKR]
Descrição
analogWriteResolution() é uma extensão da API analógica para o Arduino Due.
analogWriteResolution()define a resolução da analogWrite()função. O padrão é 8 bits (valores entre 0-255) para compatibilidade retroativa com placas baseadas em AVR.
O Due tem os seguintes recursos de hardware:
· 12 pinos, cujo padrão é o PWM de 8 bits, como as placas baseadas em AVR. Estes podem ser alterados para resolução de 12 bits.
· 2 pinos com DAC de 12 bits (conversor digital para analógico)
Ao definir a resolução de gravação como 12, você pode usar analogWrite()com valores entre 0 e 4095 para explorar a resolução total do DAC ou para definir o sinal PWM sem rolar.
O Zero tem os seguintes recursos de hardware:
· 10 pinos, cujo padrão é o PWM de 8 bits, como as placas baseadas em AVR. Estes podem ser alterados para resolução de 12 bits.
· 1 pino com DAC de 10 bits (conversor digital para analógico).
Definindo a resolução de gravação como 10, você pode usar analogWrite()com valores entre 0 e 1023 para explorar a resolução total do DAC
A família de placas MKR possui os seguintes recursos de hardware:
· 4 pinos cujo padrão é o PWM de 8 bits, como as placas baseadas em AVR. Estes podem ser alterados de 8 (padrão) para resolução de 12 bits.
· 1 pino com DAC de 10 bits (conversor digital para analógico)
Ao definir a resolução de gravação para 12 bits, você pode usar analogWrite()com valores entre 0 e 4095 para sinais PWM; defina 10 bits no pino DAC para explorar a resolução DAC completa de 1024 valores.
Sintaxe
analogWriteResolution(bits)
Parâmetros
bits: determina a resolução (em bits) dos valores usados ​​na analogWrite()função. O valor pode variar de 1 a 32. Se você escolher uma resolução maior ou menor do que os recursos de hardware da placa, o valor usado analogWrite()será truncado se for muito alto ou preenchido com zeros se for muito baixo. Veja a nota abaixo para detalhes.
Retorna
Nada
Exemplo de código
Explicar Código
void setup(){
 // abrir uma conexão serial
 Serial.begin(9600);
 // faça o nosso pino digital uma saída
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}
void loop(){
 // leia a entrada em A0 e mapeie para um pino PWM  
 // com um LED conectado
 int sensorVal = analogRead(A0);
 Serial.print("Analog Read) : ");
 Serial.print(sensorVal);
// a resolução padrão do PWM
 analogWriteResolution(8);
 analogWrite(11, map(sensorVal, 0, 1023, 0 ,255));
 Serial.print(" , 8-bit PWM value : ");
 Serial.print(map(sensorVal, 0, 1023, 0 ,255));
 // altere a resolução do PWM para 12 bits  
 // a resolução completa de 12 bits é suportada apenas  
 // no vencimento
 analogWriteResolution(12);
 analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
 Serial.print(" , 12-bit PWM value : ");
 Serial.print(map(sensorVal, 0, 1023, 0, 4095));// alterar a resolução do PWM para 4 bits
 analogWriteResolution(4);
 analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
 Serial.print(", 4-bit PWM value : ");
 Serial.println(map(sensorVal, 0, 1023, 0, 15));
 delay(5);
}
Notas e avisos
Se você definir o analogWriteResolution()valor para um valor maior que o da sua placa, o Arduino irá descartar os bits extras. Por exemplo: usando o Due with analogWriteResolution(16)em um pino DAC de 12 bits, somente os primeiros 12 bits dos valores passados analogWrite()serão usados ​​e os últimos 4 bits serão descartados.
Se você definir o analogWriteResolution()valor para um valor inferior aos recursos da placa, os bits ausentes serão preenchidos com zeros para preencher o tamanho necessário do hardware. Por exemplo: usando o Due with analogWriteResolution (8) em um pino DAC de 12 bits, o Arduino adicionará 4 bits zero ao valor de 8 bits usado analogWrite()para obter os 12 bits necessários.
notone()
[E / S avançada]
Descrição
Pára a geração de uma onda quadrada desencadeada por tone(). Não tem efeito se nenhum tom estiver sendo gerado.
Sintaxe
noTone(pin)
Parâmetros
pin: o pino no qual parar de gerar o tom
Retorna
Nada
Notas e avisos
Se você quiser reproduzir alturas diferentes em vários pinos, será necessário chamar noTone () em um pino antes de chamar tone()o próximo pino.
pulseIn ()
[E / S avançada]
Descrição
Lê um pulso (ou HIGHou LOW) em um pino. Por exemplo, se valuefor HIGH, pulseIn()espera que o pino vá de LOWpara HIGH, comece a cronometrar, espere que o pino vá LOWe pare de cronometrar. Retorna a duração do pulso em microssegundos ou desiste e retorna 0 se nenhum pulso completo foi recebido dentro do tempo limite.
O tempo dessa função foi determinado empiricamente e provavelmente mostrará erros em pulsos mais longos. Funciona em pulsos de 10 microssegundos a 3 minutos de duração.
Sintaxe
pulseIn(pin, value)
pulseIn(pin, value, timeout)
Parâmetros
pin: o número do pino no qual você deseja ler o pulso. (int)
value: tipo de pulso para ler: ALTO ou BAIXO . (int)
timeout(opcional): o número de microssegundos a aguardar o início do pulso; o padrão é um segundo (longo não assinado)
Retorna
o comprimento do pulso (em microssegundos) ou 0 se nenhum pulso for iniciado antes do tempo limite (longo não assinado)
Exemplo de código
O exemplo calculou a duração do tempo de um pulso no pino 7.
int pin = 7;
unsigned long duration;
void setup()
{
 pinMode(pin, INPUT);
}
void loop()
{
 duration = pulseIn(pin, HIGH);
}
pulseInLong ()
[E / S avançada]
Descrição
pulseInLong()é uma alternativa ao pulseIn (), que é melhor em lidar com pulsos longos e interromper cenários afetados.
Lê um pulso (ou HIGHou LOW) em um pino. Por exemplo, se valuefor HIGH, pulseInLong()espera que o pino vá de LOWpara HIGH, comece a cronometrar, espere que o pino vá LOWe pare de cronometrar. Retorna a duração do pulso em microssegundos ou desiste e retorna 0 se nenhum pulso completo foi recebido dentro do tempo limite.
O tempo desta função foi determinado empiricamente e provavelmente mostrará erros em pulsos mais curtos. Funciona em pulsos de 10 microssegundos a 3 minutos de duração. Esta rotina pode ser usada somente se as interrupções forem ativadas. Além disso, a maior resolução é obtida com grandes intervalos.
Sintaxe
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
Parâmetros
pin: o número do pino no qual você deseja ler o pulso. (int)
value: tipo de pulso para ler: ALTO ou BAIXO . (int)
timeout(opcional): o número de microssegundos a aguardar o início do pulso; o padrão é um segundo (longo não assinado)
Retorna
o comprimento do pulso (em microssegundos) ou 0 se nenhum pulso for iniciado antes do tempo limite (longo não assinado)
Exemplo de código
O exemplo calculou a duração do tempo de um pulso no pino 7.
int pin = 7;
unsigned long duration;
void setup() {
 pinMode(pin, INPUT);
}
void loop() {
 duration = pulseInLong(pin, HIGH);
}
Notas e avisos
Essa função depende de micros (), portanto, não pode ser usada no contexto noInterrupts () .
shiftIn ()
[E / S avançada]
Descrição
Desloca um byte de dados um bit por vez. Inicia a partir do bit mais significativo (ou seja, o mais à esquerda) ou o menor (à direita). Para cada bit, o pino do relógio é puxado para cima, o próximo bit é lido da linha de dados e, em seguida, o pino do relógio é retirado para baixo.
Se você estiver fazendo interface com um dispositivo com clock crescente, será necessário certificar-se de que o pino do relógio esteja baixo antes da primeira chamada shiftIn(), por exemplo, com uma chamada para digitalWrite(clockPin, LOW).
Nota: esta é uma implementação de software; O Arduino também fornece uma biblioteca SPI que usa a implementação de hardware, que é mais rápida, mas só funciona em pinos específicos.
Sintaxe
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
Parâmetros
dataPin: o pino no qual inserir cada bit (int)
clockPin: o pino para alternar para sinalizar uma leitura de dataPin
bitOrder: qual a ordem para mudar nos bits; quer MSBFIRST ou LSBFIRST . (O bit mais significativo primeiro ou o bit menos significativo primeiro)
Retorna
o valor lido (byte)
shiftOut ()
[E / S avançada]
Descrição
Desloca um byte de dados um bit por vez. Inicia a partir do bit mais significativo (ou seja, o mais à esquerda) ou o menor (à direita). Cada bit é gravado por sua vez em um pino de dados, após o qual um pino de clock é pulsado (alto, depois baixo) para indicar que o bit está disponível.
Observação: se você estiver fazendo interface com um dispositivo com clock crescente, será necessário certificar-se de que o pino do relógio esteja baixo antes da chamada shiftOut(), por exemplo, com uma chamada para digitalWrite(clockPin, LOW).
Esta é uma implementação de software; veja também a biblioteca SPI , que fornece uma implementação de hardware mais rápida, mas funciona apenas em pinos específicos.
Sintaxe
shiftOut(dataPin, clockPin, bitOrder, value)
Parâmetros
dataPin: o pino no qual a saída de cada bit (int)
clockPin: o pino para alternar uma vez que o dataPin foi definido para o valor correto (int)
bitOrder: qual a ordem para deslocar os bits; MSBFIRST ou LSBFIRST. (O bit mais significativo primeiro ou o bit menos significativo primeiro)
value: os dados para mudar. (byte)
Retorna
Nada
Exemplo de código
Para acompanhar o circuito, veja o tutorial sobre como controlar um registrador de deslocamento 74HC595 .
//**************************************************************//
// 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 //
//****************************************************************
//Pin connectado to ST_CP of 74HC595
int latchPin = 8;
//Pin connectado to SH_CP of 74HC595
int clockPin = 12;
////Pin connectado to DS of 74HC595
int dataPin = 11;
void setup() {
  // configura os pinos para saída porque eles são endereçados no loop principal
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
}
void loop() {
  // contagem de rotina
 for (int j = 0; j < 256; j++) {
 // trava do soloPin e segure baixo enquanto você estiver transmitindo
 digitalWrite(latchPin, LOW);
 shiftOut(dataPin, clockPin, LSBFIRST, j);
    // retorne o pino de trava para sinalizar que ele
    // não precisa mais escutar informações
 digitalWrite(latchPin, HIGH);
 delay(1000);
 }
}
Notas e avisos
O dataPin e o clockPin já devem estar configurados como saídas por uma chamada para pinMode () .
O shiftOut é atualmente escrito para a saída de 1 byte (8 bits), de modo que requer uma operação em duas etapas para gerar valores maiores que 255.
// Faça isso para serial MSBFIRST
int data = 500;
// shift out highbyte
shiftOut(dataPin, clock, MSBFIRST, (data >>8));
// shift out lowbyte
shiftOut(dataPin, clock, MSBFIRST, data);
// Ou faça isso para serial LSBFIRST
data = 500;
// desloca o baixo byby
shiftOut(dataPin, clock, LSBFIRST, data);
// deslocar alto byby
shiftOut(dataPin, clock, LSBFIRST, (data >> 8));
tom()tone
[E / S avançada]
Descrição
Gera uma onda quadrada da frequência especificada (e ciclo de trabalho de 50%) em um pino. Uma duração pode ser especificada, caso contrário, a onda continua até uma chamada para noTone () . O pino pode ser conectado a um sinal sonoro piezoelétrico ou outro alto-falante para reproduzir tons.
Apenas um tom pode ser gerado por vez. Se um som já estiver tocando em um pino diferente, a chamada para tone () não terá efeito. Se o tom estiver tocando no mesmo pino, a chamada definirá sua frequência.
O uso da tone()função interferirá na saída do PWM nos pinos 3 e 11 (em outras placas além da Mega).
Não é possível gerar tons inferiores a 31Hz. Para detalhes técnicos, veja as notas de Brett Hagman .
Sintaxe
tone(pin, frequency)
tone(pin, frequency, duration)
Parâmetros
pin: o pino no qual gerar o tom
frequency: a frequência do tom em hertz - unsigned int
duration: a duração do tom em milissegundos (opcional) - unsigned long
Retorna
Nada
Notas e avisos
Se você quiser reproduzir notas diferentes em vários pinos, será necessário chamar noTone()um pino antes de chamar tone()o próximo pino.
delay()
[Tempo]
Descrição
Pausa o programa pelo período de tempo (em milissegundos) especificado como parâmetro. (Há 1000 milissegundos em um segundo.)
Sintaxe
delay(ms)
Parâmetros
ms: o número de milissegundos a pausar ( unsigned long)
Retorna
Nada
Exemplo de código
O código pausa o programa por um segundo antes de alternar o pino de saída.
int ledPin = 13; // LED conectado ao pino digital 13
void setup()
{
 pinMode(ledPin, OUTPUT); // define o pino digital como saída
}
void loop()
{
 digitalWrite(ledPin, HIGH); //define led ligado
 delay(1000); // espera por um segundo 
 digitalWrite(ledPin, LOW); //define led desligado
 delay(1000); // espera por um segundo 
}
Notas e avisos
Embora seja fácil criar um LED intermitente com a delay()função, e muitos esboços usam atrasos curtos para tarefas como a de debounce de comutador, o uso de delay()um esboço tem desvantagens significativas. Nenhuma outra leitura de sensores, cálculos matemáticos ou manipulação de pinos pode continuar durante a função de atraso, então, de fato, ela interrompe a maioria das outras atividades. Para abordagens alternativas para controlar a temporização, consulte a função millis () e o esboço abaixo. Programadores mais experientes geralmente evitam o uso de delay()temporizações de eventos maiores que 10 de milissegundos, a menos que o esboço do Arduino seja muito simples.
Certas coisas acontecem enquanto a função delay () está controlando o chip Atmega, porque a função delay não desabilita as interrupções. A comunicação serial que aparece no pino RX é gravada, os valores PWM ( analogWrite ) e os estados dos pinos são mantidos e as interrupções funcionam como deveriam.
delayMicroseconds ()
[Tempo]
Descrição
Pausa o programa pelo período de tempo (em microssegundos) especificado como parâmetro. Há mil microssegundos em um milissegundo e um milhão de microssegundos em um segundo.
Atualmente, o maior valor que produzirá um atraso preciso é 16383. Isso pode mudar em futuras versões do Arduino. Para atrasos maiores que alguns milhares de microssegundos, você deve usar em delay()vez disso.
Sintaxe
delayMicroseconds(us)
Parâmetros
us: o número de microssegundos a pausar ( unsigned int)
Retorna
Nada
Exemplo de código
O código configura o pino número 8 para funcionar como um pino de saída. Ele envia um trem de pulsos de aproximadamente 100 microssegundos. A aproximação é devida à execução das outras instruções no código.
int outPin = 8; // digital pino 8
void setup()
{
 pinMode(outPin, OUTPUT); // define o pino digital como saída
}
void loop()
{
 digitalWrite(outPin, HIGH); // define o pino ligado
 delayMicroseconds(50); // pausa de 50 microseconds
 digitalWrite(outPin, LOW); // define o pino desligado
 delayMicroseconds(50); // pausa de 50 microseconds
}
Notas e avisos
Essa função funciona com muita precisão no intervalo de 3 microssegundos e acima. Não podemos garantir que o delayMicroseconds funcione com precisão para tempos de atraso menores.
A partir do Arduino 0018, o delayMicroseconds () não desativa mais as interrupções.
micros ()
[Tempo]
Descrição
Retorna o número de microssegundos desde que a placa do Arduino começou a executar o programa atual. Este número irá transbordar (voltar para zero), após aproximadamente 70 minutos. Em placas de 16 MHz Arduino (por exemplo, Duemilanove e Nano), esta função tem uma resolução de quatro microssegundos (ou seja, o valor retornado é sempre um múltiplo de quatro). Em placas Arduino de 8 MHz (por exemplo, o LilyPad), esta função tem uma resolução de oito microssegundos.
Sintaxe
time = micros()
Parâmetros
Nada
Retorna
Retorna o número de microssegundos desde que a placa do Arduino começou a executar o programa atual.
Exemplo de código
O código retorna o número de microssegundos desde o início da placa Arduino.
unsigned long time;
void setup(){
 Serial.begin(9600);
}
void loop(){
 Serial.print("Time: ");
 time = micros();
 Serial.println(time); // imprime tempo desde o início do programa
delay(1000); // espere um segundo para não enviar grandes quantidades de dados
}	
Notas e avisos
Existem 1.000 microssegundos em um milissegundo e 1.000.000 microssegundos em um segundo.
millis ()
[Tempo]
Descrição
Retorna o número de milissegundos desde que a placa do Arduino começou a executar o programa atual. Este número irá transbordar (voltar para zero), após aproximadamente 50 dias.
Sintaxe
time = millis()
Parâmetros
Nada
Retorna
Número de milissegundos desde o início do programa (longo não assinado)
Exemplo de código
O código lê o milissegundo desde o início da placa Arduino.
unsigned long time;
void setup(){
 Serial.begin(9600);
}
void loop(){
 Serial.print("Time: ");
 time = millis();
 Serial.println(time); // imprime tempo desde o início do programa
 delay(1000); // espere um segundo para não enviar grandes quantidades de dados
 
}
Notas e avisos
Por favor, note que o valor de retorno para millis () é um longo não assinado, erros lógicos podem ocorrer se um programador tentar fazer aritmética com tipos de dados menores, como int's. Até mesmo assinados podem encontrar erros, já que seu valor máximo é metade do de sua contraparte não assinada
math.
abs ()
[Matemática]
Descrição
Calcula o valor absoluto de um número.
Sintaxe
abs(x)
Parâmetros
x: o número
Retorna
x: se x for maior que ou igual a 0.
-x: se x for menor que 0.
Notas e avisos
Devido à maneira como a função abs () é implementada, evite usar outras funções dentro dos colchetes, isso pode levar a resultados incorretos.
abs(a++); // evite isso - produz resultados incorretos
abs(a); // use isso em vez disso -
a++; // mantém outra matemática fora da função
constrain ()
[Matemática]
Descrição
Restringe um número para estar dentro de um intervalo.
Sintaxe
constrain(x, a, b)
Parâmetros
x: o número a ser restringido, todos os tipos de dados a: a extremidade inferior da faixa, todos os tipos de dados b: a extremidade superior da faixa, todos os tipos de dados
Retorna
x: se x estiver entre a e b
a: se x for menor que um
b: se x for maior que b
Exemplo de código
O código limita os valores do sensor para entre 10 e 150.
sensVal = constrain(sensVal, 10, 150); // limits range // limites gama
mapa()map
[Matemática]
Descrição
Re-mapeia um número de um intervalo para outro. Isto é, um valor de fromLow iria ficar mapeado para toLow , um valor de fromHigh para toHigh , valoriza-nos entre os valores nas entrelinhas, etc.
Não restringe os valores dentro do intervalo, porque os valores fora do intervalo são às vezes planejadose úteis. A constrain()função pode ser usada antes ou depois desta função, se os limites para os intervalos forem desejados.
Observe que os "limites inferiores" de qualquer intervalo podem ser maiores ou menores que os "limites superiores", portanto, a map()função pode ser usada para reverter um intervalo de números, por exemplo
y = map(x, 1, 50, 50, 1);
A função também lida bem com números negativos, de modo que este exemplo
y = map(x, 1, 50, 50, -100);
também é válido e funciona bem.
A map()função usa matemática inteira para não gerar frações, quando a matemática pode indicar que deve fazê-lo. Os restos fracionários são truncados e não são arredondados ou calculados.
Sintaxe
map(value, fromLow, fromHigh, toLow, toHigh)
Parâmetros
value: o número para mapear
fromLow: o limite inferior do intervalo atual do valor
fromHigh: o limite superior do intervalo atual do valor
toLow: o limite inferior do intervalo de segmentação do valor
toHigh: o limite superior do intervalo de segmentação do valor
Retorna
O valor mapeado.
Exemplo de código
Mapear um valor analógico para 8 bits (0 a 255) * /
void setup() {}
void loop()
{
 int val = analogRead(0);
 val = map(val, 0, 1023, 0, 255);
 analogWrite(9, val);
}
Apêndice
Para o matematicamente inclinado, aqui está toda a função
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
max ()
[Matemática]
Descrição
Calcula o máximo de dois números.
Sintaxe
max(x, y)
Parâmetros
x: o primeiro número, qualquer tipo de dados y: o segundo número, qualquer tipo de dados
Retorna
O maior dos dois valores de parâmetro.
Exemplo de código
O código garante que sensVal seja pelo menos 20.
sensVal = max(sensVal, 20); // atribui sensVal ao maior de sensVal ou 20
                           // (efetivamente garantindo que seja pelo menos 20)
Notas e avisos
Talvez contra-intuitivamente, max()é freqüentemente usado para restringir o limite inferior do intervalo de uma variável, enquanto min()é usado para restringir o limite superior do intervalo.
Devido à maneira como a max()função é implementada, evite usar outras funções dentro dos colchetes, isso pode levar a resultados incorretos
max(a--, 0); // evite isso - produz resultados incorretos
		
max(a, 0); // use isso em vez disso -
a--; // mantém outra matemática fora da função
min ()
[Matemática]
Descrição
Calcula o mínimo de dois números.
Sintaxe
min(x, y)
Parâmetros
x: o primeiro número, qualquer tipo de dados
y: o segundo número, qualquer tipo de dados
Retorna
O menor dos dois números.
Exemplo de código
O código garante que nunca fique acima de 100.
sensVal = min(sensVal, 100); // atribui sensVal ao menor de sensVal ou 100
                             // garantindo que nunca fique acima de 100.
Notas e avisos	
Talvez contra-intuitivamente, max()é freqüentemente usado para restringir o limite inferior do intervalo de uma variável, enquanto min()é usado para restringir o limite superior do intervalo.
Devido à maneira como a min()função é implementada, evite usar outras funções dentro dos colchetes, isso pode levar a resultados incorretos
min(a++, 100); // evite isso - produz resultados incorretos
min(a, 100);
a++; // use isso - mantenha outras contas fora da função
pow()
[Matemática]
Descrição
Calcula o valor de um número elevado a uma potência. Pow()pode ser usado para aumentar um número para um poder fracionário. Isso é útil para gerar mapeamento exponencial de valores ou curvas.
Sintaxe
pow(base, exponent)
Parâmetros
base: o número ( float)
exponent: o poder para o qual a base é levantada ( float)
Retorna
O resultado da exponenciação. ( double)
Exemplo de código
Veja a função ( fscale ) na biblioteca de códigos.
sq ()
[Matemática]
Descrição
Calcula o quadrado de um número: o número multiplicado por si mesmo.
Sintaxe
sq(x)
Parâmetros
x: o número, qualquer tipo de dados
Retorna
O quadrado do número. (Duplo)
sqrt ()
[Matemática]
Calcula a raiz quadrada de um número.
Descrição
Sintaxe
sqrt(x)
Parâmetros
x: o número, qualquer tipo de dados
Retorna
A raiz quadrada do número. (Duplo)
cos ()
[Trigonometria]
Descrição
Calcula o cosseno de um ângulo (em radianos). O resultado será entre -1 e 1.
Sintaxe
cos(rad)
Parâmetros
rad: O ângulo em radianos (flutuação).
Retorna
O cos do ângulo ( double).
Sin()
[Trigonometria]
Descrição
Calcula o seno de um ângulo (em radianos). O resultado será entre -1 e 1.
Sintaxe
sin(rad)
Parâmetros
rad: O ângulo em radianos ( float).
Retorna
O seno do ângulo ( double).
 Tan()
[Trigonometria]
Descrição
Calcula a tangente de um ângulo (em radianos). O resultado será entre infinito negativo e infinito.
Sintaxe
tan(rad)
Parâmetros
rad: O ângulo em radianos ( float).
Retorna
A tangente do ângulo ( double).
isAlpha ()
[Personagens]
Descrição
Analise se um caractere é alfa (isso é uma letra). Retorna true se thisChar contiver uma letra.
Sintaxe
isAlpha(thisChar)
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é alfa.
Exemplo de código
if (isAlpha(this)) // testa se esta é uma carta
{
	Serial.println("The character is a letter"); // O personagem é uma carta
}
else
{
	Serial.println("The character is not a letter");// O personagem não é uma carta
}
isAlphaNumeric ()
[Personagens]
Descrição
Analise se um caractere é alfanumérico (ou seja, uma letra ou um número). Retorna true se thisChar contiver um número ou uma letra.
Sintaxe
`isAlphaNumeric(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é alfanumérico.
Exemplo de código
if (isAlphaNumeric(this)) // testa se esta é uma letra ou um número
{
	Serial.println("The character is alphanumeric"); // O caractere é alfanumérico
}
else
{
	Serial.println("The character is not alphanumeric");// O caractere não é alfanumérico"
}
isAscii ()
[Personagens]
Descrição
Analise se um char é Ascii. Retorna true se thisChar contiver um caractere Ascii.
Sintaxe
`isAscii(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é Ascii.
Exemplo de código
if (isAscii(this)) // testa se este é um personagem Ascii 
{
	Serial.println("The character is Ascii");//"O caractere é Ascii"
}
else
{
	Serial.println("The character is not Ascii");// O caractere não é Ascii
}
isControl ()
[Personagens]
Descrição
Analise se um char é um caractere de controle. Retorna true se thisChar for um caractere de controle.
Sintaxe
`isControl(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é um caractere de controle.
Exemplo de código
if (isControl(this)) // testa se este é um personagem de controle
{
	Serial.println("The character is a control character"); // O caractere é um caractere de controle
}
else
{
	Serial.println("The character is not a control character");// O caractere não é um caractere de controle
}
isDigit ()
[Personagens]
Descrição
Analise se um caractere é um dígito (isto é, um número). Retorna true se thisChar for um número.
Sintaxe
isDigit(thisChar)
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é um número.
Exemplo de código
if (isDigit(this)) // testa se este é um dígito
{
	Serial.println("The character is a number"); // O caractere é um número
}
else
{
	Serial.println("The character is not a number");// O personagem não é um número
}
isGraph ()
[Personagens]
Descrição
Analise se um caractere é imprimível com algum conteúdo (o espaço é imprimível, mas não tem conteúdo). Retorna true se thisChar for imprimível.
Sintaxe
`isGraph(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é imprimível.
Exemplo de código
if (isGraph(this)) // testa se este é um caractere imprimível, mas não um espaço em branco.
{	
	Serial.println("The character is printable");// O caractere é imprimível
}
else
{
	Serial.println("The character is not printable");//O caractere não é imprimível}
isHexadecimalDigit ()
[Personagens]
Descrição
Analise se um caractere é um dígito hexadecimal (AF, 0-9). Retorna true se thisChar contiver um dígito hexadecimal.
Sintaxe
`isHexadecimalDigit(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é um dígito hexadecimal.
Exemplo de código
if (isHexadecimalDigit(this)) // testa se este é um dígito hexadecimal
{
	Serial.println("The character is an hexadecimal digit");// O caractere é um dígito hexadecimal
}
else
{
	Serial.println("The character is not an hexadecimal digit");// O caractere não é um dígito hexadecimal
}
isLowerCase ()
[Personagens]
Descrição
Analise se um caractere é minúsculo (ou seja, uma letra minúscula). Retorna true se thisChar contiver uma letra em minúscula.
Sintaxe
`isLowerCase(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é minúsculo.
Exemplo de código
if (isLowerCase(this)) // testa se esta é uma letra minúscula
{
	Serial.println("The character is lower case");// O personagem é minúsculas
}
else
{
	Serial.println("The character is not lower case");// O personagem não é minúsculas
}
isPrintable ()
[Personagens]
Descrição
Analise se um caractere é imprimível (ou seja, qualquer caractere que produza uma saída, até mesmo um espaço em branco). Retorna true se thisChar for imprimível.
Sintaxe
`isAlpha(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é imprimível.
Exemplo de código
if (isPrintable(this)) // testa se isso é imprimível{
	Serial.println("The character is printable");// O personagem é imprimível
}
else
{
	Serial.println("The character is not printable");// O personagem não é imprimível
}
isPunct ()
[Personagens]
Descrição
Analise se um caracter é pontuação (ou seja, uma vírgula, um ponto e vírgula, uma marca de exlamação e assim por diante). Retorna verdadeiro se thisChar for pontuação.
Sintaxe
`isPunct(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é uma pontuação.
Exemplo de código
if (isPunct(this)) // testa se esse é um caractere de pontuação
{
	Serial.println("The character is a punctuation");// O personagem é uma pontuação
}
else
{
	Serial.println("The character is not a punctuation");// O personagem não é uma pontuação
}
isSpace ()
[Personagens]
Descrição
Analise se um char é o caractere de espaço. Retorna true se thisChar contiver o caractere de espaço.
Sintaxe
`isSpace(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é um espaço.
Exemplo de código
if (isSpace(this)) // testa se esse é o caractere de espaço{
	Serial.println("The character is a space"); // O personagem é um espaço
}
else
{
	Serial.println("The character is not a space");// O personagem não é um espaço
}
isUpperCase ()
[Personagens]
Descrição
Analise se um caractere é maiúsculo (isso é uma letra maiúscula). Retorna true se thisChar for maiúsculo.
Sintaxe
`isUpperCase(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar for maiúsculo.
Exemplo de código
if (isUpperCase(this)) // testa se esta é uma letra maiúscula
{
	Serial.println("The character is upper case");// O caractere é maiúsculo
}
else
{
	Serial.println("The character is not upper case");// O caractere não é maiúsculo
}
isWhitespace ()
[Personagens]
Descrição
Analise se um char é um espaço em branco, ou seja, espaço, formfeed ('\ f'), newline ('\ n'), retorno de carro ('\ r'), guia horizontal ('\ t') e guia vertical ('\ v')). Retorna true se thisChar contiver um espaço em branco.
Sintaxe
`isWhitespace(thisChar)`
Parâmetros
thisChar: variável. Tipos de dados permitidos: char
Retorna
true: se thisChar é um espaço em branco.
Exemplo de código
if (isWhitespace(this)) // testa se este é um espaço em branco
{
	Serial.println("The character is a white space");// "O personagem é um espaço em branco
}
else
{
	Serial.println("The character is not a white space");// O personagem não é um espaço em branco
}
aleatória()random
[Números aleatórios]
Descrição
A função aleatória gera números pseudo-aleatórios.
Sintaxe
random(max)
random(min, max)
Parâmetros
min - limite inferior do valor aleatório, inclusive (opcional)
max - limite superior do valor aleatório, exclusivo
Retorna
Um número aleatório entre min e max-1 ( long).
Exemplo de código
O código gera números aleatórios e os exibe.
long randNumber;
void setup(){
 Serial.begin(9600);
// se o pino de entrada analógica 0 estiver desconectado, analógico aleatório
  // noise fará com que a chamada randomSeed () gere
  // diferentes números de sementes cada vez que o esboço é executado.
  // randomSeed () irá então embaralhar a função aleatória.
  randomSeed (analogRead (0));
.
 randomSeed(analogRead(0));
}
void loop() {
 // imprima um número aleatório de 0 a 299
 randNumber = random(300);
 Serial.println(randNumber);
 // imprime um número aleatório de 10 a 19
 randNumber = random(10, 20);
 Serial.println(randNumber);
 delay(50);
}
Notas e avisos
Se for importante para uma seqüência de valores gerados por random()diferir, em execuções subseqüentes de um esboço, use randomSeed()para inicializar o gerador de números aleatórios com uma entrada bastante aleatória, como analogRead()em um pino não conectado.
Por outro lado, ocasionalmente pode ser útil usar seqüências pseudo-aleatórias que se repetem exatamente. Isso pode ser feito chamando randomSeed()com um número fixo, antes de iniciar a seqüência aleatória.
O maxparâmetro deve ser escolhido de acordo com o tipo de dados da variável na qual o valor é armazenado. Em qualquer caso, o máximo absoluto está ligado à longnatureza do valor gerado (32 bits - 2.147.483.647). A configuração maxpara um valor mais alto não gerará um erro durante a compilação, mas durante a execução do sketch, os números gerados não serão os esperados.
randomSeed ()
[Números aleatórios]
Descrição
randomSeed()Inicializa o gerador de números pseudo-aleatórios, fazendo com que ele inicie em um ponto arbitrário em sua seqüência aleatória. Essa sequência, embora muito longa e aleatória, é sempre a mesma.
Se for importante para uma seqüência de valores gerados por random()diferir, em execuções subseqüentes de um esboço, use randomSeed () para inicializar o gerador de números aleatórios com uma entrada bastante aleatória, como analogRead()em um pino não conectado.
Por outro lado, ocasionalmente pode ser útil usar seqüências pseudo-aleatórias que se repetem exatamente. Isso pode ser feito chamando randomSeed()com um número fixo, antes de iniciar a seqüência aleatória.
Parâmetros
seed - número para inicializar a sequência pseudoaleatória (longa não assinada).
Retorna
Nada
Exemplo de código
A explicação do código é necessária.
long randNumber;
void setup(){
 Serial.begin(9600);
 randomSeed(analogRead(0));
}
void loop(){
 randNumber = random(300);
 Serial.println(randNumber);
 delay(50);
}
Bit()
[Bits e bytes]
Descrição
Calcula o valor do bit especificado (bit 0 é 1, bit 1 é 2, bit 2 é 4, etc.).
Sintaxe
bit(n)
Parâmetros
n: o bit cujo valor para computar
Retorna
O valor do bit.
bitClear ()
[Bits e bytes]
Descrição
Limpa (escreve um 0 a) um pouco de uma variável numérica.
Sintaxe
bitClear(x, n)
Parâmetros
x: a variável numérica cujo bit para limpar
n: qual bit para limpar, começando em 0 para o bit menos significativo (mais à direita)
Retorna
Nada
bitRead ()
[Bits e bytes]
Descrição
Lê um pouco de um número.
Sintaxe
bitRead(x, n)
Parâmetros
x: o número a partir do qual ler
n: qual bit para ler, começando em 0 para o bit menos significativo (mais à direita)
Retorna
o valor do bit (0 ou 1).
bitSet ()
[Bits e bytes]
Define (escreve um 1 a) um bit de uma variável numérica.
Descrição
Sintaxe
bitSet(x, n)
Parâmetros
x: a variável numérica cujo bit é definido
n: which bit to set, iniciando em 0 para o bit menos significativo (mais à direita)
Retorna
Nada
bitWrite ()
[Bits e bytes]
DescriçãoEscreve um pouco de uma variável numérica.
Sintaxe
bitWrite(x, n, b)
Parâmetros
x: a variável numérica na qual escrever
n: qual bit do número para escrever, começando em 0 para o bit menos significativo (mais à direita)
b: o valor para gravar no bit (0 ou 1)
Retorna
Nada
highByte ()
[Bits e bytes]
Descrição
Extrai o byte de alta ordem (mais à esquerda) de uma palavra (ou o segundo byte mais baixo de um tipo de dados maior).
Sintaxe
highByte(x)
Parâmetros
x: um valor de qualquer tipo
Retorna
byte
lowByte ()
[Bits e bytes]
Descrição
Extrai o byte de menor ordem (mais à direita) de uma variável (por exemplo, uma palavra).
Sintaxe
lowByte(x)
Parâmetros
x: um valor de qualquer tipo
Retorna
byte
attachInterrupt ()
[Interrupções externas]
Descrição
Pinos Digitais Com Interrupções
O primeiro parâmetro para attachInterrupt é um número de interrupção. Normalmente você deve usar digitalPinToInterrupt (pin) para traduzir o pino digital real para o número de interrupção específico. Por exemplo, se você se conectar ao pino 3, use digitalPinToInterrupt (3) como o primeiro parâmetro para attachInterrupt.
	BORDA
	PINOS DIGITAIS UTILIZÁVEIS ​​PARA INTERRUPÇÕES
	Uno, Nano, Mini, outros baseados em 328
	2, 3
	Uno WiFi Rev.2
	todos os pinos digitais
	Mega, Mega2560, MegaADK
	2, 3, 18, 19, 20, 21
	Micro, Leonardo, outros baseados em 32u4
	0, 1, 2, 3, 7
	Zero
	todos os pinos digitais, exceto 4
	MKR Family boards
	0, 1, 4, 5, 6, 7, 8, 9, A1, A2
	Vencimento
	todos os pinos digitais
	101
	todos os pinos digitais (somente os pinos 2, 5, 7, 8, 10, 11, 12, 13 trabalham com CHANGE )
Notas e avisos
Nota
Dentro da função anexada, delay()não funcionará e o valor retornado por millis()não será incrementado. Dados seriais recebidos enquanto na função podem ser perdidos. Você deve declarar como volátil quaisquer variáveis ​​que você modifique dentro da função anexada. Veja a seção sobre ISRs abaixo para mais informações.
Usando interrupções
Interrupções são úteis para fazer coisas acontecerem automaticamente em programas de microcontroladores e podem ajudar a resolver problemas de tempo. Boas tarefas para usar uma interrupção podem incluir a leitura de um codificador rotativo ou a monitoração da entrada do usuário.
Se você quisesse assegurar que um programa sempre captasse os pulsos de um codificador rotativo, de modo que nunca perdesse um pulso, tornaria muito complicado escrever um programa para fazer qualquer outra coisa, porque o programa precisaria pesquisar constantemente o sensor linhas para o codificador, a fim de capturar pulsos quando eles ocorreram. Outros sensores também têm uma interface dinâmica semelhante, como tentar ler um sensor de som que está tentando capturar um clique ou um sensor de slot infravermelho (foto-interruptor) tentando pegar uma moeda. Em todas essas situações, o uso de uma interrupção pode liberar o microcontrolador para executar outro trabalho sem perder a entrada.
Sobre Rotinas de Serviço de Interrupção
Os ISRs são tipos especiais de funções que possuem algumas limitações exclusivas que a maioria das outras funções não possuem. Um ISR não pode ter nenhum parâmetro e não deve retornar nada.
Geralmente, um ISR deve ser o mais curto e rápido possível. Se o seu esboço usa múltiplos ISRs, apenas um pode ser executado por vez, outras interrupções serão executadas após o atual terminar em uma ordem que depende da prioridade que eles têm. millis () depende de interrupções para contar, por isso nunca incrementará dentro de um ISR. Como o delay () requer interrupções para o trabalho, ele não funcionará se chamado dentro de um ISR. micros () funciona inicialmente, mas vai começar a se comportar de forma irregular após 1-2 ms. delayMicroseconds () não usa nenhum contador, então funcionará normalmente.
Geralmente variáveis ​​globais são usadas para passar dados entre um ISR e o programa principal. Para garantir que as variáveis ​​compartilhadas entre um ISR e o programa principal sejam atualizadas corretamente, declare-as como volatile.
Para mais informações sobre interrupções, veja as notas de Nick Gammon .
Sintaxe
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);(recomendado) 
attachInterrupt(interrupt, ISR, mode);(não recomendado) 
attachInterrupt(pin, ISR, mode);(não recomendado Arduino Due, Zero, MKR1000, apenas 101)
Parâmetros
interrupt: o número da interrupção ( int) 
pin: o número do pino (Arduino Due, Zero, MKR1000 apenas)
ISR : o ISR para chamar quando a interrupção ocorrer; esta função não deve ter parâmetros e não devolver nada. Esta função é por vezes referida como uma rotina de serviço de interrupção. 
mode: define quando a interrupção deve ser acionada. Quatro constantes são predefinidas como valores válidos:
· BAIXO para acionar a interrupção sempre que o pino estiver baixo
· MUDANÇA para acionar a interrupção sempre que o pino alterar o valor
· AUMENTAR para disparar quando o pino vai de baixo para alto
· FALLING para quando o pino vai de alto a baixo.
As placas Due, Zero e MKR1000 também permitem:
· HIGH para acionar a interrupção sempre que o pino estiver alto.
Retorna
Nada
Exemplo de código
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
void setup() {
 pinMode(ledPin, OUTPUT);
 pinMode(interruptPin, INPUT_PULLUP);
 attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}
void loop() {
 digitalWrite(ledPin, state);
}
void blink() {
 state = !state;
}
const byte ledPin = 13;
const byte interruptPin = 2;
estado de byte volátil = BAIXO;
void setup () {
  pinMode (ledPin, OUTPUT);
  pinMode (interruptPin, INPUT_PULLUP);
  attachInterrupt (digitalPinToInterrupt (interruptPin), pisca, MUDANÇA);
}
void loop () {
  digitalWrite (ledPin, estado);
}
void blink () {
  estado = estado;
}
Números de Interrupção
Normalmente você deve usar digitalPinToInterrupt (pin), em vez de colocar um número de interrupção diretamente no seu sketch. Os pinos específicos com interrupções e seu mapeamento para interromper o número variam em cada tipo de placa. O uso direto de números de interrupção pode parecer simples, mas pode causar problemas de compatibilidade quando o esboço é executado em uma placa diferente.
No entanto, os esboços mais antigos geralmente têm números de interrupção diretos. Muitas vezes, o número 0 (para o pino digital 2) ou o número 1 (para o pino digital 3) foram usados. A tabela abaixo mostra os pinos de interrupção disponíveis em várias placas.
Observe que na tabela abaixo, os números de interrupção se referem ao número a ser passado para attachInterrupt (). Por razões históricas, esta numeração nem sempre corresponde diretamente à numeração de interrupção no chip atmega (por exemplo, int.0 corresponde a INT4 no chip Atmega2560).
	BORDA
	INT.0
	INT.1
	INT.2
	INT.3
	INT.4
	INT.5
	Uno, Ethernet
	2
	3
	
	
	
	
	Mega2560
	2
	3
	21
	20
	19
	18
	Baseado em 32u4 (por exemplo, Leonardo, Micro)
	3
	2
	0
	1
	7
	
Para Uno WiFiRev.2, Due, Zero, Família MKR e 101 placas, o número de interrupção = número de pinos .
detachInterrupt ()
[Interrupções externas]
Descrição
Desativa a interrupção dada.
Sintaxe
detachInterrupt()
detachInterrupt(pin) (Somente Arduino Due)
Parâmetros
interrupt: o número da interrupção a ser desabilitada (veja attachInterrupt () para mais detalhes).
pin: o número do pino da interrupção a desabilitar (apenas Arduino Due)
Retorna
Nada
interrompe () 
[Interrompe]
Descrição
Reabilita interrupções (depois de terem sido desativadas por nointerrupts () . Interrupções permitem que certas tarefas importantes ocorram em segundo plano e são ativadas por padrão. Algumas funções não funcionarão enquanto as interrupções estiverem desativadas e a comunicação de entrada poderá ser ignorada. No entanto, pode atrapalhar um pouco o tempo do código e pode ser desativado para seções de código particularmente críticas.
Sintaxe
interrupts()
Parâmetros
Nada
Retorna
Nada
Exemplo de código
O código permite interrupções.
void setup() {}
void loop()
{
 noInterrupts();
// código crítico sensível ao tempo aqui
 interrupts();
// outrocódigo aqui
}
noInterrupts ()
[Interrompe]
Descrição
Desativa as interrupções (você pode reativá-las com interrupts()). Interrupções permitem que certas tarefas importantes aconteçam em segundo plano e são ativadas por padrão. Algumas funções não funcionarão enquanto as interrupções estiverem desativadas e a comunicação de entrada poderá ser ignorada. No entanto, as interrupções podem afetar levemente o tempo do código e podem ser desabilitadas para seções de código particularmente críticas.
Sintaxe
noInterrupts()
Parâmetros
Nada
Retorna
Nada
Exemplo de código
O código mostra como ativar interrupções.
void setup() {}
void loop()
{
 noInterrupts();
// código crítico sensível ao tempo aqui
 interrupts();
 // outro código aqui
}
Corrente () fluxo
[Comunicação]
Descrição
Stream é a classe base para fluxos baseados em caracteres e binários. Não é chamado diretamente, mas invocado sempre que você usa uma função que depende dele.
Stream define as funções de leitura no Arduino. Ao usar qualquer funcionalidade principal que use um read()método semelhante, você pode seguramente assumir que ele chama na classe Stream. Para funções como print()Stream, herda da classe Print.
Algumas das bibliotecas que dependem do Stream incluem:
· Serial
· Fio
· Ethernet
· SD
Funções
available () 
Stream.available ()
Descrição
available()Obtém o número de bytes disponíveis no fluxo. Isto é apenas para bytes que já chegaram.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.available()
Parâmetros
stream : uma instância de uma classe que herda do Stream.
Retorna
int : o número de bytes disponíveis para leitura
read () 
Stream.read ()
Descrição
read() lê caracteres de um fluxo de entrada para o buffer.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe stream para mais informações.
Sintaxe
stream.read()
Parâmetros
stream : uma instância de uma classe que herda do Stream.
Retorna
O primeiro byte de dados recebidos disponíveis (ou -1 se não houver dados disponíveis).
flush () 
Stream.flush ()
Descrição
flush() limpa o buffer assim que todos os caracteres de saída forem enviados.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe stream para mais informações.
Sintaxe
stream.flush()
Parâmetros
stream : uma instância de uma classe que herda do Stream.
Retorna
Nada
procurar () 
Stream.find ()
Descrição
find() lê dados do fluxo até que a cadeia de destino de determinado tamanho seja encontrada A função retorna verdadeiro se a cadeia de destino for encontrada, false se expirar.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe stream para mais informações.
Sintaxe
stream.find(target)
Parâmetros
stream : uma instância de uma classe que herda do Stream.
target : a string para procurar por (char)
Retorna
bool
findUntil ()  
Stream.findUntil ()
Descrição
findUntil() lê dados do fluxo até que a cadeia de destino de determinado comprimento ou cadeia terminadora seja encontrada.
A função retorna true se a string de destino for encontrada, false se expirar
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja oLÍNGUA Página principal da classe Stream para mais informações.
Sintaxe
stream.findUntil(target, terminal)
Parâmetros
stream.findUntil(target, terminal)
Retorna
bool
peek () 
Stream.peek ()
Descrição
Leia um byte do arquivo sem avançar para o próximo. Ou seja, as chamadas sucessivas peek()retornarão o mesmo valor, assim como a próxima chamada read().
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.peek()
Parâmetros
stream : uma instância de uma classe que herda do Stream.
Retorna
O próximo byte (ou caractere) ou -1 se nenhum estiver disponível.
Exemplo de código
readBytes () 
Stream.readBytes ()
Descrição
readBytes()ler caracteres de um fluxo em um buffer. A função termina se o comprimento determinado tiver sido lido ou expirar (consulte setTimeout () ).
readBytes()retorna o número de bytes colocados no buffer. Um 0 significa que nenhum dado válido foi encontrado.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.readBytes(buffer, length)
Parâmetros
stream : uma instância de uma classe que herda do Stream.
buffer: o buffer para armazenar os bytes em ( char[]ou byte[])
length : o número de bytes a read(int)
Retorna
O número de bytes colocados no buffer ( size_t)
readBytesUntil () 
Stream.readBytesUntil ()
Descrição
readBytesUntil()lê caracteres de um fluxo em um buffer. A função termina se o caractere terminador for detectado, o comprimento determinado tiver sido lido ou expirar (consulte setTimeout () ).
readBytesUntil()retorna o número de bytes colocados no buffer. Um 0 significa que nenhum dado válido foi encontrado.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.readBytesUntil(character, buffer, length)
Parâmetros
stream : uma instância de uma classe que herda do Stream.
character: o caractere para procurar por ( char)
buffer: o buffer para armazenar os bytes em ( char[]ou byte[])
length : the number of bytes to `read(int)
Retorna
O número de bytes colocados no buffer.
lerString () 
Stream.readString ()
Descrição
readString()lê caracteres de um fluxo em um String. A função termina se expirar (consulte setTimeout () ).
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.readString()
Parâmetros
Nada
Retorna
Um String lido de um fluxo.
lerStringUntil () 
Stream.readStringUntil ()
Descrição
readStringUntil()lê caracteres de um fluxo em um String. A função termina se o caractere terminador for detectado ou expirar (consulte setTimeout () ).
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.readString(terminator)
Parâmetros
terminator: o caractere para procurar por ( char)
Retorna
A String inteira é lida de um fluxo, até que o caractere terminador seja detectado.
parseInt () 
Stream.parseInt ()
Descrição
parseInt()retorna o primeiro número inteiro válido (longo) da posição atual. Caracteres iniciais que não são inteiros (ou o sinal de menos) são ignorados.
Em particular:
· Caracteres iniciais que não são dígitos ou um sinal de menos, são ignorados;
· A análise é interrompida quando nenhum caractere foi lido por um valor de tempo limite configurável ou um não dígito é lido;
· Se nenhum dígito válido foi lido quando o tempo limite (consulte Stream.setTimeout () ) ocorrer, será retornado 0;
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações.
Sintaxe
stream.parseInt(list)
stream.parseInt(''list', char skipchar')
Parâmetros
stream : uma instância de uma classe que herda do Stream.
list: o fluxo para verificar ints ( char)
skipChar: usado para pular o caractere indicado na pesquisa. Usado, por exemplo, para ignorar milhares de divisores.
Retorna
long
parseFloat () 
Stream.parseFloat ()
Descrição
parseFloat()retorna o primeiro número de ponto flutuante válido da posição atual. Caracteres iniciais que não são dígitos (ou o sinal de menos) são ignorados. parseFloat()é terminado peloprimeiro caractere que não é um número de ponto flutuante.
Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja a página principal da classe Stream para mais informações
Sintaxe
stream.parseFloat(list)
Parâmetros
stream : uma instância de uma classe que herda do Stream.
list: o fluxo para verificar se há flutuadores ( char)
Retorna
float
setTimeout ()
Stream.setTimeout ()
Descrição
setTimeout()define o máximo de milissegundos para aguardar dados de fluxo, o padrão é 1000 milissegundos. Esta função faz parte da classe Stream, e é chamada por qualquer classe que herda dela (Wire, Serial, etc). Veja oLÍNGUA Página principal da classe Stream para mais informações.
Sintaxe
stream.setTimeout(time)
Parâmetros
stream: uma instância de uma classe que herda do Stream. time: duração do tempo limite em milissegundos ( long).
Retorna
Nada
Serial
[Comunicação]
Descrição
Usado para comunicação entre a placa Arduino e um computador ou outros dispositivos. Todas as placas Arduino possuem pelo menos uma porta serial (também conhecida como UART ou USART): Serial. Ele se comunica nos pinos digitais 0 (RX) e 1 (TX), bem como com o computador via USB. Assim, se você usar essas funções, não poderá usar os pinos 0 e 1 para entrada ou saída digital. 
Você pode usar o monitor serial interno do ambiente do Arduino para se comunicar com uma placa Arduino. Clique no botão do monitor serial na barra de ferramentas e selecione a mesma taxa de transmissão usada na chamada begin().
A comunicação serial nos pinos TX / RX usa níveis lógicos TTL (5V ou 3.3V dependendo da placa). Não conecte esses pinos diretamente a uma porta serial RS232; eles operam a +/- 12V e podem danificar sua placa Arduino.
O Arduino Mega possui três portas seriais adicionais: Serial1nos pinos 19 (RX) e 18 (TX), Serial2nos pinos 17 (RX) e 16 (TX), Serial3nos pinos 15 (RX) e 14 (TX). Para usar esses pinos para se comunicar com seu computador pessoal, você precisará de um adaptador USB para serial adicional, já que eles não estão conectados ao adaptador USB para serial do Mega. Para usá-los para se comunicar com um dispositivo serial TTL externo, conecte o pino TX ao pino RX do seu dispositivo, o RX ao pino TX do seu dispositivo eo solo do seu Mega ao chão do seu dispositivo.
O Arduino DUE possui três portas seriais 3.3V TTL adicionais: Serial1nos pinos 19 (RX) e 18 (TX); Serial2nos pinos 17 (RX) e 16 (TX), Serial3nos pinos 15 (RX) e 14 (TX). Os pinos 0 e 1 também são conectados aos pinos correspondentes do chip Serial USB para TTL ATmega16U2, que é conectado à porta de depuração USB. Além disso, há uma porta USB serial nativa no chip SAM3X, SerialUSB '.
A placa Arduino Leonardo usa Serial1para comunicar via serial TTL (5V) nos pinos 0 (RX) e 1 (TX). Serialestá reservado para comunicação USB CDC. Para mais informações, consulte a página inicial e a página de hardware do Leonardo.
Funções
if (Serial)
Descrição
Indica se a porta serial especificada está pronta.
No Leonardo, if (Serial)indica se a conexão serial USB do CDC está aberta ou não. Para todos os outros casos, inclusive if (Serial1)no Leonardo, isso sempre retornará verdadeiro.
Isso foi introduzido no Arduino IDE 1.0.1.
Sintaxe
Todas as placas:
if (Serial)
Arduino Leonardo específico:
if (Serial1)
Arduino Mega específico:
if (Serial1)
if (Serial2)
if (Serial3)
Parâmetros
Nada
Retorna
bool: retorna verdadeiro se a porta serial especificada estiver disponível. Isso só retornará false se você consultar a conexão serial do CDC USB do Leonardo antes de estar pronto.
Exemplo de código
void setup() {
 // Inicialize serial e espere a porta abrir:
 Serial.begin(9600);
 while (!Serial) {
 ; // aguarde a porta serial se conectar. Necessário para USB nativo
 }
}
void loop() {
 // prosseguir normalmente
}
 Serial.available ()
Descrição
Obtenha o número de bytes (caracteres) disponíveis para leitura na porta serial. Esses são dados que já chegaram e são armazenados no buffer de recebimento serial (que contém 64 bytes). available()herda da classe do utilitário Stream.
Sintaxe
Serial.available()
Arduino Mega apenas:
Serial1.available()
Serial2.available()
Serial3.available()
Parâmetros
Nenhum
Retorna
O número de bytes disponíveis para leitura.
Exemplo de código
O código a seguir retorna um caractere recebido pela porta serial.
int incomingByte = 0;	// for incoming serial data
void setup() {
	Serial.begin(9600);	// opens serial port, sets data rate to 9600 bps
}
void loop() {
	// resposta somente quando você receber dados:
	if (Serial.available() > 0) {
		// lê o byte de entrada:
		incomingByte = Serial.read();
		// Diga o que tem:
		Serial.print("I received: ");
		Serial.println(incomingByte, DEC);
	}
}
Arduino Mega exemplo: Este código envia dados recebidos em uma porta serial do Arduino Mega para outra. Isso pode ser usado, por exemplo, para conectar um dispositivo serial ao computador através da placa Arduino.
void setup() {
 Serial.begin(9600);
 Serial1.begin(9600);
}
void loop() {
 // leitura de porta 0, enviar para porta 1:
 if (Serial.available()) {
 int inByte = Serial.read();
 Serial1.print(inByte, DEC);
 }
 // ler da porta 1, envie para a porta 0:
 if (Serial1.available()) {
 int inByte = Serial1.read();
 Serial.print(inByte, DEC);
 }
}
availableForWrite () 
Serial.availableForWrite ()
Descrição
Obtenha o número de bytes (caracteres) disponíveis para gravação no buffer serial sem bloquear a operação de gravação.
Sintaxe
Serial.availableForWrite()
Arduino Mega apenas:
Serial1.availableForWrite()
Serial2.availableForWrite()
Serial3.availableForWrite()
Parâmetros
Nada
Retorna
O número de bytes disponíveis para gravação.
begin () 
Serial.begin ()
Descrição
Define a taxa de dados em bits por segundo (baud) para transmissão de dados serial. Para se comunicar com o computador, use uma das seguintes taxas: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 ou 115200. Você pode, no entanto, especificar outras taxas - por exemplo, comunicar os pinos 0 e 1 com um componente que requer uma taxa de transmissão específica.
Um segundo argumento opcional configura os dados, a paridade e os bits de parada. O padrão é 8 bits de dados, sem paridade, um bit de parada.
Sintaxe
Serial.begin(speed) Serial.begin(speed, config)
Arduino Mega apenas:
Serial1.begin(speed)
Serial2.begin(speed)
Serial3.begin(speed)
Serial1.begin(speed, config)
Serial2.begin(speed, config)
Serial3.begin(speed, config)
Parâmetros
speed: em bits por segundo (baud) - long
config: define dados, paridade e bits de parada. Valores válidos são
SERIAL_5N1
SERIAL_6N1
SERIAL_7N1
SERIAL_8N1 (o padrão)
SERIAL_5N2
SERIAL_6N2
SERIAL_7N2
SERIAL_8N2
SERIAL_5E1
SERIAL_6E1
SERIAL_7E1
SERIAL_8E1
SERIAL_5E2
SERIAL_6E2
SERIAL_7E2
SERIAL_8E2
SERIAL_5O1
SERIAL_6O1
SERIAL_7O1
SERIAL_8O1
SERIAL_5O2
SERIAL_6O2
SERIAL_7O2
SERIAL_8O2
Retorna
Nada
Exemplo de código
void setup() {
 Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {}
Arduino Mega exemplo:
// Arduino Mega usando todos os quatro de suas portas seriais Arduino Mega usando todos os quatro de suas portas seriais // (Serial, Serial1, Serial2, Serial3),
// com taxas de transmissão diferentes:
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() {}
Obrigado a Jeff Gray pelo mega exemplo
end () 
Serial.end ()
Descrição
Desativa a comunicação serial, permitindo que os pinos RX e TX sejam usados ​​para entrada e saída gerais. Para reativar a comunicação serial, chame Serial.begin () .
Sintaxe
Serial.end()
Arduino Mega apenas:
Serial1.end()
Serial2.end()
Serial3.end()
Parâmetros
Nada
Retorna
Nada
find () 
Serial.find ()
Descrição
Serial.find () lê os dados do buffer serial até que a string de destino de determinado tamanho seja encontrada. A função retorna true se astring de destino for encontrada, false se expirar.
Serial.find () herda da classe do utilitário de fluxo .
Sintaxe
Serial.find(target)
Parâmetros
target : a string para procurar por (char)
Retorna
bool
findUntil () 
Serial.findUntil ()
Descrição
Serial.findUntil() lê dados do buffer serial até que uma string de destino de determinado comprimento ou string de terminador seja encontrada.
A função retorna true se a string de destino for encontrada, false se expirar.
Serial.findUntil()herda da classe do utilitário Stream .
Sintaxe
Serial.findUntil(target, terminal)
Parâmetros
target: a string para procurar (char) terminal: a string do terminal na pesquisa (char)
Retorna
bool
Notas e avisos
flush () 
Serial.flush ()
Descrição
Aguarda pela transmissão de dados seriais de saída para concluir. (Antes do Arduino 1.0, isso removia todos os dados seriais recebidos em buffer.)
flush()herda da classe do utilitário Stream .
Sintaxe
Serial.flush()
Arduino Mega apenas:
Serial1.flush()
Serial2.flush()
Serial3.flush()
Parâmetros
Nada
Retorna
Nada
parseFloat () 
Serial.parseFloat ()
Descrição
Serial.parseFloat()retorna o primeiro número de ponto flutuante válido do buffer Serial. Caracteres que não são dígitos (ou o sinal de menos) são ignorados. parseFloat()é terminado pelo primeiro caractere que não é um número de ponto flutuante.
Serial.parseFloat()herda da classe do utilitário Stream .
Sintaxe
Serial.parseFloat()
Parâmetros
Nada
Retorna
float
parseInt () 
Serial.parseInt ()
Descrição
Procura o próximo inteiro válido na série recebida, stream.parseInt()herda da classe do utilitário Stream .
Em particular:
· Caracteres iniciais que não são dígitos ou um sinal de menos, são ignorados;
· A análise é interrompida quando nenhum caractere foi lido por um valor de tempo limite configurável ou um não dígito é lido;
· Se nenhum dígito válido foi lido quando o tempo limite (consulte Serial.setTimeout ()) ocorrer, será retornado 0;
Sintaxe
Serial.parseInt() Serial.parseInt(char skipChar)
Arduino Mega apenas:
Serial1.parseInt()
Serial2.parseInt()
Serial3.parseInt()
Parâmetros
skipChar: usado para pular o caractere indicado na pesquisa. Usado, por exemplo, para ignorar milhares de divisores.
Retorna
long : o próximo inteiro válido
espiada () 
Serial.peek ()
Descrição
Retorna o próximo byte (caractere) dos dados seriais recebidos sem removê-lo do buffer serial interno. Ou seja, as chamadas sucessivas peek()retornarão o mesmo caractere, assim como a próxima chamada read(). peek()herda da classe do utilitário Stream .
Sintaxe
Serial.peek()
Arduino Mega apenas:
Serial1.peek()
Serial2.peek()
Serial3.peek()
Parâmetros
Nada
Retorna
O primeiro byte de dados seriais recebidos disponíveis (ou -1 se não houver dados disponíveis) - int
print () 
Serial.print ()
Descrição
Imprime dados na porta serial como texto ASCII legível por humanos. Este comando pode ter várias formas. Os números são impressos usando um caractere ASCII para cada dígito. Flutuadores são impressos da mesma forma que os dígitos ASCII, com o padrão de duas casas decimais. Bytes são enviados como um único caractere. Caracteres e strings são enviados como estão. Por exemplo-
· Serial.print(78) gives "78"
· Serial.print(1.23456) gives "1.23"
· Serial.print('N') gives "N"
· Serial.print("Hello world.") gives "Hello world."
Um segundo parâmetro opcional especifica a base (formato) a ser usada; valores permitidos são BIN(binary, or base 2), OCT(octal, or base 8), DEC(decimal, or base 10), HEX(hexadecimal, or base 16). Para números de ponto flutuante, esse parâmetro especifica o número de casas decimais a serem usadas. Por exemplo-
· Serial.print(78, BIN) gives "1001110"
· Serial.print(78, OCT) gives "116"
· Serial.print(78, DEC) gives "78"
· Serial.print(78, HEX) gives "4E"
· Serial.print(1.23456, 0) gives "1"
· Serial.print(1.23456, 2) gives "1.23"
· Serial.print(1.23456, 4) gives "1.2346"
Você pode passar strings baseadas em memória flash para Serial.print () agrupando-as com F () . Por exemplo:
Serial.print(F(“Hello World”))
Para enviar dados sem conversão para sua representação como caracteres, use Serial.write () .
Sintaxe
Serial.print(val)
Serial.print(val, format)
Parâmetros
val: o valor a imprimir - qualquer tipo de dados
Retorna
size_t: print()retorna o número de bytes escritos, embora a leitura desse número seja opcional.
Exemplo de código
/*
Uses a for loop to print numbers in various formats.// Usa um loop para imprimir números em vários formatos.
*/
void setup() {
 Serial.begin(9600); // Abra a porta serial a 9600 bps:
}
void loop() {
 // print labels
 Serial.print("NO FORMAT"); // imprime uma etiqueta
 Serial.print("\t"); // imprime uma guia
 Serial.print("DEC");
 Serial.print("\t");
 Serial.print("HEX");
 Serial.print("\t");
 Serial.print("OCT");
 Serial.print("\t");
 Serial.print("BIN");
 Serial.println(); // retorno após a última etiqueta
 for (int x = 0; x < 64; x++) { // apenas uma parte do gráfico de ASCII, mudança para se adequar
 // imprimi-lo em vários formatos: 
Serial.print(x); // imprimir como um decimal codificado em ASCII - o mesmo que "DEC"
Serial.print("\t\t"); // imprime duas guias para acomodar o comprimento da etiqueta
 Serial.print(x, DEC); // imprimir como um decimal codificado em ASCII	
 Serial.print("\t"); // imprime uma guia
 Serial.print(x, HEX); // imprimir como um hexadecimal codificado em ASCII
 Serial.print("\t"); // imprime uma guia
 Serial.print(x, OCT); // imprimir como um codificado em ASCII octal 
 Serial.print("\t"); // imprime uma guia
 Serial.println(x, BIN); // imprimir como um binário codificado em ASCII
 // em seguida, adiciona o retorno de carro com "println"
 delay(200); // atraso de 200 milissegundos
 }
 Serial.println(); // imprime um outro retorno
}
Notas e avisos
A partir da versão 1.0, a transmissão serial é assíncrona; Serial.print()retornará antes que qualquer caractere seja transmitido.
println ()  
Serial.println ()
Descrição
Imprime dados na porta serial como texto ASCII legível por humanos seguido por um caractere de retorno de carro (ASCII 13 ou '\ r') e um caractere de nova linha (ASCII 10 ou '\ n'). Esse comando usa os mesmos formulários do Serial.print () .
Sintaxe
Serial.println(val)
Serial.println(val, format)
Parâmetros
val: o valor a imprimir - qualquer tipo de dados
format: especifica a base numérica (para tipos de dados integrais) ou o número de casas decimais (para tipos de ponto flutuante)
Retorna
size_t: println()retorna o número de bytes escritos, embora a leitura desse número seja opcional
Exemplo de código
/*
Entrada analógica lê uma entrada analógica no analógico em 0, imprime o valor.
 criado em 24 de março de 2006 by Tom Igoe
 */
int analogValue = 0; // variável para armazenar o valor analógico
void setup() {
 // Abra a porta serial a 9600 bps: Serial.begin(9600);
}
void loop() {
 // ler a entrada analógica no pino 0:
 analogValue = analogRead(0);
 // print it out in many formats:
 Serial.println(analogValue); // imprimir como um decimal codificado em ASCII
 Serial.println(analogValue, DEC); // imprimir como um decimal codificado em ASCII
 Serial.println(analogValue, HEX); // imprimir como um hexadecimal codificado em ASCII
 Serial.println(analogValue, OCT); // imprimir como um codificado em ASCII octal Serial.println(analogValue, BIN); // imprimir como um binário codificado em ASCII
 // Demora 10 milissegundos antes da próxima leitura:
 delay(10)	
read () 
Serial.read ()
Descrição
Lê dados seriais recebidos. read () herda da classe do utilitário Stream .
Sintaxe
Serial.read()
Arduino Mega apenas:
Serial1.read()
Serial2.read()
Serial3.read()
Parâmetros
Nada
Retorna
O primeiro byte de dados seriais recebidos disponíveis (ou -1 se não houver dados disponíveis) - int.
Exemplo de código
int incomingByte = 0; // para entrada de dados serial
void setup() {
 Serial.begin(9600); // Abre a porta serial, define a taxa de dados para 9600 bps

Outros materiais