Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Atividade SEMB-2: Entradas Analógicas - Exercícios de Programação com Arduino, Provas de Sistemas Embarcados

Um conjunto de exercícios práticos para a disciplina de sistemas embarcados, utilizando a plataforma arduino. O foco é a implementação de código para controlar leds e um potenciômetro, utilizando comunicação serial. Os exercícios exploram conceitos como leitura de entradas analógicas e digitais, manipulação de leds, e comunicação serial.

Tipologia: Provas

2024

Compartilhado em 06/11/2024

joao-antonio-domingues-goncalves
joao-antonio-domingues-goncalves 🇧🇷

1 documento

1 / 10

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Relatório
Atividade SEMB-2
Entradas Analógicas
Integrantes: Gabriel Corcelli Felippi
Professor: Rafael
Figura 1 - Diagrama
pf3
pf4
pf5
pf8
pf9
pfa

Pré-visualização parcial do texto

Baixe Atividade SEMB-2: Entradas Analógicas - Exercícios de Programação com Arduino e outras Provas em PDF para Sistemas Embarcados, somente na Docsity!

Relatório

Atividade SEMB-

Entradas Analógicas

Integrantes: Gabriel Corcelli Felippi

Professor: Rafael

Figura 1 - Diagrama

case 2: // Botão 2 - LED Amarelo toggleLed(yellowLedPin); break; case 3: // Botão 3 - LED Vermelho toggleLed(redLedPin); break; case 4: // Botão 4 - LED RGB toggleRGB(); break; } } void toggleLed(int ledPin) { int currentState = digitalRead(ledPin); digitalWrite(ledPin, !currentState); // Alterna o estado do LED Serial.print("LED "); Serial.print(ledPin); Serial.println(currentState? " OFF" : " ON"); } void toggleRGB() { rgbLedState = (rgbLedState + 1) % 4; // Alterna entre 0 (apagado) e 3 (ciclo de cores) if (rgbLedState == 0) { // Apaga o LED RGB analogWrite(rgbRedPin, 0); analogWrite(rgbGreenPin, 0); analogWrite(rgbBluePin, 0); Serial.println("RGB LED OFF"); } else { // Muda a cor do LED RGB changeColor(); Serial.print("RGB LED color: "); Serial.println(colorIndex); } } void changeColor() { // Cores: Vermelho, Verde, Azul if (colorIndex == 0) { analogWrite(rgbRedPin, 255); analogWrite(rgbGreenPin, 0); analogWrite(rgbBluePin, 0); // Vermelho

} else if (colorIndex == 1) { analogWrite(rgbRedPin, 0); analogWrite(rgbGreenPin, 255); analogWrite(rgbBluePin, 0); // Verde } else if (colorIndex == 2) { analogWrite(rgbRedPin, 0); analogWrite(rgbGreenPin, 0); analogWrite(rgbBluePin, 255); // Azul } colorIndex = (colorIndex + 1) % 3; // Muda para a próxima cor }

Código dos botões

const int buttonPins[4] = {3, 5, 7, 9}; // Pinos dos botões int buttonStates[4] = {HIGH, HIGH, HIGH, HIGH}; // Estados dos botões const long debounceDelay = 50; // Delay para debouncing unsigned long lastButtonMillis[4] = {0, 0, 0, 0}; // Última vez que cada botão foi lido #define potenciometro A int valpot = 0; void setup() { Serial.begin(9600); for (int i = 0; i < 4; i++) { pinMode(buttonPins[i], INPUT_PULLUP); // Configura os pinos dos botões com pull-up } } void loop() { valpot = analogRead(potenciometro); for (int i = 0; i < 4; i++) { int reading = digitalRead(buttonPins[i]); if (reading == LOW && buttonStates[i] == HIGH) { if (millis() - lastButtonMillis[i] > debounceDelay) { buttonStates[i] = LOW; // Atualiza o estado do botão Serial.print("B"); Serial.print(i + 1); // Envia o número do botão (1-4) Serial.println(); lastButtonMillis[i] = millis(); // Atualiza o último tempo de leitura } } else if (reading == HIGH) { buttonStates[i] = HIGH; // Reseta o estado se o botão não estiver pressionado }

Fluxograma de Programação

Materiais

Tabela 1 - Materiais 2x Arduino UNO 6x resistor de 220Ω 3x LED 1x Potenciômetro 1x LED RGB