analogWrite(9, val);
}
Anhang
Für mathematisch Interessierte ist hier die ganze Funktion
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;
}
Anmerkungen und Warnungen
Wie bereits erwähnt, verwendet die map()-Funktion Ganzzahl-Mathematik. Dadurch können Brüche unterdrückt werden.
Zum Beispiel werden Brüche wie 3/2, 4/3, 5/4 trotz ihrer unterschiedlichen tatsächlichen Werte von der Funktion map() als 1 zurückgegeben.


Wenn also für das Projekt genaue Berechnungen erforderlich sind (z. B. eine auf 3 Dezimalstellen genaue Spannung), sollte man map() vermeiden und die Berechnungen manuell im Code implementieren.
Siehe auch


Sprache
Funktionen
Variablen
Struktur
Bibliotheken
IoT Cloud API
Glossar
        Der Arduino-Referenztext ist lizenziert unter der Creative Commons Attribution-Share Alike 3.0 Lizenz.

    Findest du etwas, das verbessert werden kann? Über GitHub kannst du Korrekturen und neue Dokumentation vorschlagen.
    Zweifel, wie man Github benutzt? Erfahre in diesem Tutorial alles, was du wissen musst.

Last Revision: Searching...
Last Build: 2023/06/30
Bearbeite diese Seite
Reference
            >  Language
            >  Functions
            >  Math
            > Sqrt

sqrt()
          [Math]

Berechnet die Quadratwurzel einer Zahl.
Beschreibung
Syntax
sqrt(x)


Beschreibung
Syntax
sqrt(x)
Parameter
x: Die Zahl. Erlaubte Datentypen: Beliebiger Datentyp.
Rückgabewert
Quadratwurzel der Zahl. Datentyp: double.
Siehe auch


Sprache
Funktionen
Variablen
Struktur
Bibliotheken
IoT Cloud API
Glossar
        Der Arduino-Referenztext ist lizenziert unter der Creative Commons Attribution-Share Alike 3.0 Lizenz.

    Findest du etwas, das verbessert werden kann? Über GitHub kannst du Korrekturen und neue Dokumentation vorschlagen.
    Zweifel, wie man Github benutzt? Erfahre in diesem Tutorial alles, was du wissen musst.

Last Revision: Searching...
Last Build: 2023/06/30
Bearbeite diese Seite
Reference
            >  Language
            >  Functions
            >  Trigonometry
            > Cos

cos()
          [Trigonometry]

Beschreibung


cos()
          [Trigonometry]

Beschreibung
Berechnet den Cosinus eines Winkels (Im Bogenmaß). Das Ergebnis liegt zwischen -1 und 1.
Syntax
cos(rad)
Parameter
rad: Der Winkel im Bogenmaß. Erlaubte Datentypen: float.
Rückgabewert
Den Cosinus des Winkels. Datentyp: double.
Siehe auch
SPRACHE float
SPRACHE double


Sprache
Funktionen
Variablen
Struktur
Bibliotheken
IoT Cloud API
Glossar
        Der Arduino-Referenztext ist lizenziert unter der Creative Commons Attribution-Share Alike 3.0 Lizenz.

    Findest du etwas, das verbessert werden kann? Über GitHub kannst du Korrekturen und neue Dokumentation vorschlagen.
    Zweifel, wie man Github benutzt? Erfahre in diesem Tutorial alles, was du wissen musst.

Last Revision: Searching...
Last Build: 2023/06/30
Bearbeite diese Seite
Reference
            >  Language
            >  Functions
            >  Trigonometry
            > Tan

tan()
          [Trigonometry]

Beschreibung


tan()
          [Trigonometry]

Beschreibung
Berechnet den Tangens eines Winkels (Im Bogenmaß). Das Ergebnis liegt zwischen undendlich und negativ unendlich.
Syntax
tan(rad)
Parameter
rad: Der Winkel im Bogenmaß. Erlaubte Datentypen: float.
Rückgabewert
Den Tangens des Winkels. Datentyp: double.
Siehe auch
SPRACHE float
SPRACHE double


Sprache
Funktionen
Variablen
Struktur
Bibliotheken
IoT Cloud API
Glossar
        Der Arduino-Referenztext ist lizenziert unter der Creative Commons Attribution-Share Alike 3.0 Lizenz.

    Findest du etwas, das verbessert werden kann? Über GitHub kannst du Korrekturen und neue Dokumentation vorschlagen.
    Zweifel, wie man Github benutzt? Erfahre in diesem Tutorial alles, was du wissen musst.

Last Revision: Searching...
Last Build: 2023/06/30
Bearbeite diese Seite
Reference
            >  Language
            >  Functions
            >  Trigonometry
            > Sin

sin()
          [Trigonometry]

Beschreibung


sin()
          [Trigonometry]

Beschreibung
Berechnet den Sinus eines Winkels (Im Bogenmaß). Das Ergebnis liegt zwischen -1 und 1.
Syntax
sin(rad)
Parameter
rad: Der Winkel im Bogenmaß. Erlaubte Datentypen: float.
Rückgabewert
Den Sinus des Winkels. Datentyp: double.
Siehe auch
SPRACHE float
SPRACHE double


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Documentação de Referência da Linguagem Arduino
        A linguagem de programação do Arduino pode ser dividida em três partes principais: estruturas, valores (variáveis e constantes) e funções.

Funções
Para controlar a placa Arduino e realizar computações.
Entradas e Saídas Digitais
                digitalRead()

                digitalWrite()


digitalRead()

                digitalWrite()

                pinMode()

Entradas e Saídas Analógicas
                analogRead()

                analogReference()

                analogWrite()

Apenas Zero, Due e Família MKR
                analogReadResolution()

                analogWriteResolution()

Entradas e Saídas Avançadas
                noTone()

                pulseIn()

                pulseInLong()

                shiftIn()

                shiftOut()

                tone()

Funções Temporizadoras
                delay()

                delayMicroseconds()

                micros()

                millis()


micros()

                millis()

Funções Matemáticas
                abs()

                constrain()

                map()

                max()

                min()

                pow()

                sq()

                sqrt()

Funções Trigonométricas
                cos()

                sin()

                tan()

Caracteres
                isAlpha()

                isAlphaNumeric()

                isAscii()

                isControl()

                isDigit()

                isGraph()

                isHexadecimalDigit()

                isLowerCase()


isHexadecimalDigit()

                isLowerCase()

                isPrintable()

                isPunct()

                isSpace()

                isUpperCase()

                isWhitespace()

Números Aleatórios
                random()

                randomSeed()

Bits e Bytes
                bit()

                bitClear()

                bitRead()

                bitSet()

                bitWrite()

                highByte()

                lowByte()

Interrupções Externas
                attachInterrupt()

                detachInterrupt()

Interrupções
                interrupts()


Interrupções
                interrupts()

                noInterrupts()

Comunicação
                Serial

                Stream

USB
                Keyboard

                Mouse

Variáveis
Tipos de dados e constantes da linguagem Arduino.
Constantes
HIGH | LOW
INPUT | OUTPUT | INPUT_PULLUP
LED_BUILTIN
true | false
                Constantes de Ponto Flutuante

                Constantes Inteiras

Conversão
                byte()

                char()

                float()

                int()

                long()

                word()

Tipos de Dados
                bool

                boolean


Tipos de Dados
                bool

                boolean

                byte

                char

                double

                float

                int

                long

                short

                size_t

                string

                String()

                unsigned char

                unsigned int

                unsigned long

                vetor

                void

                word

Escopo de Variáveis e Qualificadores
                const

                escopo

                static

                volatile

Utilitários
                PROGMEM

                sizeof()

Estruturas


PROGMEM

                sizeof()

Estruturas
Os elementos da linguagem Arduino (C++).
Sketch
                loop()

                setup()

Estruturas de Controle
                break

                continue

                do...while

                else

                for

                goto

                if

                return

                switch...case

                while

Outros Elementos da Sintaxe
                #define

                  (define)

                #include

                  (include)

                /* */

                  (comentário em bloco)

                //


(comentário em bloco)

                //

                  (comentário)

                ;

                  (ponto e vírgula)

                {}

                  (chaves)

Operadores Aritméticos
                %

                  (resto)

                *

                  (multiplicação)

                +

                  (adição)

                -

                  (subtração)

                /

                  (divisão)

                =

                  (operador de atribuição)

Operadores de Comparação
                !=

                  (diferente de)

                <


(diferente de)

                <

                  (menor que)

                <=

                  (menor que ou igual a)

                ==

                  (igual a)

                >

                  (maior que)

                >=

                  (maior que ou igual a)

Operadores Boleanos
                !

                  (NÃO lógico)

                &&

                  (E lógico)

                ||

                  (OU lógico)

