FI577 - Instrumentação eletrônica para a física
Leitura recomendada: www.arduino.cc e Google.



Arquivo\Exemplos\01. Basics\Blink\* Documentação *\)/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products
*/Comentário ao final de uma linha:
Comentário utilizando muitas linhas:
Configurações iniciais do sistema (void setup(){})
LED_BUILTIN será usado como uma saída.pinMode(pin, type);, onde pin=LED_BUILTIN e type=OUTPUTfuncao(argumentos);Nota: Blocos de código começam com { e terminam com }
void loop(){})pseudo-código:
1) Pino do LED com tensão alta (+5V);
2) Aguarda 1000ms;
3) Pino do LED com tensão baixa (+0V);
4) Aguarda 1000ms;
5) Retorna ao passo 1). Exemplo: informações a respeito de digitalWrite(pin, Value) e delay(ms).
LED_BUILTIN, vamos usar o pino D13 como fonteArquivo\Exemplos\01. Basics\DigitalReadSerialFerramentas/Monitor Serial(CTRL+SHIFT+M) e observar…
pushButtonint pushButton indica um espaço na memória que será usado para armazenar um número (tipo int). A variável deve sempre ser definida antes de ser utilizada!pushButton.int pushButton = 2;
void setup() {
Serial.begin(9600); // initialize serial communication at 9600 bits per second:
pinMode(pushButton, INPUT); // make the pushbutton's pin an input:
}
void loop() {
int buttonState = digitalRead(pushButton); // read the input pin:
Serial.println(buttonState); // print out the state of the button:
delay(1); // delay in between reads for stability
}=) armazena o valor 2 na variável pushButtonpushButton e perguntarmos o seu valor posteriormente, obteremos 2.pushButton. Poderíamos ter definido a variável de uma maneira alternativa:pushButton = 2; poderíamos ter escrito pushButton = 1+1; (Verifiquem!)+), subtração(-), multiplicação(*), divisão(/). Podemos também obter o resto da divisão de um inteiro por meio do operador módulo(%).(1+2)/3==1Serial.begin(9600);pushButton(D2) será usado para medir tensões binárias pinMode(pushButton, INPUT);Serial) e de medição binária de tensão (INPUT). O setup() termina então com }int pushButton = 2;
void setup() {
Serial.begin(9600); // initialize serial communication at 9600 bits per second:
pinMode(pushButton, INPUT); // make the pushbutton's pin an input:
}
void loop() {
int buttonState = digitalRead(pushButton); // read the input pin:
Serial.println(buttonState); // print out the state of the button:
delay(1); // delay in between reads for stability
}digitalRead(pushButton) lê o estado da tensão no pino pushButton (D2)int buttonStateSerial.println(buttonState);int pushButton = 2;
void setup() {
Serial.begin(9600); // initialize serial communication at 9600 bits per second:
pinMode(pushButton, INPUT); // make the pushbutton's pin an input:
}
void loop() {
int buttonState = digitalRead(pushButton); // read the input pin:
Serial.println(buttonState); // print out the state of the button:
delay(1); // delay in between reads for stability
}Blink, e partindo do código do exemplo DigitalReadSerial, faça com que o LED acenda quando o botão é pressionado.digitalWrite) e como um medidor binário de tensão (usando o digitalRead).

Abram o exemplo em Arquivo/Exemplos/01. Basics/AnalogReadSerial.
sensorValue, quando a posição do potenciômetro muda.analogRead(A0) é um valor inteiro, enquanto a tensão analógica \(V_{\text{pot}}\) é um número real.float e double.
float x = 1.135;x é uma variável que armazena números inteiros, cujo valor é igual a 1.135.float e double são equivalentes.double possui o dobro de bits, e pode ser usado para cálculos de maior precisão.var = 1+1; por var = 3/2;? (Não façam no programa ainda!)float. Caso contrário, o compilador interpretará a equação como sendo no domínio dos inteiros!var = 3./2.;float.float’s são bem mais complicados para o processador do que aqueles envolvendo inteiros. Desta forma, se quisermos cálculos mais rápidos devemos evitar usar float.Arquivo/Exemplos/01. Basics/AnalogReadSerial.A0). Sabendo que a resolução da medida é 10 bits (0-1023), e que o valor máximo corresponde a 5V, convertam sensorValue para tensão.analogWrite implementada no arduino permite modular a potência de um sinal uma resolução de 8 bits (\(2^8=256\) valores de potência).

~Dx), como o pino 9Exemplos\01.Basics\FadeanalogWrite varia o brilho do LED a cada iteração do loop. Após modificar o brilho, varia o valor. brightness é mantido sempre entre 0 e 255, já que a resolução do analogWrite é de 8 bitsanalogWrite(led, brightness); O brilho do pino led é ajustado para o valor brightnessbrightness = brightness + fadeAmount; O valor de brightness é incrementado pelo valor de fadeAmountif (brightness <= 0 || brightness >= 255) Se o valor do brilho for menor que 0 ou (||) maior que 255, executa o bloco de código a seguir
fadeAmount = -fadeAmount; O valor do incremento do brightness deve ter o sinal invertido, para que o brilho volte a variar entre 0 e 255.delay(30); Aguarda 30 ms antes de modificar novamente o valor do brilhodelay(ms): pausa o arduino por um tempo de ms milissegundosdelayMicroseconds(us): pausa o arduino por us microssegundosunsigned long time = millis(): A função millis() lê o tempo do relógio interno em milissegundos. Este valor pode ser armazenado numa variável para comparação de tempos entre diferentes eventos. Neste caso, o valor é armazenado na variável timemillis(): Equivalente a função millis(), porem lê o tempo do relógio interno na escala de microssegundosExemplos\02.Digital\BlinkWithoutDelayconst int ledPin = LED_BUILTIN; // the number of the LED pin
int ledState = LOW; // ledState used to set the LED
unsigned long previousMillis = 0;// will store last time LED was updated
const long interval = 1000; // interval at which to blink (milliseconds)
(...)
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}
}Serial.println(intervalo de tempo);Sugestão: inicie partindo da seguinte configuração inicial: