# Primeiro Programa Boas-vindas ao guia introdutório para o seu primeiro programa Arduino! A programação com IDE Arduino é uma excelente maneira de mergulhar no mundo dos sistemas embebidos, permitindo controlar e interagir com o mundo físico através de código. Envolve a escrita de código no Ambiente de Desenvolvimento Integrado (IDE) do Arduino, onde um programa é chamado de *sketch*. Neste guia, vai aprender sobre as estruturas fundamentais de um *sketch* Arduino: as funções **setup()** e **loop()**. A função **setup()** é onde se inicializam as definições e configurações, sendo **executada apenas uma vez** quando a placa Arduino é ligada ou reiniciada. É aqui que se definem os modos dos pinos, se inicia a comunicação serial e se realizam outras tarefas de configuração necessárias para um dado projeto. Por outro lado, a função **loop()** contém a lógica principal do programa e é **executada continuamente**, permitindo que a plca de desenvolvimento a programar realize tarefas repetitivas, como ler sensores, controlar saídas e responder a eventos. Ao dominar estes conceitos, estará apto a criar projetos dinâmicos e interativos que respondem ao mundo ao seu redor. Vamos começar! O código seguinte faz com que o *Light-emitting diode* (LED) da placa de desenvolvimento *ESP32-C6-DevKitM-1* pisque, alternando entre ligado e desligado em intervalos regulares. Além disso, apresenta-se de seguida uma representação ilustrativo para referência. ```C /* BlinkRGB Demonstrates usage of onboard RGB LED on some ESP dev boards. Calling digitalWrite(RGB_BUILTIN, HIGH) will use hidden RGB driver. RGBLedWrite demonstrates control of each channel: void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) WARNING: After using digitalWrite to drive RGB LED it will be impossible to drive the same pin with normal HIGH/LOW level */ //#define RGB_BRIGHTNESS 64 // Change white brightness (max 255) // the setup function runs once when you press reset or power the board void setup() { // No need to initialize the RGB LED } // the loop function runs over and over again forever void loop() { digitalWrite(RGB_BUILTIN, HIGH); // Turn the RGB LED white delay(1000); digitalWrite(RGB_BUILTIN, LOW); // Turn the RGB LED off delay(1000); } ```
[![tft.gif](https://s10.gifyu.com/images/SogiM.gif)](https://s10.gifyu.com/images/SogiM.gif)
Montagem exemplificativa
#### Utilização do Monitor Serial no Arduino IDE O Monitor Serial é uma ferramenta crucial dentro do Arduino IDE que permite enviar e receber dados entre a placa de desenvolvimento e o computador. Esta funcionalidade é extremamente útil para depuração, monitorização de leituras de sensores e interação com o programa do Arduino em tempo real. ##### Como Funciona o Monitor Serial O Monitor Serial comunica com a placa de desenvolvimento através de uma conexão serial, que normalmente é estabelecida através do cabo USB que liga a placa ao computador. Esta conexão permite a transmissão de dados em texto entre o seu computador e a placa de desenvolvimento. Podem enviar-se comandos do Monitor Serial para a placa de desenvolvimento, e, por sua vez, a placa de desenvolvimento pode enviar de volta dados, que são exibidos na janela do Monitor Serial. Para utilizar o Monitor Serial, siga estes passos: 1\. **Inicializar a Comunicação Serial:** No *sketch*, deve inicializar-se a comunicação serial utilizando a função *`Serial.begin()`*. Esta função recebe um único argumento, a taxa de transmissão, que define a velocidade da comunicação em bits por segundo (bps). Uma taxa de transmissão comum é 9600. ```C void setup() { Serial.begin(9600); // Inicia a comunicação serial a uma taxa de 9600 bps } ``` 2\. **Enviar Dados para o Monitor Serial:** Pode enviar-se dados da placa de desenvolvimento para o Monitor Serial utilizando as funções *`Serial.print()`* ou *`Serial.println()`*. A função *`Serial.print()`* envia dados sem adicionar uma nova linha no final, enquanto que *`Serial.println()`* envia os dados seguidos de um caractere de nova linha. ```C void loop() { Serial.println("Olá, Mundo!"); // Envia "Olá, Mundo!" para o Monitor serial delay(1000); // Aguarda 1 segundo } ``` 3\. **Receber Dados do Monitor Serial:** O Monitor Serial também pode enviar dados para a placa de desenvoldimento. Podem ler-se estes dados utilizando no *sketch* as funções *`Serial.read()`*, *`Serial.available()`*, e outras funções relacionadas. No exemplo seguinte ilustra-se a leitura de um caractereusando o Monitor Serial: ```C void loop() { if (Serial.available() > 0) { // Verifica se há dados disponíveis para leitura char receivedChar = Serial.read(); // Lê o próximo caractere disponível Serial.print("Recebido: "); Serial.println(receivedChar); // Imprime o caractere recebido } } ``` #### Segundo Programa O *sketch* seguinte ilustra como monificar o *sketch* do primeiro programa anteriormente sugerido para começar a aproveitar as possibilidades do Monitor Serial: ```C /* BlinkRGB Demonstrates usage of onboard RGB LED on some ESP dev boards. Calling digitalWrite(RGB_BUILTIN, HIGH) will use hidden RGB driver. RGBLedWrite demonstrates control of each channel: void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) WARNING: After using digitalWrite to drive RGB LED it will be impossible to drive the same pin with normal HIGH/LOW level */ //#define RGB_BRIGHTNESS 64 // Change white brightness (max 255) // the setup function runs once when you press reset or power the board void setup() { // No need to initialize the RGB LED Serial.begin(9600); } // the loop function runs over and over again forever void loop() { digitalWrite(RGB_BUILTIN, HIGH); // Turn the RGB LED white Serial.println("LED ligado"); // Imprime o caractere recebido delay(1000); digitalWrite(RGB_BUILTIN, LOW); // Turn the RGB LED off Serial.println("LED desligado"); // Imprime o caractere recebido delay(1000); } ``` Depois garantir a selecionação do dispositivo ESP32 adequado ( *ESP32C6 Dev Module* ), copiar o código anterior, compilar e carregar o código para a placa ESP32, deverá ser possível verificar o resultado.
[![tft.gif](https://i.imgur.com/YJnmXyk.png)](https://i.imgur.com/YJnmXyk.png)[![tft.gif](https://i.imgur.com/OHiT1Gy.png)](https://i.imgur.com/OHiT1Gy.png)