hola espero que todos esten bien , necesito ayuda porfavor con un codigo ,lo explico:
Bueno tengo un codigo ya unido con leds que parpadean un led que prende con un pulsador y un servomotor pero necesito agregarle a ese codigo un sensor ultrasonico que controla 3 leds con una cierta distancia , pero al unir los codigos hay falles en los otros , porfavor ayuda .
A continuacion mostrare ambos codigos , el primero codigo tiene unido unas luces led que parpadean . un led que se activa con un pulsador y un servomotor y el segundo codigo es solamente el sensor ultrasonico .
Primer codigo
#define pinLED1 8 // Definimos pin 8
#define pinLED2 12 // Definimos pin 12
#define pinLED3 13 // Definimos pin 13
Servo myServo; // Crea un objeto Servo
const int buttonPin = 2; // Pin al que está conectado el botón
const int servoPin = 9; // Pin al que está conectado el servomotor
unsigned long previousMillis = 0; // Almacena el tiempo anterior
const long interval = 100; // Intervalo para el parpadeo de LEDs
int ledIndex = 0; // Índice del LED que parpadea
void setup() {
// Configuración de los LEDs
pinMode(pinLED1, OUTPUT);
pinMode(pinLED2, OUTPUT);
pinMode(pinLED3, OUTPUT);
// Configuración del servomotor
myServo.attach(servoPin); // Conecta el servomotor al pin digital 9
pinMode(buttonPin, INPUT_PULLUP); // Configura el pin del botón como entrada con resistencia pull-up
}
void loop() {
// Control del parpadeo de los LEDs
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Apagar todos los LEDs
digitalWrite(pinLED1, LOW);
digitalWrite(pinLED2, LOW);
digitalWrite(pinLED3, LOW);
// Encender el LED correspondiente
if (ledIndex == 0) {
digitalWrite(pinLED1, HIGH);
} else if (ledIndex == 1) {
digitalWrite(pinLED2, HIGH);
} else if (ledIndex == 2) {
digitalWrite(pinLED3, HIGH);
}
ledIndex = (ledIndex + 1) % 3; // Ciclo a través de los LEDs
}
// Control del servomotor con el botón
if (digitalRead(buttonPin) == LOW) {
moverServo(0, 180); // Mueve el servomotor de 0 a 180 grados
delay(500); // Pausa breve para evitar múltiples activaciones
moverServo(180, 0); // Mueve el servomotor de 180 a 0 grados
delay(500); // Pausa breve para evitar múltiples activaciones
}
}
// Función para mover el servomotor
void moverServo(int startAngle, int endAngle) {
int step = (startAngle < endAngle) ? 1 : -1;
for (int angle = startAngle; angle != endAngle + step; angle += step) {
myServo.write(angle);
delay(15); // Ajusta este tiempo según la velocidad deseada
}
}
Segundo código
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds *0.01723
return (pulseIn(echoPin, HIGH)*0.01723);
}
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop()
{
cm =readUltrasonicDistance(7, 6);
Serial.print(cm);
Serial.println("cm");
if (cm > 250) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
if (cm <= 250 && cm > 175) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
if (cm <= 175 && cm > 100) {
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
if (cm <= 100) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
}
delay(100); // Wait for 100 millisecond(s)
}