Código de motores especiales máquinas
Enviado por Erick Cardozo • 7 de Mayo de 2024 • Monografía • 554 Palabras (3 Páginas) • 58 Visitas
#include <Servo.h>
#include <SoftwareSerial.h>
Servo servoMotor; // Crear un objeto servo para controlar el servo
int potPin = A0; // Pin analógico donde está conectado el potenciómetro
int potControlPin = 2; // Pin digital para el control del potenciómetro
int serialControlPin = 3; // Pin digital para el control a través del puerto serial
int btservo =4;
int selector = 0; // Variable para seleccionar el modo de control (0: ninguno, 1: potenciómetro)
int bluetoothTx = 10;
int bluetoothRx = 11;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup() {
servoMotor.attach(9); // Conectar el servo al pin digital 9
pinMode(potControlPin, INPUT_PULLUP); // Configurar el pin del control del potenciómetro como entrada con pull-up
pinMode(serialControlPin, INPUT_PULLUP); // Configurar el pin del control serial como entrada con pull-up
Serial.begin(9600); // Iniciar la comunicación serial
bluetooth.begin(9600);
}
void loop() {
int var1 = digitalRead(potControlPin); // Leer el estado del pulsador del control del potenciómetro
int var2 = digitalRead(serialControlPin); // Leer el estado del pulsador del control serial
int var3 = digitalRead(btservo); // Leer el estado del pulsador del control serial
// Establecer el selector basado en el estado de los pulsadores
if (var1 == HIGH) {
selector = 1; // Modo de control del potenciómetro
} else if (var2 == HIGH) {
selector = 0; // Modo de control serial
}
else if (var3 == HIGH) {
selector = 3; // Modo de control blueooth
}
// Ejecutar el código correspondiente al modo de control seleccionado
if (selector == 1) { // Modo de control del potenciómetro
int val = analogRead(potPin); // Leer el valor del potenciómetro (entre 0 y 1023)
int angle = map(val, 0, 1023, 0, 180); // Mapear el valor del potenciómetro a un ángulo entre 0 y 180 grados
servoMotor.write(angle); // Mover el servo al ángulo calculado
delay(15); // Pequeña pausa para estabilidad
} else if (selector == 0) { // Modo de control serial
while (Serial.available() > 0) { // Mientras haya datos disponibles en el puerto serial
int angle = Serial.parseInt(); // Leer el ángulo desde el puerto serial
if (angle >= 0 && angle <= 180) { // Verificar que el ángulo esté en el rango válido
servoMotor.write(angle); // Mover el servo al ángulo especificado
}
// Esperar a que llegue el siguiente dato antes de volver a leer
while
...