// =====================================
// MONITOR DE ENERGIA SOLAR SIMPLES
// =====================================
// Conexões físicas dos LEDs
const int verde = 2; // LED Verde no pino 2
const int amarelo = 3; // LED Amarelo no pino 3
const int vermelho = 4; // LED Vermelho no pino 4
// Sensor conectado na entrada analógica A0
const int sensor = A0;
void setup() {
// Configura cada pino de LED como saída
pinMode(verde, OUTPUT);
pinMode(amarelo, OUTPUT);
pinMode(vermelho, OUTPUT);
// Teste inicial: verifica se todos LEDs funcionam
digitalWrite(verde, HIGH);
digitalWrite(amarelo, HIGH);
digitalWrite(vermelho, HIGH);
delay(500);
digitalWrite(verde, LOW);
digitalWrite(amarelo, LOW);
digitalWrite(vermelho, LOW);
// Inicia comunicação com computador
[Link](9600);
[Link]("Monitor solar iniciado!");
}
void loop() {
// Passo 1: Ler valor do sensor
int valor_lido = analogRead(sensor);
// Passo 2: Converter para tensão (0-5V)
float tensao_medida = (valor_lido * 5.0) / 1023.0;
// Passo 3: Ajustar para tensão real da placa solar
// (Remova o *2 se não estiver usando divisor de tensão!)
tensao_medida = tensao_medida * 2;
// Passo 4: Mostrar valores no computador
[Link]("Leitura: ");
[Link](valor_lido);
[Link](" | Tensão: ");
[Link](tensao_medida);
[Link]("V");
// Passo 5: Controlar LEDs conforme tensão
if (tensao_medida >= 4.5) { // Boa carga (75-100%)
digitalWrite(verde, HIGH);
digitalWrite(amarelo, LOW);
digitalWrite(vermelho, LOW);
[Link]("Status: Ótimo!");
}
else if (tensao_medida >= 3.0) { // Carga média (50-75%)
digitalWrite(verde, LOW);
digitalWrite(amarelo, HIGH);
digitalWrite(vermelho, LOW);
[Link]("Status: Atenção!");
}
else { // Carga baixa (<50%)
digitalWrite(verde, LOW);
digitalWrite(amarelo, LOW);
digitalWrite(vermelho, HIGH);
[Link]("Status: CRÍTICO!");
}
// Esperar meio segundo antes de nova leitura
delay(500);
}