Pessoal, estou estudando um pouco mais a fundo o arduindo e ja descobri mtas coisas legais, como por exemplo escrever duas saidas ao mesmo tempo, em fim... mas estou uma baita duvida, não encontrei nada a respeito disto, dentro do código do PulseIn tem a seguinte atribuição:
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
uint8_t bit = digitalPinToBitMask(pin);
[b] uint8_t stateMask = (state ? bit : 0);[/b]
O que esta interrogação e este dois pontos fazem com os bits?
É uma forma simplificada de fazer um if.
Essa linha:
uint8_t stateMask = (state ? bit : 0);
Funciona da mesmissima forma que o código abaixo:
uint8_t stateMask;
if (state)
stateMask = bit;
else
stateMask = 0;
Ou seja:
( condição ? valor_se_verdadeiro : valor_se_falso )
Muito obrigado amigo. Mais uma coisa, eu poderia então, fazer comparação utilizando uma linha apenas como esta para comparar um valor que não seja booleano também certo?
uint8_t stateMask = (state==valor_comparado ? bit : 0);
ou ainda posso tb acrescentar mais informações como mais se o valor for verdadeiro ou falso?
como eu pesquiso isto no google? Do que se trata afinal? Isso pode ser usado no C++ tb ou e especifico do ardu?
Vlw man!
Isso se chama operador ternário. O código que você postou funciona sem problemas, a ideia é isso mesmo.
Esse operador faz parte do C e derivados (C++, C#, etc.), e não somente do Arduino. Outras linguagens também têm esse operador.
Vlw amigo. Mt obrigado msm.