Operadores para Ponteiros
                &

                  (referência)

                *

                  (desreferência)


*

                  (desreferência)

Operadores Bitwise
                &

                  (E)

                <<

                  (deslocamento à esquerda)

                >>

                  (deslocamento à direita)

                ^

                  (OU EXCLUSIVO)

                |

                  (OU)

                ~

                  (NÃO)

Operadores de Atribuição Composta
                %=

                  (compound remainder)

                &=

                  (atribuição por e)

                *=

                  (atribuição por multiplicação)

                ++

                  (incremento)


++

                  (incremento)

                +=

                  (atribuição por adição)

                --

                  (decremento)

                -=

                  (atribuição por subtração)

                /=

                  (atribuição por divisão)

                ^=

                  (atribuição por ou exclusivo)

                |=

                  (atribuição por ou)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Further syntax
            > Include

#include
          [Further Syntax]

Descrição


> Include

#include
          [Further Syntax]

Descrição
A diretiva #include é usada para incluir bibliotecas externas ao seu sketch. Isso dá acesso a um grande número de bibliotecas padrão da linguagem C (grupos de funções prontas), e também bibliotecas escritas especialmente para a linguagem Arduino.
A referência principal para bibliotecas C AVR C (AVR é a referência dos chips Microchip (previamente Atmel) utilizados em muitas placas Arduino) pode ser encontrada aqui.
Note que #include, similarmente a #define, não é terminada com um ponto e vírgula, e o compilador irá mostrar  mensagens de erro enigmáticas se você adicionar um.
Código de Exemplo


Código de Exemplo
Esse exemplo inclui a bilbioteca Servo para que suas funções possam ser usadas para controlar um servomotor.
#include <Servo.h>
Servo meuservo;  // cria um objeto do tipo Servo para controlar um servomotor
void setup() {
  meuservo.attach(9);  // associa o motor no pino 9 ao objeto meuservo
}
void loop() {
  for (int pos = 0; pos <= 180; pos += 1) { // vai de 0 graus a 180 graus
    // em passos de 1 grau
    meuservo.write(pos);             // diz ao servo para ir para a posição na variável 'pos'
    delay(15);                       // espera 15ms para que o servo chegue a posição
  }


}
  for (int pos = 180; pos >= 0; pos -= 1) { // // vai de 180 graus a 0 graus
    meuservo.write(pos);             // diz ao servo para ir para a posição na variável 'pos'
    delay(15);                       // espera 15ms para que o servo chegue a posição
  }
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Further syntax
            > Define

#define
          [Further Syntax]

Descrição


> Define

#define
          [Further Syntax]

Descrição
#define é uma diretiva muito útil da linguagem C++ que  permite ao programador dar um nome a um valor constante antes de o programa ser compilado. Constantes definidas no arduino não ocupam nenhum espaço na memória de programa do chip. O compilador irá substituir referências a essas constantes pelo valor definido no tempo de compilação.
Isso pode ter alguns efeitos colaterais desagradáveis no entanto, por exemplo, se o nome de uma constante que foi definida com #defined é incluído em outra constante ou nome de uma variável. Nesse caso o texto seria trocado pelo número  (ou texto) definido com #define.


Em geral, a palavra-chave const é recomendada para se definir constantes e deveria ser usada em vez de #define.
Sintaxe
#define nomeDaConstante valor
Note que o # é necessário.
Código de Exemplo
#define pinoLED 3
// O compilador irá substituir qualquer menção de pinoLED com o valor 3 no tempo de compilação.
Notas e Advertências
Não há ponto e vírgula após a diretiva #define. Se você incluir uma, o compilador irá acusar erros.
#define pinoLED 3;  // isso é inválido
Similarmente, incluir sinal de igual após #define também resultará em erros
#define pinoLED = 3  // também é inválido
Ver Também
LINGUAGEM palavra-chave const
LINGUAGEM Constantes


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Further syntax
            > Blockcomment

/* */
          [Further Syntax]

Descrição


/* */
          [Further Syntax]

Descrição
Comentários são textos no programa que são usadas para informar você e a outros a forma como o programa funciona. Eles são ignorados pelo compilador, e não fazem parte do arquivo gravado no chip, então não ocupam nenhum espaço na memória flash do microcontrolador. O  propósito dos comentários lhe ajudar a entender (ou lembrar) como funcionam partes do seu código, ou informar a outros também como o seu programa funciona.


O começo de um comentário em bloco ou comentário de múltiplas linhas é marcado pelo símbolo /* e o símbolo */ marca o seu final. Esse tipo de comentário é chamado assim pois pode se estender por mais de uma linha; um vez que o compilador encontre o símbolo /*, ele ignora o texto seguinte até encontrar um */.
Código de Exemplo
/* Esse é um comentário válido */
/*
  Blink
  Acende um LED por um segundo, depois apaga por um segundo, repetidamente.
  Esse código encontra-se um domínio público.
  (outro comentário válido)
*/
/*
  if (gwb == 0) { // Comentários de única linha não permitidos dentro de um comentário em bloco


x = 3;          /* Mas outro comentário de múltiplas linhas, não. Esse comentário é inválido */
}
// Não esqueça o símbolo para "fechar" o comentário - deve estar balanceado!
*/
Notas e Advertências
Quando experimentar com código, "comentar" partes de seu programa é uma forma conveniente de remover partes problemáticas do seu código tempoariamente. Isso mantém as linhas de código, mas as transforma em comentários, se forma que o compilador apenas as ignora. Isso pode ser útil quando você estiver procurando um problema, ou quando um programa se recusa a compilar e o erro de compilação é enigmático ou inútil.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Further syntax
            > Curlybraces

{}
          [Further Syntax]

Descrição


{}
          [Further Syntax]

Descrição
As chaves são uma característica importante da linguagem C++. Elas são usadas em diversas estruturas diferentes, mostradas abaixo, e isso pode as vezes ser confuso para iniciantes.
Uma chave { deve ser sempre fechada por outra chave }. Essa é uma condição que é frequentemente chamada de as chaves estarem balanceadas. A IDE Arduino inclui uma forma conveniente de checar o balanço de duas chaves. Apenas escolha uma chave, ou até mesmo clique no ponto de inserção imediatamente após a chave, se a outra chave do par será destacada.


