Hola buenas tardes, tengo un problema al programar, tengo un infrarrojo, sensores de temperatura, control remoto, etc. cuando ejecuto el programa tengo problemas, primero le adjunto el código.
// Cargando las librerias
#include <LiquidCrystal.h>
#include <IRremote.h>
#include <Wire.h>
#include <Servo.h>
// Declaración de variables
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int RECV_PIN = 9; // Conexión del infrarrojo
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo servoMotor;
float lectura;
float voltaje = 0.0;
int carga;
// Configuración principal
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
irrecv.enableIRIn(); // Habilitamos el control remoto
pinMode(6, OUTPUT); // Salida al relé 1
pinMode(7, OUTPUT); // Salida al relé 2
pinMode(8, OUTPUT); // Salida la bocina
servoMotor.attach(10); // Configuración del servomotor
servoMotor.write(0);
}
// Configurando las funciones de Termovicho Pro
void loop()
{
float temperatura = analogRead(0); // Configuraciones del sensor temperatura exterior
float milivoltios = (temperatura / 1023) * 5000;
temperatura = milivoltios / 10;
float temperaturaint = analogRead(1); // Configuraciones del sensor de temperatura interna
float milivoltiosint = (temperaturaint / 1023) * 5000;
temperaturaint = milivoltiosint / 10;
if (irrecv.decode(&results)) { // Configuraciones del control remoto
switch(results.value)
{
case 16580863: Serial.println("On / Off"); // Encendemos el equipo
if (temperaturaint < 40) {
lcd.clear();
lcd.print(" Bienvenido");
lcd.setCursor(0,1);
lcd.print("Termovicho Pro");
delay(300);
lcd.clear();
lcd.print("Iniciando espere");
delay(300);
} else {
digitalWrite(6, LOW);
digitalWrite(7, LOW);
lcd.clear();
lcd.print(" PRECAUCION ");
lcd.setCursor(0,1);
lcd.print(" Sobrecalentado");
tone(8, 220, 500);
delay(500);
}
break;
case 16597183: Serial.println("Func / Stop"); //Mostramos nuestro nivel de carga
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Voltaje:");
lcd.setCursor(9, 0);
lectura_voltios(1, 2); //Hace un llamado a la lectura del voltaje entrante
lcd.setCursor(13, 0);
lcd.print("V ");
lcd.setCursor(0,1);
lcd.print("Carga: ");
lcd.print(carga);
lcd.print("% ");
delay(1000);
if (carga < 20){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Bateria muy baja");
lcd.setCursor(0,1);
lcd.print("Cargue el equipo");
delay(1000);
}
break;
case 16613503: Serial.println("Vol +"); // Encendemos los 2 relés
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual");
lcd.setCursor(0,1);
lcd.print("Potencia al 100%");
break;
case 16617583: Serial.println("Vol -"); //Encendemos 1 relé
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Manual");
lcd.setCursor(0,1);
lcd.print("Potencia al 50%");
break;
case 16621663: Serial.println("Play"); //Detenemos el servomotor
servoMotor.detach();
break;
case 16625743: Serial.println("Eq"); // Detección automática de la temperatura ambiente
if (temperatura < 19) {
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
lcd.clear();
lcd.print("Temperatura: ");
lcd.println(temperatura);
lcd.setCursor(0,1);
lcd.print("Potencia 100%");
delay(500);
} else if (temperatura > 20 && temperatura < 25) {
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
lcd.clear();
lcd.print("Temperatura: ");
lcd.println(temperatura);
lcd.setCursor(0,1);
lcd.print("Potencia 50%");
delay(500);
} else {
digitalWrite(6, LOW);
digitalWrite(7, LOW);
lcd.clear();
lcd.print("Temperatura: ");
lcd.println(temperatura);
lcd.setCursor(0,1);
lcd.print("Apagado");
delay(500);
}
break;
case 16609423: Serial.println("ST / Rep"); // Encendemos el servomotor en modo automático
for (int i = 0; i <= 180; i++)
{
servoMotor.write(i);
delay(25);
}
for (int i = 179; i > 0; i--)
{
servoMotor.write(i);
delay(25);
}
break;
case 16584943: Serial.println("Abajo"); // Habilitamos el servomotor a la derecha
lcd.clear();
lcd.print("Girando a la");
lcd.setCursor(0,1);
lcd.print("Derecha");
delay(500);
lcd.clear();
lcd.print("Presione Pausa");
lcd.setCursor(0,1);
lcd.print("Para frenar");
for (int i = 0; i <= 180; i++)
{
servoMotor.write(i);
delay(25);
}
break;
case 16601263: Serial.println("Arriba"); // Habilitamos el servomotor a la izquierda
lcd.clear();
lcd.print("Girando a la");
lcd.setCursor(0,1);
lcd.print("Izquierda");
delay(500);
lcd.clear();
lcd.print("Presione Pausa");
lcd.setCursor(0,1);
lcd.print("Para frenar");
for (int i = 179; i > 0; i--)
{
servoMotor.write(i);
delay(25);
}
break;
default: Serial.println(results.value);
}
irrecv.resume();
}
delay(300);
}
void lectura_voltios(float unidad, int decimales)
{
lectura = analogRead(A2);
if (lectura == 0) {
lcd.setCursor(0, 1);
lcd.print("Falla Bateria");
}
else {
voltaje = ((5 * float(lectura)) / 1023);
lcd.print(float(voltaje) * 3 * unidad, decimales);
carga = map(float(voltaje) * 3, 4.8, 6.20, 0, 100);
lcd.print(carga);
}
}
Ya revise varias veces el código y no me doy cuenta del error que dice:
In function `__vector_7':
539: multiple definition of `__vector_7'
/home/circuits/Arduino/libraries/IRremote/src/IRremote.cpp:126: first defined here
error: ld returned 1 exit status
exit status 1
Esto es un proyecto de la facultad