// Declaración de constantes
const int OFF = 0;
const int ON = 1;
// Pines de los botones
const int SW1 = 2; // Botón 1
const int SW2 = 4; // Botón 2
const int SW3 = 16; // Botón 3
const int SW4 = 17; // Botón 4
const int SW5 = 22; // Botón para el Servo
// Pines de los relevadores
const int K1 = 18; // Relé 1
const int K2 = 19; // Relé 2
const int K3 = 21; // Relé 3
// Variables para el estado de los botones
int S_SW1;
int S_SW2;
int S_SW3;
int S_SW4;
int S_SW5;
// Variables para los valores análogos
float V_VR1;
float V_PWM1;
float V_PWM2;
// Pines para el potenciómetro y el control PWM
const int VR1 = 34; // Pin analógico para el potenciómetro
const int PWM1 = 25; // Pin PWM para el transistor
const int PWM2 = 26; // Pin PWM para el Servo
// Función para obtener lecturas
void RE() {
S_SW1 = digitalRead(SW1);
S_SW2 = digitalRead(SW2);
S_SW3 = digitalRead(SW3);
S_SW4 = digitalRead(SW4);
S_SW5 = digitalRead(SW5);
V_VR1 = analogRead(VR1);
V_PWM1 = map(V_VR1, 0, 4095, 0, 255); // Convertir la lectura del potenciómetro a PWM
V_PWM2 = map(V_VR1, 0, 4095, 0, 255); // PWM para el servo
}
// Función para apagar los relés
void STP() {
digitalWrite(K1, OFF);
digitalWrite(K2, OFF);
digitalWrite(K3, OFF);
}
// Función para movimiento hacia adelante
void FWR() {
digitalWrite(K1, ON);
}
// Función para movimiento en reversa
void REV() {
digitalWrite(K1, ON);
digitalWrite(K2, ON);
digitalWrite(K3, ON);
}
// Función para girar a la izquierda
void TL() {
digitalWrite(K1, ON);
digitalWrite(K2, ON);
}
// Función para girar a la derecha
void TR() {
digitalWrite(K1, ON);
digitalWrite(K3, ON);
}
void SRV() {
analogWrite(PWM2, 0);
delay(500);
analogWrite(PWM2, 255);
delay(500);
}
void setup() {
Serial.begin(9600);
// Configuración de pines de botones como entrada
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
pinMode(SW3, INPUT);
pinMode(SW4, INPUT);
pinMode(SW5, INPUT);
// Configuración de pines de relevadores como salida
pinMode(K1, OUTPUT);
pinMode(K2, OUTPUT);
pinMode(K3, OUTPUT);
// Iniciar con los relés apagados
STP();
// Configuración de PWM y potenciómetro
pinMode(PWM1, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(VR1, INPUT);
}
void loop() {
// Obtener lecturas
RE();
// Control del transistor mediante PWM
analogWrite(PWM1, V_PWM1);
int Q = map(V_VR1, 0, 4095, 100, 0); // Mapeo para mostrar porcentaje
Serial.print("Transistor abierto en: ");
Serial.print(Q);
Serial.println("%");
// Control del servo mediante PWM
if (S_SW1 == ON){
SRV();
}
// Control de relevadores basado en los botones
if (S_SW1 == ON) {
Serial.println("Avanzando...");
FWR();
} else if (S_SW2 == ON) {
Serial.println("Giro a la Derecha...");
TR();
delay(10);
} else if (S_SW3 == ON) {
Serial.println("Giro a la Izquierda...");
TL();
delay(10);
} else if (S_SW4 == ON) {
Serial.println("Retrocediendo...");
REV();
delay(10);
} else {
Serial.println("Parando...");
STP();
delay(10);
}
// Retardo para estabilidad
delay(100);
}