Chaves desbalanceadas podem frequentemente resultar em erros enigmáticos, que podem as vezes ser difíceis de se encontrar em um programa longo. Por causa de seu uso variado, as chaves são incrivelmente importantes para o programa e mover uma chave pode afetar dramaticamente o funcionamento de um programa.
Código de Exemplo
Os usos principais das chaves são listados nos exemplos abaixo.
Funções
void minhafuncao(tipo argumento) {
  // comando(s)
}
Loops
while (expressão boolena) {
  // comando(s)
}
do {
  // comando(s)
} while (expressão boolena);
for (inicialização; condição; incremento) {
  // comando(s)
}
Estruturas Condicionais
if (expressão boolena) {


}
Estruturas Condicionais
if (expressão boolena) {
  // comando(s)
}
else if (expressão boolena) {
  // comando(s)
}
else {
  // comando(s)
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Further syntax
            > Semicolon

;
          [Further Syntax]

Descrição
Usado para encerrar um comando.
Código de Exemplo
int a = 13;


Código de Exemplo
int a = 13;
Notas e Advertências
Se esquecer de encerar uma linha com um ponto e vírgula irá resultar em um erro de compilação. A mensagem de erro pode ser óbvia, e mencionar a falta de um ponto e vírgula, mas pode também não mencionar a falta do mesmo. Se um erro de compilação incompreensível ou aparentemente ilógico aparecer, uma das primeiras coisas a se checar é a falta de um ponto e vírgula no código anterior a linha mencionada na mensagem de erro do compilador.
Ver também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Further syntax
            > Singlelinecomment

//
          [Further Syntax]

Descrição


//
          [Further Syntax]

Descrição
Comentários são textos no programa que são usadas para informar você e a outros a forma como o programa funciona. Eles são ignorados pelo compilador, e não fazem parte do arquivo gravado no chip, então não ocupam nenhum espaço na memória flash do microcontrolador. O propósito dos comentários é lhe ajudar a entender (ou lembrar) como funcionam partes do seu código, ou informar a outros também como o seu programa funciona.
Um comentário de uma só linha começa com // (duas barras adjacentes). Esse tipo de comentário termina automaticamente no final da linha. O que quer que seja que estiver após // até o final da linha será ignorado pelo compilador.
Código de Exemplo
Há duas formas diferentes de se usar um comentário de uma só linha:


Há duas formas diferentes de se usar um comentário de uma só linha:
// O pino 13 tem um LED conectado na maioria das placas Arduino.
// Dá um nome para esse LED:
int led = 13;
digitalWrite(led, HIGH);  // acendo o LED (HIGH é o nível da tensão)
Notas e Advertências
Quando experimentar com código, "comentar" partes de seu programa é uma forma conveniente de remover partes problemáticas do seu código temporariamente. Isso mantém as linhas de código, mas as transforma em comentários, se forma que o compilador apenas as ignora. Isso pode ser útil quando você estiver procurando um problema, ou quando um programa se recusa a compilar e o erro de compilação é enigmático ou inútil.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Comparison operators
            > Lessthanorequalto

<=
          [Comparison Operators]

Descrição


<=
          [Comparison Operators]

Descrição
Compara a variável à esquerda com o valor ou variável à direita do operador. Retorna verdadeiro (true) quando o operando à esquerda é menor ou igual ao operando à direita. Por favor note que você pode comparar variáveis de tipos de dados diferentes, mas isso pode gerar resultados imprevisíveis. Por isso é recomendado comparar variáveis do mesmo tipo de dados incluindo o atributo signed/unsigned.
Sintaxe
x <= y; // é verdadeiro se x é menor ou igual a y e é falso se x é maior que y
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long


Código de Exemplo
if (x <= y) { // testa se x é menor que ou igual a y
  // faz algo apenas se o resultado da comparação é verdadeiro
}
Notas e Advertências
Números positivos são maiores que números negativos.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Comparison operators
            > Lessthan

<
          [Comparison Operators]

Descrição


<
          [Comparison Operators]

Descrição
Compara a variável à esquerda com o valor ou variável à direita do operador. Retorna verdadeiro (true) quando o operando à esquerda é menor que o operando à direita. Por favor note que você pode comparar variáveis de tipos de dados diferentes, mas isso pode gerar resultados imprevisíveis. Por isso é recomendado comparar variáveis do mesmo tipo de dados incluindo o atributo signed/unsigned.
Sintaxe
x < y;  // é verdadeiro se x é menor que y e é falso se x é igual ou maior que y
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long


Código de Exemplo
if (x < y) {  // testa se x é menor que y
  // faz algo apenas se o resultado da comparação é verdadeiro
}
Notas e Advertências
Números positivos são maiores que números negativos.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Comparison operators
            > Equalto

==
          [Comparison Operators]

Descrição


> Equalto

==
          [Comparison Operators]

Descrição
Compara a variável à esquerda com o valor ou variável à direita do operador. Retorna verdadeiro (true) quando os dois operandos são iguais. Por favor note que você pode comparar variáveis de tipos de dados diferentes, mas isso pode gerar resultados imprevisíveis. Por isso é recomendado comparar variáveis do mesmo tipo de dados incluindo o atributo signed/unsigned.
Sintaxe
x == y; // é verdadeiro se x é igual a y e é falso se x não é igual a y
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo


Código de Exemplo
if (x == y) { // testa se x é igual a y
  // faz algo apenas se o resultado da comparação é verdadeiro
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Comparison operators
            > Greaterthan

>
          [Comparison Operators]

Descrição


> Greaterthan

>
          [Comparison Operators]

Descrição
Compara a variável à esquerda com o valor ou variável à direita do operador. Retorna verdadeiro (true) quando o operando à esquerda é maior que o operando à direita. Por favor note que você pode comparar variáveis de tipos de dados diferentes, mas isso pode gerar resultados imprevisíveis. Por isso é recomendado comparar variáveis do mesmo tipo de dados incluindo o atributo signed/unsigned.
Sintaxe
x > y;  // é verdadeiro se x é maior que y e é falso se x é igual ou menor que y
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long


y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
if (x > y) {  // testa se x é maior que y
  // faz algo apenas se o resultado da comparação é verdadeiro
}
Notas e Advertências
Números positivos são maiores que números negativos.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Comparison operators
            > Greaterthanorequalto

>=
          [Comparison Operators]

Descrição


>=
          [Comparison Operators]

Descrição
Compara a variável à esquerda com o valor ou variável à direita do operador. Retorna verdadeiro (true) quando o operando à esquerda é maior ou igual ao operando à direita. Por favor note que você pode comparar variáveis de tipos de dados diferentes, mas isso pode gerar resultados imprevisíveis. Por isso é recomendado comparar variáveis do mesmo tipo de dados incluindo o atributo signed/unsigned.
Sintaxe
x >= y; // é verdadeiro se x é maior ou igual a y e é falso se x é menor que y
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long


Código de Exemplo
if (x >= y) {  // testa se x é maior que ou igual a y
  // faz algo apenas se o resultado da comparação é verdadeiro
}
Notas e Advertências
Números positivos são maiores que números negativos.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Comparison operators
            > Notequalto

!=
          [Comparison Operators]

Descrição


!=
          [Comparison Operators]

Descrição
Compara a variável à esquerda com o valor ou variável à direita do operador. Retorna verdadeiro (true) quando os operandos não são iguais. Por favor note que você pode comparar variáveis de tipos de dados diferentes, mas isso pode gerar resultados imprevisíveis. Por isso é recomendado comparar variáveis do mesmo tipo de dados incluindo o atributo signed/unsigned.
Sintaxe
x != y; // é falso se x é igual a y e é verdadeiro se x não é igual a y
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo


Código de Exemplo
if (x != y) { // testa se x é diferente de y
  // faz algo apenas se o resultado da comparação é verdadeiro
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Pointer access operators
            > Dereference

*
          [Pointer Access Operators]

Descrição


*
          [Pointer Access Operators]

Descrição
Desreferência é uma das características da linguagem C para uso especificamente com ponteiros. O operador * (asterisco) é utilizado para esse propósito. Se p é um ponteiro, então *p representa o valor contido no endereço apontado por p.
Código de Exemplo
int *p;         // declara um ponteiro para uma variável do tipo int
int i = 5;
int resultado = 0;
p = &i;         // agora 'p' contém o endereço de 'i'
resultado = *p; // 'resultado' recebe o valor contido no endereço apontado por 'p'
                // isto é, recebe o valor de 'i', que é 5
Notas e Advertências


Notas e Advertências
Ponteiros são um dos assuntos mais complicados para iniciantes na linguagem C aprenderem, e é possível escrever a grande maioria dos sketches Arduino sem nunca encontrar ponteiros. No entanto, para manipular certas estruturas de dados, o uso de ponteiros pode simplificar o código. O conhecimento da manipulação de ponteiros é vantajoso de se ter no seu kit de ferramentas.
Ver Também
DEFINIÇÃO Ponteiros


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Pointer access operators
            > Reference

&
          [Pointer Access Operators]

Descrição


> Reference

&
          [Pointer Access Operators]

Descrição
Referência é uma das características da linguagem C para uso especificamente com ponteiros. O operador & ('e' comercial ou ampersand) é utilizado para esse propósito. Se x é uma variável, então &x representa o endereço da variável x.
Código de Exemplo
int *p;         // declara um ponteiro para uma variável do tipo int
int i = 5, resultado = 0;
p = &i;         // agora 'p' contém o endereço de 'i'
resultado = *p; // 'resultado' recebe o valor contido no endereço apontado por 'p'
                // isto é, recebe o valor de 'i', que é 5
Notas e Advertências


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compounddivision

/=
          [Compound Operators]

Descrição


> Compounddivision

/=
          [Compound Operators]

Descrição
Essa é uma abreviação conveniente para realizar a divisão de uma variável com outra variável ou constante.
Sintaxe
x /= y; // equivalente a expressão x = x / y;
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante diferente de zero. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
x = 2;
x /= 2; // x agora contém 1
Ver Também
LINGUAGEM Divisão comum


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundmultiplication

*=
          [Compound Operators]

Descrição


*=
          [Compound Operators]

Descrição
Essa é uma abreviação conveniente para realizar a multiplicação de uma variável com outra variável ou constante.
Sintaxe
x *= y; // equivalente a expressão x = x * y;
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
x = 2;
x *= 2; // x agora contém 4
Ver Também
LINGUAGEM Multiplicação comum


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundremainder

%=
          [Compound Operators]

Descrição


> Compoundremainder

%=
          [Compound Operators]

Descrição
Esse é um atalho conveniente para calcular o resto quando um inteiro é dividido por outro e atribuí-lo de volta a variável na qual foi feita o cálculo.
Sintaxe
x %= divisor;   // equivalente a expressão x = x % divisor;
Parâmetros
x: variável. Tipos de dados permitidos: int
divisor: variável or constante não zero. Tipos de dados permitidos: int
Código de Exemplo
int x = 7;
x %= 5;    // x agora contém 2
Notas e Advertências
O operador de atribuição de resto não funciona em floats.
Se o primeiro operando é negativo, o resultado é negativo (ou zero).


Se o primeiro operando é negativo, o resultado é negativo (ou zero).
Portanto, o resultado de x %= 10 nem sempre estará entre 0 e 9 se x pode ser negativo.
Ver Também
LANGUAGE Remainder


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundbitwiseor

|=
          [Compound Operators]

Descrição


|=
          [Compound Operators]

Descrição
O operador de atribuição composta bitwise OU  |= é frequentemente usado com uma variável e uma constante para "setar" (mudar pra 1) bits particulares em uma variável.
Uma revisão do operador bitwise OU |:
0  0  1  1    operando1
0  1  0  1    operando2
----------
0  1  1  1    (operando1 | operando2) - resultado retornado
Sintaxe
x |= y; // equivalente a x = x | y;
Parâmetros
x: variável. Tipos de dados permitidos: char, int, long
y: variável ou constante. Tipos de dados permitidos: char, int, long
Código de Exemplo


Código de Exemplo
Bits que são operados através do OU com 0 não são mudados, então se meuByte é uma variável byte:
meuByte | B00000000 = meuByte;
Bits que são operados através do OU com 1 são mudados para 1, então:
meuByte | B11111111 = B11111111;
Notas e Advertências
Porque estamos lidando com bits em um operador bitwise, é conveniente usar o modificador binário com constantes na representação. Os números ainda são os mesmos em outras representações, só não são tão fáceis de entender. Também, B00000000 é mostrado para claridade, mas zero em qualquer outro formato é zero.


Consequentemente - para setar os bits 0 e 1 de um variável, ao mesmo tempo deixando o resto da variável intocado, useo o operador de atribuição por bitwise OU  (|=) com a constante B00000011
1  0  1  0  1  0  1  0    variável
0  0  0  0  0  0  1  1    máscara
----------------------
1  0  1  0  1  0  1  1
bits intactos
                 bits mudados para 1
Abaixo a mesma representação com os bits da variável substituidos pelo símbolo x
x  x  x  x  x  x  x  x    variável


x  x  x  x  x  x  x  x    variável
0  0  0  0  0  0  1  1    máscara
----------------------
x  x  x  x  x  x  1  1
bits intactos
                 bits mudados para 1
Então:
meuByte = B10101010;
meuByte |= B00000011; // igual a B10101011;
Ver Também
LINGUAGEM | Bitwise OU


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundbitwiseand

&=
          [Compound Operators]

Descrição


&=
          [Compound Operators]

Descrição
O operador de atribuição composta E &= é frequentemente usado com uma variável e uma constante para forçar detreminados bits de uma variável para 0. Isso é  frequentemente chamado de "limpar" ou "resetar" os bits.
Uma revisão do operator bitwise E &:
0  0  1  1    operando1
0  1  0  1    operando2
----------
0  0  0  1    (operando1 & operando2) - resultado retornado
Sintaxe
x &= y; // equivalente a x = x & y;
Parâmetros
x: variável. Tipos de dados permitidos: char, int, long


x: variável. Tipos de dados permitidos: char, int, long
y: variável ou constante. Tipos de dados permitidos: char, int, long
Código de Exemplo
Bits que são operados através do E com 0 são limpos, então se meuByte é uma variável byte:,
meuByte & B00000000 = 0;
Bits que são operados através do E com 1 não são mudados, então se meuByte é uma variável byte:
meuByte & B11111111 = meuByte;
Notas e Advertências


meuByte & B11111111 = meuByte;
Notas e Advertências
Porque estamos lidando com bits em um operador bitwise, é conveniente usar o modificador binário com constantes na representação. Os números ainda são os mesmos em outras representações, só não são tão fáceis de entender. Também, B00000000 é mostrado para claridade, mas zero em qualquer outro formato é zero.
Consequentemente - para limpar os bits 0 e 1 de um variável, ao mesmo tempo deixando o resto da variável intocado, useo o operador de atribuição por bitwise E  (&=) com a constante B11111100
1  0  1  0  1  0  1  0    variável


1  1  1  1  1  1  0  0    máscara
----------------------
1  0  1  0  1  0  0  0
bits intactos
                 bits limpos
Abaixo a mesma representação com os bits da variável substituidos pelo símbolo x
x  x  x  x  x  x  x  x    variável
1  1  1  1  1  1  0  0    máscara
----------------------
x  x  x  x  x  x  0  0
bits intactos
                 bits limpos
Então:
myByte = B10101010;
myByte &= B11111100;  // resulta em B10101000
Ver Também


Ver Também
LINGUAGEM & Bitwise E


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Increment

++
          [Compound Operators]

Descrição
Incrementa o valor de uma variável em 1.
Sintaxe


Descrição
Incrementa o valor de uma variável em 1.
Sintaxe
x++;  // incrementa x em um e retorna o valor antigo de x
++x;  // incrementa x em um e retorna o novo valor de x
Parâmetros
x: variável. Tipos de dados permitidos: integer, long (possivelmente unsigned)
Retorna
O valor original ou incrementado da variável, que depende se o operador está à esquerda ou direita da variável.
Código de Exemplo
x = 2;
y = ++x;  // x agora contém 3, y contém 3
y = x++;  // x contém 4, mas y ainda contém 3
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundsubtraction

-=
          [Compound Operators]

Descrição


-=
          [Compound Operators]

Descrição
Essa é uma abreviação conveniente para realizar a subtração de uma variável com outra variável ou constante.
Sintaxe
x -= y; // equivalente a expressão x = x - y;
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
x = 20;
x -= 2; // x agora contém 18
Ver Também
LINGUAGEM Subtração comum


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundbitwisexor

^=
          [Compound Operators]

Descrição


^=
          [Compound Operators]

Descrição
O operador de atribuição composta bitwise OU EXCLUSIVO ^= é frequentemente usado com uma variável e uma constante para "inverter" (ou trocar) bits particulares de uma variável.
Uma revisão do operador bitwise OU EXCLUSIVO ^:
0  0  1  1    operando1
0  1  0  1    operando2
----------
0  1  1  0    (operando1 ^ operando2) - resultado retornado
Sintaxe
x ^= y; // equivalente a x = x ^ y;
Parâmetros
x: variável. Tipos de dados permitidos: char, int, long
y: variável ou constante. Tipos de dados permitidos: char, int, long


Código de Exemplo
Bits que são operados através do OU OEXCLUSIVO com 0 não são mudados, então se meuByte é uma variável byte:
meuByte ^ B00000000 = meuByte;
Bits que são operados através do OU EXCLUSIVO com 1 são invertidos, então:
meuByte ^ B11111111 = ~meuByte;
Notas e Advertências
Porque estamos lidando com bits em um operador bitwise, é conveniente usar o modificador binário com constantes na representação. Os números ainda são os mesmos em outras representações, só não são tão fáceis de entender. Também, B00000000 é mostrado para claridade, mas zero em qualquer outro formato é zero.


Consequentemente, para inverter os bits 0 e 1 de um variável ao mesmo tempo, deixando o resto da variável intocado, use o operador de atribuição por bitwise OU EXCLUSIVO (^=) com a constante B00000011
1  0  1  0  1  0  1  0    variável
0  0  0  0  0  0  1  1    máscara
----------------------
1  0  1  0  1  0  0  1
bits intactos
                 bits invertidos
Abaixo a mesma representação com os bits da variável substituidos pelo símbolo x. ~x representa o complemento de x.
x  x  x  x  x  x  x  x    variável


x  x  x  x  x  x  x  x    variável
0  0  0  0  0  0  1  1    máscara
----------------------
x  x  x  x  x  x ~x ~x
bits intactos
                 bits invertidos
Então:
myByte = B10101010;
myByte ^= B00000011 == B10101001;
Ver Também
LINGUAGEM ^ OU EXCLUSIVO Bitwise


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Decrement

--
          [Compound Operators]

Descrição
Decrementa o valor de uma variável em 1.
Sintaxe


Decrementa o valor de uma variável em 1.
Sintaxe
x--;  // decrementa x em um e retorna o valor antigo de x
--x;  // decrementa x em um e retorna o novo valor de x
Parâmetros
x: variável. Tipos de dados permitidos: integer, long (possibly unsigned)
Retorna
O valor original ou decrementado da variável, que depende se o operador está à esquerda ou direita da variável.
Código de Exemplo
x = 2;
y = --x;  // x agora contém 1, y contém 1
y = x--;  // x contém 0, mas y ainda contém 1
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Compound operators
            > Compoundaddition

+=
          [Compound Operators]

Descrição


+=
          [Compound Operators]

Descrição
Essa é uma abreviação conveniente para realizar a adição de uma variável com outra variável ou constante.
Sintaxe
x += y; // equivalente a expressão x = x + y;
Parâmetros
x: variável. Tipos de dados permitidos: int, float, double, byte, short, long
y: variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
x = 2;
x += 4; // x agora contém 6
Ver Também
LINGUAGEM Adição comum


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Arithmetic operators
            > Modulo

%
          [Arithmetic Operators]

Descrição


%
          [Arithmetic Operators]

Descrição
A operação resto calcula o resto da divisão de um inteiro por outro. Esse operador também pode ser chamado de módulo. Apesar do nome, não confunda o operador módulo (%) da computação com o módulo da matemática ( |x| ), que na linguagem arduino é calculado através da função abs(). Esse operador é útil para manter uma variável dentro de um intervalo (ex. o tamanho de um vetor). O símbolo % (porcentagem) é usado para realizar a operação resto.
Sintaxe
resto = dividendo % divisor;
Parâmetros
resto : variável. Tipos de dados permitidos: int, float, double
dividendo : variável ou constante. Tipos de dados permitidos: int


dividendo : variável ou constante. Tipos de dados permitidos: int
divisor : variável ou constante diferente de zero. Tipos de dados permitidos: int
Código de Exemplo
int x = 0;
x = 7 % 5;    // x agora contém 2
x = 9 % 5;    // x agora contém 4
x = 5 % 5;    // x agora contém 0
x = 4 % 5;    // x agora contém 4
/* Atualiza um valor do vetor a cada vez em um loop */
int values[10];
int i = 0;
void setup() {}
void loop()
{
  values[i] = analogRead(0);


void loop()
{
  values[i] = analogRead(0);
  i = (i + 1) % 10;   // o operador módulo faz a variável i "rolar" pro próximo valor
}
Notas e Advertências
O operador resto não funciona em floats.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Arithmetic operators
            > Addition

+
          [Arithmetic Operators]

Descrição


> Addition

+
          [Arithmetic Operators]

Descrição
Adição é uma das quatro operações ariméticas fundamentais. O operador + (mais) opera em dois operandos para produzir a soma dos mesmos.
Sintaxe
soma = operando1 + operando2;
Parâmetros
soma : variável. Tipos de dados permitidos: int, float, double, byte, short, long
operando1 : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
operando2 : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
int a = 5;
int b = 10;
int c = 0;


int b = 10;
int c = 0;
c = a + b;  // A variável 'c' recebe o valor 15 depois que essa operação é executada
Notas e Advertências
O operação de adição pode causar overflow se o resultado é maior que o que pode ser armazenado no tipo de dado (ex. adicionar 1 a um int com valor 32,767 resulta em -32,768).
Se um dos números (operandos) é do tipo float ou double, a matemática de ponto flutuante será usada no cálculo.
Se os operandos são do tipo de dado float ou double e a variável que armazena a soma é int, então apenas a parte inteira é salva no resultado e e a parte racional é perdida.
float a = 5.5;
float b = 6.6;


float a = 5.5;
float b = 6.6;
int c = 0;
c = a + b;  // a variável 'c' guarda o valor 12 apenas, em vez de 12.1
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Arithmetic operators
            > Assignment

=
          [Arithmetic Operators]

Descrição


> Assignment

=
          [Arithmetic Operators]

Descrição
O sinal de igual = na linguagem de programação C++ é chamado operador de atribuição. Seu significado é diferente das aulas de matemática, onde ele indica uma equação ou igualdade. O operador de atribuição indica ao microcontrolador que compute qualquer valor ou expressão que estiver à direita do sinal de igual, e o armazene na variável à esquerda do sinal de igual.
Código de Exemplo
int sensVal;              // declara uma variável inteira chamada sensVal
sensVal = analogRead(0);  // armazena a tensão (digitalizada) do pino analógico 0 em SensVal
Notas e Advertências


Notas e Advertências
A variável à esquerda do operador de atribuição ( sinal = ) precisa ser um tipo de dado capaz de armazenar o resultado da operação. Se ela não for grande o suficiente para guardar o valor, o resultado armazenado será incorreto. Veja os tipos de dados da linguagem Arduino para mais informações sobre seu tamanho.
Não confunda o operador de atribuição [ = ] (sinal de igual único) com o operador de comparação [ == ] (sinal de igual duplo), o qual avalia se se duas expressões são iguais.
Ver Também
LINGUAGEM if (operadores condicionais)
LINGUAGEM char
LINGUAGEM int
LINGUAGEM long


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Arithmetic operators
            > Division

/
          [Arithmetic Operators]

Descrição


> Division

/
          [Arithmetic Operators]

Descrição
Divisão é uma das quatro operações aritméticas fundamentais. O operador / (barra) opera em dois operandos para produzir o resultado.
Sintaxe
resultado = numerador / denominador;
Parâmetros
resultado : variável. Tipos de dados permitidos: int, float, double, byte, short, long
numerador : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
denominador : variável ou constante diferente de zero. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
int a = 50;
int b = 10;
int c = 0;


int b = 10;
int c = 0;
c = a / b;  // A variável 'c' recebe o valor 5 depois que essa operação é executada
Notas e Advertências
Se um dos números (operandos) é do tipo float ou double, a matemática de ponto flutuante será usada no cálculo.
Se os operandos são do tipo de dado float ou double e a variável que armazena a divisão é int, então apenas a parte inteira é salva no resultado e a parte racional é perdida.
float a = 55.5;
float b = 6.6;
int c = 0;
c = a / b;  // a variável 'c' armazena o valor 8 em vez do resultado esperado 8.409
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Arithmetic operators
            > Multiplication

*
          [Arithmetic Operators]

Descrição


*
          [Arithmetic Operators]

Descrição
Multiplicação é uma das quatro operações aritméticas fundamentais. O operador * (asterisco) opera em dois operandos para produzir o produto.
Sintaxe
produto = operando1 * operando2;
Parâmetros
produto : variável. Tipos de dados permitidos: int, float, double, byte, short, long
operando1 : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
operando2 : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
int a = 5;
int b = 10;
int c = 0;


int b = 10;
int c = 0;
c = a * b;  // A variável 'c' recebe o valor 50 depois que essa operação é executada
Notas e Advertências
O operação de multiplicação pode causar overflow se o resultado é maior que o que pode ser armazenado no tipo de dado.
Se um dos números (operandos) é do tipo float ou double, a matemática de ponto flutuante será usada no cálculo.
Se os operandos são do tipo de dado float ou double e a variável que armazena o produto é int, então apenas a parte inteira é salva no resultado e a parte racional é perdida.
float a = 5.5;
float b = 6.6;
int c = 0;


float b = 6.6;
int c = 0;
c = a * b;  // a variável 'c' armazena o valor 36 em vez do resultado esperado 36.3
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Arithmetic operators
            > Subtraction

-
          [Arithmetic Operators]

Descrição


-
          [Arithmetic Operators]

Descrição
Subtração é uma das quatro operações aritméticas fundamentais. O operador - (menos) opera em dois operandos para produzir a diferença do segundo pelo primeiro.
Sintaxe
diferença = operando1 - operando2;
Parâmetros
diferença : variável. Tipos de dados permitidos: int, float, double, byte, short, long
operando1 : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
operando2 : variável ou constante. Tipos de dados permitidos: int, float, double, byte, short, long
Código de Exemplo
int a = 5;
int b = 10;
int c = 0;


int b = 10;
int c = 0;
c = a - b;  // A variável 'c' recebe o valor -5 depois que essa operação é executada
Notas e Advertências
O operação de subtração pode causar overflow se o resultado é menor que o que pode ser armazenado no tipo de dado (ex. subtrair 1 de um int com valor -32,768 resulta em 32,767).
Se um dos números (operandos) é do tipo float ou double, a matemática de ponto flutuante será usada no cálculo.
Se os operandos são do tipo de dado float ou double e a variável que armazena a diferença é int, então apenas a parte inteira é salva no resultado e a parte racional é perdida.
float a = 5.5;


float a = 5.5;
float b = 6.6;
int c = 0;
c = a - b;  // a variável 'c' armazena o valor -1 em vez do resultado esperado -1.1
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Sketch
            > Setup

setup()
          [Sketch]

Descrição


> Setup

setup()
          [Sketch]

Descrição
A função setup() é chamada quando um sketch inicia. Use-a para inicializar variáveis, configurar o modo dos pinos(INPUT ou OUTPUT), inicializar bibliotecas, etc. A função setup() será executada apenas uma vez, apoós a placa ser alimentada ou acontecer um reset.
Código de Exemplo
int buttonPin = 3;
void setup() {
  // Inicializa a porta serial
  Serial.begin(9600);
  // configura o pino 3 como INPUT
  pinMode(buttonPin, INPUT);
}
void loop() {
  // ...
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Sketch
            > Loop

loop()
          [Sketch]

Descrição


> Loop

loop()
          [Sketch]

Descrição
Depois de criar uma função setup(), a qual inicializa e atribui os valores iniciais, a função loop() faz precisamente o que o seu nome sugere, e repete-se consecutivamente enquanto a placa estiver ligada, permitindo o seu programa mudar e responder a essas mudanças. Use-a para controlar ativamente uma placa Arduino.
Código de Exemplo
int buttonPin = 3;
// setup inicializa a porta serial e o pino para o botão
void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}
// loop checa o estado do botão repetidamente, e envia
// pela serial um 'H' se este está sendo pressionado
void loop() {


// pela serial um 'H' se este está sendo pressionado
void loop() {
  if (digitalRead(buttonPin) == HIGH) {
    Serial.write('H');
  }
  else {
    Serial.write('L');
  }
  delay(1000);
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Boolean operators
            > Logicalnot

!
          [Boolean Operators]

Descrição


> Logicalnot

!
          [Boolean Operators]

Descrição
O NÃO lógico resulta em verdadeiro se o operando é falso, e vice-versa. Vale lembrar que condições verdadeiras e falsas na linguagem Arduino são representadas por true e false respectivamente.
Código de Exemplo
Esse operador pode ser usado dentro da condição de um laço if.
if (!x) { // se x não é true
  // código a ser executado
}
Pode ser usado para inverter o valor booleano.
x = !y; // o valor booleano invertido de y é guardado em x
Notas e Advertências
O NÃO bitwise  ~ (til) é muito diferente do NÃO booleano ! (ponto de exclamação), mas você ainda deve ter certeza de qual você precisa usar.


Ver Também
LINGUAGEM ~ NÃO Bitwise


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Boolean operators
            > Logicaland

&&
          [Boolean Operators]

Descrição


> Logicaland

&&
          [Boolean Operators]

Descrição
O E lógico resulta em verdadeiro, apenas se ambos os operandos são verdadeiros. Vale lembrar que condições verdadeiras e falsas na linguagem Arduino são representadas por true e false respectivamente.
Código de Exemplo
Esse operador pode ser usado dentro da condição de um laço if.
if (digitalRead(2) == HIGH  && digitalRead(3) == HIGH) {  // se AMBOS os botões estão em HIGH
  // código a ser executado caso as duas condições sejam verdadeiras
}
Notas e Advertências
Tome cuidado para não confundir o operatdor booleano E, && (e comercial duplo); com operador bitwise E, & (e comercial único). Eles são usados para propósitos diferentes.


Ver Também
LINGUAGEM & (E Bitwise)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Boolean operators
            > Logicalor

||
          [Boolean Operators]

Descrição


> Logicalor

||
          [Boolean Operators]

Descrição
O OU lógico resulta em verdadeiro se pelo menos um dos operandos é verdadeiro. Vale lembrar que condições verdadeiras e falsas na linguagem Arduino são representadas por true e false respectivamente.
Código de Exemplo
Esse operador pode ser usado dentro da condição de um laço if.
if (x > 0 || y > 0) { // se x ou y é maior que zero
  // código a ser executado
}
Notas e Advertências
Não confunda o operador OU booleano || (pipe duplo) com o operador OU bitwise | (pipe único).
Ver Também
LINGUAGEM | OU Bitwise


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Bitwise operators
            > Bitwisenot

~
          [Bitwise Operators]

Descrição


~
          [Bitwise Operators]

Descrição
O operador NÃO bit-a-bit em C++ é o caractere til ~. Diferentemente de & e |, o operador bitwise NÃO é aplicado a um único operando a sua direita. O NÃO Bitwise muda cada bit para seu valor oposto: 0 se torna 1, e 1 se torna 0.
Em outras palavras:
0  1    operando1
-----
1  0   ~operando1
Código de Exemplo
int a = 103;  // binário:  0000000001100111
int b = ~a;   // binário:  1111111110011000 = -104
Notas e Advertências


Notas e Advertências
Você pode ficar surpreso ao ver um número negativo como -104 como o resultado dessa operação. Isso acontece porque o bit mais significativo de um valor int é o chamado bit de sinal. Se esse bit é 1, o número é interpretado como negativo. Essa codificação de números positivos e negativos é referido como complemento de dois. Para mais informações, veja o arquivo da Wikipédia a respeito do complemento de dois.
Um comentário adicional: é interessante notar que para qualquer inteiro x, ~x é o mesmo que -x - 1.
As vezes, o bit de sinal em uma expressão pode causar alguns efeitos indesejados, veja a página do operador de deslocamento à direita (>>), por exemplo, para mais detalhes.
Ver Também


Ver Também
EXEMPLO Tutorial BitMath (Em Inglês)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Bitwise operators
            > Bitshiftright

>>
          [Bitwise Operators]

Descrição


>>
          [Bitwise Operators]

Descrição
O operador de deslocamento à direita >> faz os bits do operando à esquerda do operador serem deslocados à direita pelo número de posições especificadas pelo operando à direita do operador.
Sintaxe
variável << numero_de_bits;
Parâmetros
variável: Tipos de dados permitidos: byte, int, long
numero_de_bits: um número menor ou igual 32. Tipos de dados permitidos: int
Código de Exemplo
int a = 40;     // binário: 0000000000101000
int b = a >> 3; // binário: 0000000000000101, ou 5 em decimal
Notas e Advertências


Notas e Advertências
Quando você desloca x à direita por y bits (x >> y), e o bit mais significativo em x é 1, o comportamento depende do tipo de dado de x. Se x é do tipo int, o bit mais significativo é o bit de sinal, determinando se x é negativo ou não, como pode ser visto com detalhes na página do tipo de dado int. Nesse caso, o bit de sinal é copiado para os bits menos significativos quando o valor é deslocado, por razões históricas:
int x = -16;  // binário: 1111111111110000
int y = 3;
int resultado = x >> y;  // binário: 1111111111111110


int resultado = x >> y;  // binário: 1111111111111110
Esse comportamento, chamado extensão do sinal, é frequentemente indesejável. Em vez disso, você pode quere que zeros sejam deslocados da esquerda. Acontece que as regras do deslocamento à direita são diferentes para expressões unsigned int, estão você pode usar casting para impedir que uns sejam copiados da esquerda:
int x = -16;  // binário: 1111111111110000
int y = 3;
int resultado = (unsigned int)x >> y;  // binário: 0001111111111110


Se você for cuidadoso para evitar a extensão do sinal, você pode usar o operador de deslocamento à direita >> como uma forma de dividir por potências de 2. Por exemplo:
int x = 1000;
int y = x >> 3; // divisão inteira de 1000 por 8, resultando em y = 125.
Ver Também
EXEMPLO Tutorial BitMath (Em Inglês)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Bitwise operators
            > Bitshiftleft

<<
          [Bitwise Operators]

Descrição


<<
          [Bitwise Operators]

Descrição
O operador de deslocamento a esquerda << faz os bits do operando à esquerda do operador serem deslocados a esquerda pelo número de posições especificadas pelo operando à direita do operador.
Sintaxe
variável << numero_de_bits;
Parâmetros
variável: Tipos de dados permitidos: byte, int, long
numero_de_bits: um número menor ou igual 32. Tipos de dados permitidos: int
Código de Exemplo
int a = 5;      // binário: 0000000000000101
int b = a << 3; // binário: 0000000000101000, ou 40 em decimal
Notas e Advertências


Notas e Advertências
Quando você desloca um valor x por y bits (x << y), os y bits mais a esquerda em x são perdidos, literalmente deslocados para fora da existência:
int x = 5;  // binário: 0000000000000101
int y = 14;
int resultado = x << y;  // binário: 0100000000000000 - os primeiros 1 em 101 foram descartados
Se você tem certeza que nenhum dos bits 1 em um valor serão descartados no deslocamento, uma forma simples de pensar do operador de deslocamento à esquerda é que ele multiplica o operando a esquerda por 2 elevado ao operando a direita. Por exemplo, para gerar potências de 2, as seguintes expressões podem ser utilizadas:


Operação  Resultado
   ---------  ------
    1 <<  0      1
    1 <<  1      2
    1 <<  2      4
    1 <<  3      8
    ...
    1 <<  8    256
    1 <<  9    512
    1 << 10   1024
    ...
O exemplo a seguir pode ser utilizado para imprimir um byte recebido no monitor serial, usando o operador de deslocamento à esquerda para mover 1 pelo número de bits especificado, testar o valor com o E (&), e imprimir seu valor (1 ou 0):
// Imprime o valor binário (1 ou 0) de um byte
void printOut1(int c) {
  for (int bits = 7; bits > -1; bits--) {


for (int bits = 7; bits > -1; bits--) {
    // Compara bits 7-0 no byte
    if (c & (1 << bits)) {
      Serial.print("1");
    }
    else {
      Serial.print("0");
    }
  }
}
Ver Também
EXEMPLO Tutorial BitMath (Em Inglês)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Bitwise operators
            > Bitwiseor

|
          [Bitwise Operators]

Descrição


|
          [Bitwise Operators]

Descrição
O operador bitwise OU em C++ é o caractere barra vertical, |. Da mesma forma que o operador &, | opera  independentemente em cada bit dos dois operandos, mas seu propósito é diferente (duh!). O resultado da operação OU entre dois bits é 1 se qualquer um ou ambos os bits de entrada são 1, do contrário é 0.
Explicado de outra forma:
0  0  1  1    operando1
0  1  0  1    operando2
----------
0  1  1  1    (operando1 | operando2) - resultado retornado
Código de Exemplo
int a =  92;    // em binário: 0000000001011100


int b = 101;    // em binário: 0000000001100101
int c = a | b;  // resultado:    0000000001111101, ou 125 em decimal.
Um dos usos mais comuns do OU bit-a-bit é "setar" um ou mais bits em um valor.
// Nota: Esse código é específico para a arquitetura AVR
// configura os bits de direção para os pinos 2 a 7, deixa 0 e 1 intocados (xx | 00 == xx)
// Equivale a pinMode(pino, OUTPUT) para os pinos 2 a 7 no Arduino Uno ou Nano
DDRD = DDRD | B11111100;
// o mesmo que pinMode(pino, OUTPUT) para os pinos 2 a 7
Ver Também
LINGUAGEM || OU lógico


Ver Também
LINGUAGEM || OU lógico
EXEMPLO Tutorial BitMath (Em Inglês)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Bitwise operators
            > Bitwisexor

^
          [Bitwise Operators]

Descrição


^
          [Bitwise Operators]

Descrição
Na linguagem C++ existe um operador um pouco incomum chamado de OU EXCLUSIVO, também conhecido como XOR (Em Inglês é pronunciado "eks-or"), bit-a-bit. O operador XOR bitwise é escrito usando-se o símbolo ^. Uma operação XOR bit-a-bit resulta em 1 apenas se os bits de entrada são diferentes. Se iguais, o resultado é zero.
Precisamente,
0  0  1  1    operando1
0  1  0  1    operando2
----------
0  1  1  0    (operando1 ^ operando2) - resultado retornado
Código de Exemplo
int x = 12;     // binário: 1100


int x = 12;     // binário: 1100
int y = 10;     // binário: 1010
int z = x ^ y;  // binário: 0110, ou decimal 6
O operador ^ é frequentemente utilizado para trocar (isto é, mudar de 0 para 1, ou 1 para 0) alguns dos bits em uma expressão inteira. Em uma operação XOR se há um 1 no bit da máscara, aquele bit é invertido; se há um 0, o bit não é invertido e continua o mesmo.
// Nota: Esse código usa registradores específicos para microcontroladores AVR (Uno, Nano, Leonardo, Mega, etc.)
// Ele não irá compilar para outras arquiteturas
void setup(){


// Ele não irá compilar para outras arquiteturas
void setup(){
  DDRB = DDRB | B00100000; // configura PB5 (pino 13 no Uno/Nano, pino 9 no Leonardo/Micro, pino 11 no Mega) como OUTPUT
  Serial.begin(9600);
}
void loop(){
PORTB = PORTB ^ B00100000;  // inverte PB5, deixa os outros bits intocados
delay(100);
}
Ver Também
EXEMPLO Tutorial BitMath (Em Inglês)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Bitwise operators
            > Bitwiseand

&
          [Bitwise Operators]

Descrição


&
          [Bitwise Operators]

Descrição
O operador bitwise E em C++ é um único & (e comercial ou ampersand), usado entre duas expressões inteiras. O operador E bit-a-bit atua em cada bit dos operandos independentemente, de acordo com a seguinte regra: se ambas entradas são 1, a saída resultante é 1, do contrário o resultado é 0.
Outra forma de se expressão isso é:
0  0  1  1    operando1
0  1  0  1    operando2
----------
0  0  0  1    (operando1 & operando2) - resultado retornado


No Arduino, o tipo int é um valor 16-bit, então & usado entre dois operandos do tipo int causa 16 operações bit-a-bit E simultâneas.
Código de Exemplo
Em um fragmento de código do tipo:
int a =  92;    // em binário: 0000000001011100
int b = 101;    // em binário: 0000000001100101
int c = a & b;  // resultado:    0000000001000100, ou 68 em decimal.
Cada um dos 16 bits em a e b são processados com o operador &, e todos os 16 bits resultantes são armazenados em c, resultando no valor binário 01000100, que é 68 em decimal.


Um dos usos mais comuns da operação bit-a-bit E é selecionar um bit particular (ou bits) de um valor inteiro, frequentemente chamado de masking. Veja abaixo um exemplo (específico para arquitetura AVR):
PORTD = PORTD & B00000011;  // apaga os bits 2 - 7, deixando o valor dos pinos PD0 e PD1 intocados (xx & 11 == xx)
Ver Também
LINGUAGEM && E lógico
EXEMPLO Tutorial BitMath (Em Inglês)


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Break

break
          [Control Structure]

Descrição


> Break

break
          [Control Structure]

Descrição
break é usado usado para sair de um laço for, while ou do…while, ignorando a condição padrão do loop. Também é usada para sair do comando switch case.
Código de Exemplo
No códgo seguinte, o break quebra o loop for quando o valor do sensor excede o limiar.
int lim = 40;
for (int x = 0; x < 255; x ++) {
  analogWrite(PWMpin, x);
  sens = analogRead(sensorPin);
  if (sens > lim) { // "foge" do o loop `for`
    x = 0;
    break;
  }
  delay(50);
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > If

if
          [Control Structure]

Descrição


> If

if
          [Control Structure]

Descrição
O comando if checa uma condição e executas o comando a seguir ou um bloco de comandos delimitados por chaves, se a condição é verdadeira ('true').
Sintaxe
if (condição) {
  //comando(s)
}
Parâmetros
condição: uma expressão booleana, isto é, que pode resultar apenas em true ou false
Código de Exemplo
As chaves podem ser omitidas depois de um comando if. Se isso é feito, a próxima linha (definida pelo ponto e vírgula) é interpretada como o único comando condicional. Para mais de um comando, use as chaves para delimitar o bloco de comandos.
if (x > 120) {
  digitalWrite(pinoLED, HIGH);
}


if (x > 120) {
  digitalWrite(pinoLED, HIGH);
}
if (x > 120) {
  digitalWrite(pinoLED, HIGH);
}
if (x > 120) {
  digitalWrite(pinoLED, HIGH);
}
if (x > 120) {
  digitalWrite(pinoLED1, HIGH);
  digitalWrite(pinoLED2, HIGH);
} // todas as formas acima estão corretas
Notas e Advertências
As expressões sendo testadas dentro dos parênteses geralmente requerem o uso de um ou mais dos operadores mostrados abaixo.
Operadores de comparação:
x == y (x é igual a y)
x != y (x é diferente de y)
x <  y (x é menor que y)
x >  y (x maior que y)


x >  y (x maior que y)
x <= y (x é menor ou igual a y)
x >= y (x é maior ou igual a y)
Cuidado para não usar acidentalmente o símbolo de igual simples (ex. if (x = 10) ). O símbolo de igual simples é o operador de atribuição, se atribui 10 a x (coloca o valor 10 na variável x). Em vez disso, o símbolo de igual duplo (ex. if (x == 10) ) deve ser usado, que é o operador de comparação, e testa se x é igaul a 10 ou não. O último é apenas verdadeiro se x é igual a 10, enquanto o primeiro comando mostrado sempre resultará em verdadeiro.


Isso acontece porque a linguagem C++ interpreta if (x=10) da seguinte forma: 10 é atribuído a x (Lembre que o símbolo de igual simples é o (operador de atribuição)), então x agora contém 10. então o comando 'if' testa 10, o que sempre resulta true, desde que qualquer número diferente de zero resulta em true. Consequentemente, if (x = 10) irá sempre resultar em true, o que não é desejável ao se usar um comando 'if'. Além disso, a variável x irá receber o valor 10, o que também é indesejado.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Else

else
          [Control Structure]

Descrição


> Else

else
          [Control Structure]

Descrição
A combinação if…else permite maior controle sobre o fluxo de código que o comando mais básico if, por permitir múltiplos testes serem agrupados juntos. Uma cláusula else (se presente) será executada se a condição do comando if resulta em false. O else pode proceder outro teste if, tal que múltiplos, testes mutualmente exclusivos podem ser executados ao mesmo tempo.


Cada teste irá proceder para o próximo até um teste que resulte em verdadeiro seja encontrado. Quando esse teste for encontrado, o bloco de código correspondente a condição é executado, e o programa então continua a partir da linha seguinte a estrutura if-else completa. Se nenhum teste resultar em verdadeiro, o bloco else padrão é executado, se um estiver presente, que dita o comportamento padrão.
Note que um bloco else if pode ser usado sem um bloco else no final e vice-versa. Um número praticamente ilimitado de blocos else if conectados é permitido.
Sintaxe
if (condição1) {
  // faz coisa A
}
else if (condição2) {
  // faz coisa B
}
else {
  // faz coisa C
}
Código de Exemplo


}
else {
  // faz coisa C
}
Código de Exemplo
Abaixo um trecho de código de um sistema de controle de temperatura
if (temperatura >= 70) {
  //Perigo! Desligar o sistema
}
else if (temperatura >= 60 && temperatura < 70) {
  //Cuidado! Requerida a atenção do usuário
}
else {
  //Seguro! Continue as tarefas usuais...
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > For

for
          [Control Structure]

Descrição


> For

for
          [Control Structure]

Descrição
O comando for é usado para repetir um bloco de código envolvido por chaves. Um contador de incremento é geralmente utilizado para terminar o loop. O comando for é útil para qualquer operação repetitiva, e é usado frequentemente com vetores para operar em coleções de dados ou pinos.
Sintaxe
for (inicialização; condição; incremento) {
  //comando(s);
}
A inicialização ocorre primeiro e apenas uma vez. A cada repetição do loop, a condição é testada; se é verdadeira (true), o bloco de comandos, e o incremento são executados. Quando a condição se torna falsa (false), o loop termina.
Código de Exemplo


Código de Exemplo
// Varia o brilho de um LED usando um pino PWM
int pinoPWM = 10; // LED em série com um resistor de 470 ohm no pino 10
void setup() {
  // setup não necessário
}
void loop() {
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinoPWM, i);
    delay(10);
  }
}
Notas e Advertências


delay(10);
  }
}
Notas e Advertências
O loop for na linguagem C é muito mais flexível que os loops `for` encontrados em outras linguagens. Quaisquer dos três elementos da sintaxe podem ser omitidos, porém os ponto e vírgula (';') são necessários. Além disso, os comandos para inicialização, condição e incremento podem ser quaisquer comandos válidos na linguagem C, mesmo com variáveis não relacionadas ao loop, e podem usar quaisquer tipos de dados da linguagem, incluindo floats. Esses tipos de comandos for incomuns podem prover soluções rápidas para alguns problemas raros de programação.
Por exemplo, usar uma multiplicação no comando de incremento irá gerar uma progressão logarítmica:


for (int x = 2; x < 100; x = x * 1.5) {
  println(x);
}
Gera: 2,3,4,6,9,13,19,28,42,63,94.
Outro exemplo, Aplica um efeito de fading crescente e decrescente em um LED com apenas um loop for:
void loop() {
  int x = 1;
  for (int i = 0; i > -1; i = i + x) {
    analogWrite(pinoPWM, i);
    if (i == 255) {
      x = -1; // muda a direção no pico
    }
    delay(10);
  }
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Goto

goto
          [Control Structure]

Descrição
Transfere o fluxo do programa para um ponto rotulado no código.
Sintaxe
rótulo:


Sintaxe
rótulo:
goto rótulo; // envia o fluxo do programa de volta para o rótulo
Código de Exemplo
O código abaixo "foge" de dentro de todos os laços caso a leitura no pino analógico 0 seja maior que 250.
for (byte r = 0; r < 255; r++) {
  for (byte g = 255; g > 0; g--) {
    for (byte b = 0; b < 255; b++) {
      if (analogRead(0) > 250) {
        goto cancelar;
      }
      // mais comandos ...
    }
  }
}
cancelar:
// mais comandos ...
Notas e Advertências


}
cancelar:
// mais comandos ...
Notas e Advertências
O uso do goto é desencorajado na programação em C++, e alguns autores de livros afirmam que o uso do comando goto nunca é necessário, mas se usado judiciosamente ele pode simplificar certos programas. A pela qual muitos programadores desaprovam o uso do goto é que com o uso descuidado de comando goto, é fácil criar um programa com fluxo indefinido, que não pode ser depurado.
Tendo dito isso, há algumas instâncias onde o comando goto pode ser considerado, por simplificar o código. Uma dessas situações é sair de laços for profundamente aninhados, ou blocos if, em determinada condição.
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Return

return
          [Control Structure]

Descrição
Termina uma função e retorna um valor, caso desejado.
Sintaxe
return;


Sintaxe
return;
return valor; // ambas as formas são válidas
Parâmetros
valor: qualquer variável ou constante de qualquer tipo de dado
Código de Exemplo
Uma função para comparar a saída de um sensor com um limiar
int checaSensor() {
  if (analogRead(0) > 400) {
    return 1;
  }
  else {
    return 0;
  }
}
A palavra-chave return é útil para testar uma seção de código sem ter que "comentar" grandes seções de código possivelmente cheio de erros.
void loop() {
  return;
  // o resto de um esboço disfuncional aqui
  // este código nunca será executado
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Dowhile

do...while
          [Control Structure]

Descrição


do...while
          [Control Structure]

Descrição
O loop do…while funciona da mesma forma que o loop while, com a exceção de a condição ser testada no final do loop, tal que o loop será executado pelo menos uma vez.
Sintaxe
do {
  // bloco de comandos
} while (condição);
A condição é uma expressão booleana que é avaliada como verdadeiro ou falso, respectivamente true ou false na linguagem Arduino.
Código de Exemplo
int x = 0;
do {
  delay(50);          // espera os sensores estabilizarem
  x = readSensors();  // checa os sensores
} while (x < 100);
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Continue

continue
          [Control Structure]

Descrição


> Continue

continue
          [Control Structure]

Descrição
O comando continue "pula" o resto da iteração atual de um loop (for, while, ou do…while). Esse comando continua a checar a expressão condicional do loop, e procede com qualquer iterações subsequentes.
Código de Exemplo
O código abaixo escreve o valor de 0 a 255 ao pino PWMpin, mas pula os valores no intervalo 41 a 119.
for (int x = 0; x <= 255; x ++) {
  if (x > 40 && x < 120) {  // cria um salto nos valores
    continue;
  }
  analogWrite(PWMpin, x);
  delay(50);
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > Switchcase

switch...case
          [Control Structure]

Descrição


switch...case
          [Control Structure]

Descrição
Da mesma forma que o comando if, o comando switch case controla o fluxo do programa permitindo ao programador especificar código diferente para ser executado em várias condições. Em particular, um comando switch compara o valor de uma variável aos valores especificados nos comandos case. Quando um comando case é encontrado cujo valor é igual ao da variável, o código para esse comando case é executado.
A palavra-chave break interrompe o comando switch, e é tipicamente usada no final de cada case. Sem um comando break, o comando switch irá continuar a executar as expressões seguintes (desnecessariamente) até encontrar um break, ou até o final do comando switch ser alcançado.
Sintaxe
switch (var) {
  case valor1:
    // comando(s)
    break;


case valor1:
    // comando(s)
    break;
  case valor2:
    // comando(s)
    break;
  default:
    // comando(s)
    break;
}
Parâmetros
var: uma variável para ser comparada com os vários cases. Tipos de dados permitidos: int, char
valor1, valor2: constantes. Tipos de dados permitidos: int, char
Retorna
Nada
Código de Exemplo
switch (var) {
  case 1:
    // faz algo quando var é igual a 1
    break;
  case 2:
    // faz algo quando var é igual a 2
    break;
  default:
    // Se nenhum dos anteriores, faz o caso padrão default
    // default é opcional
    break;
}
Ver Também


Linguagem
funções
variáveis
estrutura
Bibliotecas
IoT Cloud API
Glossário
        A documentação de referência da linguagem Arduino está licenciada sob a licença Creative Commons Attribution-Share Alike 3.0.

    Encontrou alguma coisa que pode ser melhorada? Sugira correções e nova documentação via GitHub.

    Dúvidas sobre como usar o Github? Aprenda tudo o que precisa saber nesse tutorial.

Last Revision: Searching...
Last Build: 2023/06/30
Editar essa Página
Reference
            >  Language
            >  Structure
            >  Control structure
            > While

while
          [Control Structure]

Descrição


> While

while
          [Control Structure]

Descrição
Um loop while irá se repetir continuamente, e infinitamente, até a expressão dentro dos parênteses (), se torne falsa. Algo deve mudar a variável testada, ou o loop while nunca irá encerrar. Isso pode ser no seu código, por exemplo, uma variável incrementada, ou uma condição externa, como a leitura de um sensor.
Sintaxe
while (condição) {
  // código a ser executado repetidamente
}
A condição é uma expressão booleana que resulta em true ou false.
Código de Exemplo
var = 0;
while (var < 200) {
  // faz algo repetitivo 200 vezes
  var++;
}
Ver Também


var++;
}
Ver Também
EXEMPLO Loop While (Em Inglês)