Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
Script:
#include <LiquidCrystal.h>
#include <RotaryEncoder.h>
// Definições de pinos
#define PIN_ENCODER_A 2
#define PIN_ENCODER_B 3
#define PIN_ENCODER_BUTTON 4
#define PIN_LCD_RS 5
#define PIN_LCD_EN 6
#define PIN_LCD_D4 7
#define PIN_LCD_D5 8
#define PIN_LCD_D6 9
#define PIN_LCD_D7 10
// Inicialização do LCD e do Rotary Encoder
LiquidCrystal lcd(PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7);
RotaryEncoder encoder(PIN_ENCODER_A, PIN_ENCODER_B);
int volume = 0;
int inputIndex = 0;
const int numInputs = 8;
String inputNames[numInputs] = {"Entrada1", "Entrada2", "Entrada3", "Entrada4", "Entrada5", "Entrada6", "Entrada7", "Entrada8"};
bool editingName = false;
unsigned long buttonPressTime = 0;
bool buttonPressed = false;
void setup() {
pinMode(PIN_ENCODER_BUTTON, INPUT_PULLUP);
lcd.begin(16, 2);
updateDisplay();
}
void loop() {
encoder.tick();
// Verificar mudanças no encoder
int newPos = encoder.getPosition();
if (newPos != volume) {
volume = newPos;
updateDisplay();
}
// Verificar botão do encoder
if (digitalRead(PIN_ENCODER_BUTTON) == LOW) {
if (!buttonPressed) {
buttonPressed = true;
buttonPressTime = millis();
} else if (millis() - buttonPressTime > 2000) {
if (!editingName) {
editingName = true;
lcd.setCursor(0, 1);
lcd.print("Editar Nome");
}
}
} else {
if (buttonPressed) {
buttonPressed = false;
if (editingName) {
editingName = false;
updateDisplay();
} else {
inputIndex = (inputIndex + 1) % numInputs;
updateDisplay();
}
}
}
// Editar nome da entrada
if (editingName) {
int charPos = encoder.getPosition() % 16;
char currentChar = inputNames[inputIndex][charPos];
if (encoder.getPosition() != newPos) {
currentChar = (currentChar + 1) % 128;
inputNames[inputIndex][charPos] = currentChar;
lcd.setCursor(charPos, 1);
lcd.print(currentChar);
}
}
}
void updateDisplay() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Volume: ");
lcd.print(volume);
lcd.setCursor(0, 1);
lcd.print("Entrada: ");
lcd.print(inputNames[inputIndex]);
}
Como Executar o Script:
1. Monte o circuito conectando o PIC16F876A ao PGA2310, Rotary Encoder e LCD 16x2 conforme os pinos definidos no script.
2. Carregue o script no ambiente de desenvolvimento do Arduino.
3. Compile e faça upload do script para o microcontrolador PIC16F876A.
4. Utilize o rotary encoder para ajustar o volume e selecionar a fonte de entrada.
5. Pressione o botão do rotary encoder por 2 segundos para entrar no modo de edição do nome da entrada.
6. Use o encoder para modificar os caracteres e pressione o botão para mover o cursor.
7. Saia do modo de edição para salvar o nome da entrada.