[Piquete] Introdução ao C
Introdução ao C
Do básico à preparação para o Arduino · Ensino Médio Técnico em Desenvolvimento de Sistemas
Introdução ao C
01O que é C?
C é uma linguagem de programação de propósito geral criada por Dennis Ritchie entre 1972 e 1973, nos Laboratórios Bell (Bell Labs), originalmente para desenvolver o sistema operacional UNIX. É compilada — o código que você escreve é traduzido para a linguagem da máquina antes de executar, o que a torna extremamente rápida e eficiente.
Curiosidade: O nome "C" veio por ser a sucessora de uma linguagem chamada "B" (criada por Ken Thompson). Além disso, C é considerada a "mãe" de muitas linguagens modernas — C++, Java, C#, JavaScript e PHP herdaram grande parte de sua sintaxe!
Linguagem Compilada vs Interpretada
Para entender C, é fundamental saber que existem dois grandes modelos de execução de linguagens de programação: compiladas e interpretadas. Cada uma tem características próprias que definem onde e como são usadas.
Linguagem Compilada
- O código-fonte é traduzido inteiramente para código de máquina antes da execução
- O processo de tradução é feito por um programa chamado compilador
- Gera um arquivo executável independente (
.exe, binário) - Execução muito mais rápida — a tradução já foi feita
- Erros de sintaxe são detectados antes de rodar o programa
Linguagem Interpretada
- O código-fonte é traduzido e executado linha por linha em tempo real
- A tradução é feita por um programa chamado interpretador
- Não gera executável — precisa do interpretador instalado
- Execução mais lenta — traduz enquanto executa
- Facilita testes rápidos e desenvolvimento ágil
Analogia: A linguagem compilada é como traduzir um livro inteiro para o português antes de publicá-lo — a leitura depois é fluida e rápida. A interpretada é como ter um tradutor simultâneo ao lado: funciona, mas há uma pequena demora em cada frase.
┌─────────────────────────────────────────────────────────────────┐ │ FLUXO DE COMPILAÇÃO C │ └─────────────────────────────────────────────────────────────────┘ programa.c ← você escreve aqui (código-fonte) │ ▼ Compilador (gcc) ← verifica erros e traduz tudo │ ▼ programa.exe ← arquivo executável gerado │ ▼ Execução rápida ← CPU roda diretamente, sem tradutor No Arduino: o IDE compila o sketch e grava o binário no chip!
Onde C é utilizado?
| Área | Exemplos do mundo real |
|---|---|
| 🖥️ Sistemas operacionais | Kernel do Linux, partes do Windows e do macOS |
| 🚗 Sistemas embarcados | Automóveis, eletrodomésticos, robótica, IoT |
| 🗄️ Bancos de dados | MySQL, PostgreSQL, SQLite, Redis |
| 🧩 Linguagens e interpretadores | Python (CPython), PHP e Ruby são escritos em C |
| 🔌 Drivers de dispositivos | Comunicação direta com o hardware |
| 🤖 Arduino / Eletrônica | Microcontroladores, sensores, automação |
Relação entre C e Arduino
Quando você programa um Arduino, está usando uma linguagem baseada em C (e C++)! A estrutura, os tipos de dados, as estruturas de controle e as funções que você aprender aqui serão aplicados diretamente em projetos com LEDs, sensores, motores e muito mais.
Conexão direta: Estruturas como if, for, while, funções e variáveis que você aprenderá aqui são exatamente as mesmas usadas no Arduino IDE!
- Cite 3 exemplos de produtos ou sistemas do cotidiano que provavelmente usam C no seu funcionamento.
- Por que uma linguagem compilada tende a ser mais rápida do que uma interpretada?
- O que você espera aprender em C que poderá aplicar em um projeto com Arduino?
Documentação Oficial e Ambientes Online
🔗Antes de começar a programar, conheça os principais recursos online para consultar a linguagem e testar seus códigos sem precisar instalar nada no computador.
📚 Documentação e Referência
cppreference (C)
A referência mais completa e atualizada da linguagem C. Contém todas as funções, tipos, bibliotecas padrão e exemplos — usada por profissionais do mundo todo.
en.cppreference.com/w/clearn-c.org
Tutorial interativo e gratuito de C, com exercícios executáveis direto no navegador. Ideal para praticar do básico ao intermediário.
learn-c.org⚡ Sandboxes — Teste seu código online
Estes ambientes permitem escrever, compilar e executar código C direto no navegador, sem instalar nada. Perfeito para testar os exemplos desta aula!
OnlineGDB
Compilador online com depurador integrado. Suporta printf, scanf e entrada de dados pelo usuário. Recomendado para iniciantes.
Compiler Explorer
Ferramenta avançada que mostra o código de máquina gerado pelo compilador. Excelente para entender como o C funciona por baixo dos panos.
godbolt.orgReplit
Ambiente completo de desenvolvimento na nuvem. Permite salvar projetos, compartilhar código com o professor e trabalhar em grupo online.
replit.comDica para a aula: Use o OnlineGDB para testar os exemplos desta apostila em tempo real. Basta copiar o código, colar no editor e clicar em Run. Sem instalação, sem configuração!
No futuro: Para projetos maiores e para programar o Arduino, você utilizará o VS Code com a extensão C/C++ ou o Arduino IDE — ambos gratuitos e instalados no laboratório.
Estrutura Básica de um Programa
02Todo programa em C segue uma estrutura básica. Veja o clássico "Olá, Mundo!":
#include <stdio.h> // Inclui a biblioteca padrão de entrada e saída int main() { // Função principal — todo programa começa aqui printf("Olá, Mundo!\n"); // Exibe texto na tela (\n = quebra de linha) return 0; // Indica que o programa terminou com sucesso }
#include <stdio.h>
O #include é uma diretiva de pré-processamento. Ela diz ao compilador: "inclua o conteúdo desta biblioteca antes de compilar". A biblioteca <stdio.h> (standard input/output) fornece as funções de entrada (scanf) e saída (printf) de dados.
int main()
Esta é a função principal do programa. Todo programa em C precisa de uma main() — é a partir dela que a execução começa. O int antes indica que ela retorna um número inteiro ao sistema operacional.
printf e \n
A função printf ("print formatted") é responsável por exibir informações na tela. O texto a ser exibido vai entre aspas duplas. A sequência \n representa uma quebra de linha (equivalente a pressionar Enter).
return 0
Ao final da main(), o return 0 informa ao sistema que o programa terminou corretamente. Um valor diferente de 0 indicaria que houve algum erro.
#include <stdio.h> int main() { printf("Bem-vindo à aula de C!\n"); printf("Hoje vamos aprender o básico.\n"); printf("Vamos lá!\n"); return 0; }
- Escreva um programa que exiba seu nome, cidade e turma na tela, cada um em uma linha diferente.
- O que aconteceria se removêssemos o
#include <stdio.h>? Por quê? - Qual a diferença entre
printf("Olá")eprintf("Olá\n")?
Variáveis e Tipos de Dados
03Variáveis são espaços na memória onde guardamos informações temporariamente durante a execução do programa. Em C, toda variável precisa ter um tipo definido.
Tipos Primitivos
| Tipo | Descrição | Exemplo de valor | Especificador |
|---|---|---|---|
int | Números inteiros | -5, 0, 42, 1000 | %d |
float | Decimais (precisão simples) | 3.14, -0.5 | %f |
double | Decimais (dupla precisão) | 3.14159265358 | %lf |
char | Um único caractere | 'A', 'z', '5' | %c |
bool | Verdadeiro ou falso (requer <stdbool.h>) | true, false | %d |
char[ ] | Texto — vetor de caracteres | "Olá, mundo!" | %s |
Diferença importante para o C++: Em C não existe o tipo string. Para armazenar textos, usamos um vetor de caracteres (char nome[ ]). Cada letra ocupa uma posição, e o texto termina com um caractere especial invisível '\0'.
#include <stdio.h> #include <stdbool.h> // Necessário para usar bool, true e false int main() { // Declaração e atribuição de variáveis int idade = 17; // Número inteiro float altura = 1.75; // Decimal com menos precisão double saldo = 1523.99; // Decimal com mais precisão char inicial = 'A'; // Um único caractere — aspas simples! bool aprovado = true; // Verdadeiro ou falso char nome[] = "Maria Silva"; // Texto — vetor de char, aspas duplas! // Exibindo os valores — cada tipo usa seu especificador printf("Nome: %s\n", nome); printf("Idade: %d\n", idade); printf("Altura: %.2f m\n", altura); printf("Saldo: R$ %.2lf\n", saldo); printf("Inicial: %c\n", inicial); printf("Aprovado: %d\n", aprovado); // Exibe 1 (true) ou 0 (false) return 0; }
Atenção! char usa aspas simples 'A' e o texto (vetor de char) usa aspas duplas "texto". Trocar um pelo outro causa erro de compilação! Cada tipo também tem seu especificador de formato no printf (%d, %f, %c, %s).
Constantes com const
Quando um valor não deve mudar durante o programa, use a palavra-chave const:
const double PI = 3.14159265; // PI nunca mudará const int MAX_ALUNOS = 40; // Capacidade máxima da sala // PI = 3.14; ← ERRO! Não se pode alterar uma constante
Dica: Em C também é muito comum definir constantes com a diretiva #define, por exemplo: #define PI 3.14159 (sem ponto e vírgula no final).
- Declare variáveis para armazenar: nome do produto, preço, quantidade em estoque e se está disponível. Use os tipos corretos para cada uma.
- Qual a diferença prática entre
floatedouble? Quando usar cada um? - Por que usamos
const? Dê um exemplo prático de uso em um sistema escolar. - Qual especificador de formato do
printfusamos para exibir umint? E umchar? E um texto?
Entrada e Saída de Dados
04Um programa útil precisa receber dados do usuário e mostrar resultados. Em C, usamos scanf para entrada e printf para saída.
printf — Saída de dados
printf("Texto simples\n"); // Texto + quebra de linha printf("Nota: %.1f\n", nota); // Texto concatenado com variável printf("A + B = %d\n", a + b); // Texto + expressão calculada printf("%d anos e nota %.1f\n", idade, nota); // Vários valores de uma vez
scanf — Entrada de dados
#include <stdio.h> int main() { char nome[50]; int idade; float nota; printf("Digite seu nome: "); fgets(nome, 50, stdin); // Lê a linha inteira (incluindo espaços) printf("Digite sua idade: "); scanf("%d", &idade); // O & indica o ENDEREÇO da variável printf("Digite sua nota: "); scanf("%f", ¬a); printf("\n--- Dados cadastrados ---\n"); printf("Nome: %s", nome); // fgets já inclui o \n do nome printf("Idade: %d\n", idade); printf("Nota: %.1f\n", nota); return 0; }
Atenção ao & no scanf! Ao ler int, float e char com scanf, é obrigatório colocar & antes da variável (ex.: scanf("%d", &idade)). O & indica o endereço onde o valor será guardado. Esquecer o & é um dos erros mais comuns em C!
scanf vs fgets: Use scanf("%s", nome) para ler uma palavra (sem espaços). Use fgets(nome, tam, stdin) para ler frases completas com espaços. Observe que com %s no scanf o texto não leva &, pois o nome do vetor já representa um endereço.
- Crie um programa que pergunte o nome e a idade e exiba: "Olá, [nome]! Você tem [idade] anos."
- Leia dois números e exiba a soma, a diferença e o produto entre eles.
- Por que precisamos do
&ao ler umintcomscanf, mas não ao ler um texto com%s?
Operadores
05Operadores Aritméticos
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
+ | Adição | 10 + 3 | 13 |
- | Subtração | 10 - 3 | 7 |
* | Multiplicação | 10 * 3 | 30 |
/ | Divisão | 10 / 3 | 3 (inteiro!) |
% | Módulo (resto) | 10 % 3 | 1 |
++ | Incremento | x++ | x = x + 1 |
-- | Decremento | x-- | x = x - 1 |
Atenção: Divisão entre dois inteiros resulta em inteiro! 7 / 2 = 3, não 3.5. Para resultado decimal, pelo menos um número deve ser float: 7.0 / 2 = 3.5.
Operadores Relacionais
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
== | Igual a | 5 == 5 | 1 (verdadeiro) |
!= | Diferente de | 5 != 3 | 1 (verdadeiro) |
> | Maior que | 7 > 3 | 1 (verdadeiro) |
< | Menor que | 3 < 7 | 1 (verdadeiro) |
>= | Maior ou igual | 7 >= 7 | 1 (verdadeiro) |
<= | Menor ou igual | 3 <= 5 | 1 (verdadeiro) |
Verdadeiro e falso em C: Diferente de outras linguagens, em C o resultado de uma comparação é um número inteiro: 1 para verdadeiro e 0 para falso. Qualquer valor diferente de zero é considerado verdadeiro.
Operadores Lógicos
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
&& | E (AND) — ambos verdadeiros | 1 && 0 | 0 (falso) |
|| | OU (OR) — ao menos um verdadeiro | 1 || 0 | 1 (verdadeiro) |
! | NÃO (NOT) — inverte | !1 | 0 (falso) |
#include <stdio.h> int main() { int a = 10, b = 3; // Aritméticos printf("Soma: %d\n", a + b); // 13 printf("Divisão: %d\n", a / b); // 3 (inteiro!) printf("Resto: %d\n", a % b); // 1 // Relacionais printf("a > b? %d\n", a > b); // 1 (verdadeiro) printf("a == b? %d\n", a == b); // 0 (falso) // Lógicos int ok = (a > 5) && (b < 10); // verdadeiro E verdadeiro = 1 printf("Condição: %d\n", ok); // 1 return 0; }
- Calcule mentalmente:
17 % 5e20 % 4. Para que serve o módulo no dia a dia da programação? - Escreva uma expressão lógica que verifique se uma nota está entre 5 e 8 (inclusive).
- Crie um programa que leia dois números e mostre qual é o maior, qual é o menor e o resto da divisão do maior pelo menor.
Estruturas Condicionais
06Estruturas condicionais permitem que o programa tome decisões com base em condições. São a base da lógica de qualquer software.
#include <stdio.h> int main() { float nota; printf("Digite sua nota (0 a 10): "); scanf("%f", ¬a); if (nota >= 7.0) { // Se nota >= 7: aprovado printf("APROVADO!\n"); } else if (nota >= 5.0) { // Senão, se >= 5: recuperação printf("RECUPERAÇÃO\n"); } else { // Caso nenhuma condição seja verdade printf("REPROVADO\n"); } return 0; }
Lembre-se: == (dois iguais) compara valores. = (um igual) atribui um valor. Confundir os dois é um dos erros mais comuns em C!
#include <stdio.h> int main() { float temp; printf("Temperatura atual (°C): "); scanf("%f", &temp); if (temp < 0) { printf("Abaixo de zero! Risco de gelo.\n"); } else if (temp < 15) { printf("Frio — Vista um casaco.\n"); } else if (temp < 25) { printf("Temperatura agradável.\n"); } else { printf("Calor! Hidrate-se.\n"); } return 0; } // No Arduino: ideal para leitura de sensores de temperatura como o LM35 ou DHT11!
- Crie um programa que leia um número inteiro e diga se ele é par ou ímpar. (Dica: use o operador
%) - Leia 3 notas, calcule a média e classifique: Aprovado (≥7), Recuperação (5 a 6,9) ou Reprovado (<5).
- Crie um programa que leia a idade de uma pessoa e informe a faixa: criança (0–11), adolescente (12–17), adulto (18–59) ou idoso (60+).
Estruturas de Repetição
07Laços permitem executar um bloco de código várias vezes sem precisar reescrevê-lo — são indispensáveis em qualquer programa real.
Laço for — quando sabemos quantas vezes repetir
#include <stdio.h> int main() { int numero; printf("Tabuada de qual número? "); scanf("%d", &numero); // for (início; condição de parada; passo) for (int i = 1; i <= 10; i++) { printf("%d x %d = %d\n", numero, i, numero * i); } return 0; }
Laço while — quando repetimos enquanto uma condição for verdadeira
#include <stdio.h> int main() { const int SENHA = 1234; // Senha correta int tentativa; int tentativas = 0; printf("Digite a senha: "); scanf("%d", &tentativa); // Repete enquanto errar e não atingir 3 tentativas while (tentativa != SENHA && tentativas < 3) { tentativas++; printf("Senha incorreta! Tentativa %d/3\n", tentativas); printf("Tente novamente: "); scanf("%d", &tentativa); } if (tentativa == SENHA) { printf("Acesso liberado!\n"); } else { printf("Conta bloqueada!\n"); } return 0; } // No Arduino: while é usado para aguardar um sensor atingir certo valor!
Cuidado com loops infinitos! Se a condição do while nunca se tornar falsa, o programa trava. Certifique-se de que a variável de controle é atualizada dentro do laço.
- Use um
forpara exibir todos os números pares de 2 a 20. - Use um
whilepara acumular números digitados pelo usuário. O programa para quando o usuário digitar 0, então exibe a soma total. - Com
for, calcule o fatorial de um número digitado (ex: 5! = 5×4×3×2×1 = 120). - Qual a diferença principal entre
forewhile? Dê um exemplo de situação ideal para cada um.
Funções
08Funções são blocos de código reutilizáveis que executam uma tarefa específica. Elas organizam o programa, evitam repetição e facilitam a manutenção.
Princípio DRY: "Don't Repeat Yourself" — se você escreve o mesmo código em dois lugares, provavelmente deveria criar uma função!
Anatomia de uma função
// tipo_retorno nome_da_funcao(tipo param1, tipo param2, ...) int somar(int a, int b) { return a + b; // Retorna um int para quem chamou a função } // void = sem retorno | int, float, char... = com retorno
#include <stdio.h> // Função sem retorno e sem parâmetros void saudacao() { printf("Olá! Bem-vindo ao sistema.\n"); } // Função sem retorno, com parâmetro (texto = vetor de char) void saudar(char nome[]) { printf("Olá, %s!\n", nome); } // Função com retorno — calcula e devolve o resultado float calcularMedia(float n1, float n2, float n3) { return (n1 + n2 + n3) / 3.0; } int main() { saudacao(); // Chamada sem argumento saudar("Ana"); // Passando um argumento saudar("Carlos"); float media = calcularMedia(8.0, 6.5, 9.0); // Recebe o retorno printf("Média: %.2f\n", media); // 7.83 return 0; }
Dica: Em C, cada função deve ser definida (ou declarada com um protótipo) antes de ser usada. Por isso, escrevemos as funções auxiliares acima da main().
- Crie uma função
maximo(int a, int b)que receba dois inteiros e retorne o maior deles. - Crie uma função
ehPar(int n)que retorne1se o número for par e0se for ímpar. - Crie uma função
exibirLinha(char c, int qtd)que exiba o caracterecrepetidoqtdvezes. Ex:exibirLinha('-', 10)exibe----------.
Vetores (Arrays)
09Um vetor é uma variável que armazena vários valores do mesmo tipo em sequência. Em vez de criar 10 variáveis separadas para 10 notas, use um único vetor!
Declaração e acesso
#include <stdio.h> int main() { // Declaração: tipo nome[tamanho] float notas[5]; // 5 posições (índices 0 a 4) // Declaração já com valores iniciais int idades[4] = {17, 16, 18, 15}; // Acesso por índice — começa em 0! printf("Primeira idade: %d\n", idades[0]); // 17 printf("Última idade: %d\n", idades[3]); // 15 idades[1] = 19; // Modifica o segundo elemento return 0; }
Atenção! Índices começam em 0. Um vetor de tamanho 5 tem índices de 0 a 4. Acessar o índice 5 é um erro grave — acesso à memória indevida!
Percorrendo vetores com for
#include <stdio.h> // Tamanho definido como constante #define TAM 5 int main() { float notas[TAM]; float soma = 0; // Leitura das notas com laço for (int i = 0; i < TAM; i++) { printf("Nota do aluno %d: ", i + 1); scanf("%f", ¬as[i]); soma += notas[i]; // Acumula a soma } printf("\n--- Resultado ---\n"); // Exibe todas as notas for (int i = 0; i < TAM; i++) { printf("Aluno %d: %.1f\n", i + 1, notas[i]); } printf("Media da turma: %.2f\n", soma / TAM); return 0; } // No Arduino: vetores guardam múltiplas leituras de sensores ao longo do tempo!
- Crie um vetor com 7 temperaturas e calcule a temperatura média da semana.
- Dado um vetor de 10 números, encontre e exiba o maior e o menor valor.
- Leia 5 nomes e os exiba em ordem inversa (do último para o primeiro).
Boas Práticas de Programação
10Programar bem não é só fazer o código funcionar — é fazer código que outras pessoas (e você no futuro) consigam entender e modificar.
Indentação
Indentação são os recuos (espaços/tabs) que delimitam blocos de código. Código mal indentado é difícil de ler e dar manutenção.
for(int i=0;i<5;i++){if(i%2==0){printf("%d\n",i);}}
for (int i = 0; i < 5; i++) { if (i % 2 == 0) { printf("%d\n", i); } }
Comentários
// Comentário de linha única — explica o que está na frente int contador = 0; // Começa em zero /* * Comentário de múltiplas linhas * Ideal para documentar funções ou blocos complexos */ float calcularMedia(float n1, float n2, float n3) { return (n1 + n2 + n3) / 3.0; }
Nomes de Variáveis
| ❌ Evite | ✅ Prefira | Motivo |
|---|---|---|
int x | int idade_aluno | Nome claro e descritivo |
float n | float nota_final | Autoexplicativo |
char s1[] | char nome_produto[] | Contexto claro |
int a, b, c | int largura, altura, area | Sem ambiguidade |
Convenção snake_case: Em C, é tradicional usar snake_case para variáveis e funções — palavras em minúsculas separadas por sublinhado: media_final, calcular_area(), total_de_alunos. O estilo camelCase (mediaFinal) também é aceito; o importante é manter um padrão único no projeto inteiro.
- Reescreva aplicando boas práticas:
int a=10;int b=20;int c=a+b;printf("%d",c); - Liste 5 nomes de variáveis ruins e reescreva-as de forma mais descritiva.
- Por que boas práticas são especialmente importantes em projetos desenvolvidos em equipe?
Exercícios Práticos
11Coloque em prática tudo o que aprendeu. Estes exercícios combinam múltiplos conceitos em um único programa.
- Calculadora simples: Leia dois números e uma operação (
+,-,*,/) e exiba o resultado. Useif/else ifpara tratar cada operação. Trate divisão por zero! - Fibonacci: Exiba os 10 primeiros números da sequência de Fibonacci usando
fore um vetor. - Cadastro de turma: Armazene nomes e notas de 5 alunos em vetores. Exiba uma tabela e indique quem está aprovado (nota ≥ 7).
- IMC: Crie uma função
calcularIMC(float peso, float altura)que retorne o IMC e outraclassificarIMC(float imc)que exiba a classificação (abaixo do peso, normal, sobrepeso, obeso). - Palíndromo: Leia uma palavra e verifique se é um palíndromo (igual de trás para frente). Ex: "arara", "racecar".
Pequenos Desafios
12Para quem quer ir além! Estes desafios são mais elaborados e envolvem criatividade e raciocínio lógico avançado.
- 🎲 Jogo de adivinhação: O computador sorteia um número entre 1 e 100 (
rand() % 100 + 1, com<stdlib.h>). O usuário tenta adivinhar; o programa diz "maior" ou "menor". Conte as tentativas. - 📊 Ordenação manual: Leia 5 números, ordene do menor para o maior sem usar funções de biblioteca (use dois
foraninhados — Bubble Sort). - 🔢 Números primos: Crie uma função que retorne
1se um número for primo. Use-a para listar todos os primos até 100. - 💰 Caixa eletrônico: O usuário informa um valor a sacar. O programa informa o menor número de notas de R$100, R$50, R$20, R$10 e R$5 necessárias.
- 🏦 Mini banco: Crie um menu com
while+ifque permita: depositar, sacar, ver saldo e sair. Controle o saldo comdouble.
Preparação para Arduino
Como tudo o que você aprendeu será aplicado em projetos eletrônicos reais
if / else
Verificar leituras de sensores: "Se o sensor ultrapassar 40°C, acione o ventilador."
for / while
O loop() do Arduino funciona como um while(true) infinito, executando continuamente seu código.
Funções
No Arduino, setup() e loop() são funções. Você criará as suas para controlar LEDs, motores e displays.
Variáveis e tipos
Os mesmos tipos (int, float, char) armazenam leituras de sensores e controlam estados de componentes.
Vetores
Armazenam múltiplas leituras de sensores ao longo do tempo ou mapeiam sequências de LEDs.
Boas práticas
Comentários e nomes claros são essenciais em projetos embarcados, onde o código controla hardware real.
// Veja como os conceitos desta aula aparecem no Arduino IDE! const int LED = 13; // const: pino do LED const int SENSOR = A0; // const: pino do sensor analógico int leituras[10]; // Vetor para 10 leituras (arrays!) void setup() { // Função de inicialização — roda 1 vez pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { // Função principal — while(true) infinito! int valor = analogRead(SENSOR); // Lê o sensor (variável!) if (valor > 500) { // Estrutura condicional! digitalWrite(LED, HIGH); // Liga o LED } else { digitalWrite(LED, LOW); // Desliga o LED } delay(100); // Aguarda 100 ms }
Observação: O Arduino combina recursos de C e C++. Comandos como Serial.begin() usam a parte de C++, mas toda a base que você aprendeu neste material em C (tipos, operadores, if, for, while e funções) é o alicerce da programação de qualquer placa.
Você está pronto! Com os conceitos desta aula, você já tem a base para programar o Arduino. Na próxima aula, instalaremos o Arduino IDE e criaremos seu primeiro projeto eletrônico!
✍️ Material produzido para o Ensino Médio Técnico em Desenvolvimento de Sistemas
📚 caderno-ti.blogspot.com · Prof. Elton Alex Silva
Comentários
Postar um comentário
Ficou com alguma dúvida? Quer compartilhar sua experiência? Tem uma sugestão de
melhoria? Seu comentário é muito importante!