Estrutura de repetição
A estrutura de repetição permite que uma sequência de instruções seja repetida quantas vezes o programador desejar. Observe que a função loop() já realiza algo semelhante; a diferença é que, com esta última, o programador não escolhe quantas vezes as instruções são repetidas. Os principais comandos de repetição são for() e while().
Comando ‘For()’
A sintaxe do comando for() é a seguinte:
for (inicio; condicao para continuar o loop; incremento) {
instrucao a1;
instrucao a2;
...
}
As instruções entre os parênteses determinam quantas vezes as instruções entre as chaves serão executadas. Para isso, uma variável específica (um contador) é inicializada e incrementada, com os comandos entre as chaves sendo repetidos até que a condição deixe de ser satisfeita.
Comando ‘while()’
A sintaxe do comando while() é a seguinte?
while(condicao){
instrucao 1;
instrucao 2;
}
Pode ser interpretado como "enquanto uma condição for satisfeita, execute o bloco de instruções entre as chaves".
Projeto
Projeto da ultima aula incrementado
Componentes
1 x Arduino
1 x Protoboard
2 x resistores
1 x push-button
7x jumpers MxM
Projeto Simulador ThinkerCad
Código arduino
int buttonPin = 7; // Define buttonPin no pino digital 7
int ledPin = 10; // Define ledPin no pino digital 10
int estadoButton = 0; // Variável responsável por armazenar o estado do botão (ligado/desligado)
bool modoPisca = 0; // Variável que vai guardar o modo pisca-pisca em valor booleano (1 ou 0)
// boll trabalha apenas com 0 e 1
// caso queira definir mais valores para o modo, mude o tipo para int e altere os valores true e false para o valor desejado
void setup() {
Serial.begin(9600); // Inicia a comunicação serial
pinMode(ledPin, OUTPUT); // Define ledPin (pino 10) como saída
pinMode(buttonPin, INPUT); // Define buttonPin (pino 7) como entrada
}
void loop() {
estadoButton = digitalRead(buttonPin); // Lê o valor de buttonPin e armazena em estadoButton
// Verifica se há dados disponíveis na porta serial
if (Serial.available() > 0) {
char receivedChar = Serial.read(); // Lê um byte da porta serial
// Se o caractere recebido for '1', define modoPisca como true
if (receivedChar == '1') {
modoPisca = true; // modoPisca = 1
}
// Se o caractere recebido for '0', define modoPisca como false
else if (receivedChar == '0') {
modoPisca = false; // modoPisca = 0
}
}
Serial.print("Valor do modoPisca: "); // Imprime um texto indicando o valor que será mostrado
Serial.println(modoPisca); // Imprime o valor de modoPisca
if (estadoButton == HIGH && modoPisca == false) { // Se estadoButton for igual a HIGH e modoPisca for false
// Inverte o estado atual do LED
digitalWrite(ledPin, !digitalRead(ledPin));
// Aguarda um curto período para evitar múltiplos acionamentos ao pressionar o botão
delay(100);
}
// Entra na codição que represntará S.O.S em codigo morse ( ___...___ )
// Codigo Morse eh um sistema de comunicação baseado em um sinal longo "_" e um sinal curto "."
else if(estadoButton == HIGH && modoPisca == true){ // Se estadoButton for igual a HIGH e modoPisca for true
digitalWrite(ledPin, LOW); // desliga o led para mostra o S.O.S corretamente
delay(500);
for(int i =0; i<3; i++){
digitalWrite(ledPin, HIGH); // liga o led
delay(1500); // tempo que o led vai ficar ligado
digitalWrite(ledPin, LOW); // desliga o led
delay(500); // tempo que o led vai ficar desligado
}
for(int i =0; i<3; i++){
digitalWrite(ledPin, HIGH); // liga o led
delay(500); // tempo que o led vai ficar ligado
digitalWrite(ledPin, LOW); // desliga o led
delay(250); // tempo que o led vai ficar desligado
}
for(int i =0; i<3; i++){
digitalWrite(ledPin, HIGH); // liga o led
delay(1500); // tempo que o led vai ficar ligado
digitalWrite(ledPin, LOW); // desliga o led
delay(500); // tempo que o led vai ficar desligado
}
}
}