/* Professor Marcelo Fernando Morgantini - FIAP 2024
Nessa aula teremos alguns conceitos importantes
sobre o controle gradual e também a leitura de dados que
são recebidos em uma porta analógica
Todos os comandos utilizados nessa aula estão explicados
de forma detalhada no site oficial do Arduino (arduino.cc) */
#define entrada A0
#define portaLed 9 /* este comando troca todas as palavras "entrada"
por "A0" antes de enviar o código ao arduino. Assim, não ocupamos
espaço de memória usando uma variável, como se usássemos
(int entrada = A0; ou int portaLed = 9;) */
int potenciometro = 0; // cria a variável potenciometro e atribui valor 0
int led = 0; // cria a variável led e atribui valor 0
float voltagemLed = 0; // cria uma variável com duas casas decimais
void setup() {
// aqui definimos se uma porta é de entrada ou saída
// não precisamos dessa definição para a porta A0, pois
// nativamente, todas as portas analógicas são de entrada
// então não precisa de "pinMode(entrada, INPUT);"
pinMode(portaLed, OUTPUT);
// agora vamos habilitar a comunicação entre o Arduino e o PC
Serial.begin(9600);// 9600 é a velocidade de comunicação
}
void loop() {
/* Do jeito que ligamos o potenciometro teremos uma tensão na porta
A0 que varia de 0V até 5V. Este intervalo é transformado em números
inteiros que vão de 0 (0V) até 1023(5V) */
potenciometro = analogRead(entrada); // guardamos o valor recebido
// na porta A0 na variável potenciometro
led = (potenciometro/4); //valor a ser atribuido à intensidade de
//acionamento do led (0 = 0V - 255 = 5V)
analogWrite(portaLed, led); // comando para acender o LED
Serial.println("Valor do potenciômetro: " + String(potenciometro));
/* Na linha acima "escrevemos" na porta serial o texto entre parenteses
e usamos a função String para converter o valor da variável
potenciometro em texto.
Não podemos, dentro do mesmo comando Serial.print misturar texto com
valores.
lembrando que o ln depois do print significa que após a exibição
do dado no monitor serial, uma nova linha é criada.
Uma alternativa ao comando acima seria:
Serial.print("Valor do potenciômetro: ");
Serial.println(potenciometro);*/
Serial.print("Valor PWM indo para o LED: ");
Serial.println(led);
voltagemLed = (led * 0.01953125);
Serial.print("Voltagem indo para o LED: ");
Serial.print(voltagemLed);
Serial.println("V");
delay(1000); // vai esperar 1 segundo pra fazer uma nova leitura
}