Control de Puerta con Servo y LEDs en Arduino: Código Comentado y Explicado

Deporte y Educación Física2,97 KB

Control de una puerta con servo y LEDs en Arduino

A continuación se muestra el código completo para controlar una puerta mediante un servo motor, varios LEDs y un potenciómetro, utilizando comandos enviados por el puerto serie.

Código fuente

#include <Servo.h>

Servo puerta;

int ledAzul = 6;

int ledAmarillo = 11;

int ledRojo = 5;

int ledVerde = 3;

int pot = A0;

int intensidad;

int espera;

int angulo;

char letra;

void setup()
{
  puerta.attach(9);
  pinMode(ledAzul, OUTPUT);
  pinMode(ledAmarillo, OUTPUT);
  pinMode(ledRojo, OUTPUT);
  pinMode(ledVerde, OUTPUT);
  pinMode(pot, INPUT);
  Serial.begin(9600);
}

void loop()
{
  int valor = analogRead(pot);
  intensidad = valor * 255 / 1023;
  espera = valor * 1400 / 1023 + 100;
  angulo = valor * 90 / 1023;
  analogWrite(ledVerde, intensidad);
  Serial.print("intensidad = ");
  Serial.println(intensidad);
  if (Serial.available() > 0)
  {
    letra = Serial.read();
  }
  if (letra == 'P' || letra == 'p')
  {
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledAmarillo, LOW);
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledAzul, HIGH);
    puerta.write(90);
  }
  if (letra == 'C' || letra == 'c')
  {
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledAmarillo, LOW);
    digitalWrite(ledAzul, LOW);
    puerta.write(0);
  }
  if (letra == 'A' || letra == 'a')
  {
    digitalWrite(ledAzul, LOW);
    digitalWrite(ledRojo, HIGH);
    digitalWrite(ledAmarillo, LOW);
    delay(300);
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledAmarillo, HIGH);
    delay(300);
  }
  if (letra == 'S' || letra == 's')
  {
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledAmarillo, LOW);
    digitalWrite(ledAzul, LOW);
  }
  if (letra == 'F' || letra == 'f')
  {
    digitalWrite(ledRojo, HIGH);
    digitalWrite(ledAmarillo, HIGH);
    digitalWrite(ledAzul, HIGH);
    analogWrite(ledVerde, intensidad);
    puerta.write(angulo);
    delay(espera);
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledAmarillo, LOW);
    digitalWrite(ledAzul, LOW);
    analogWrite(ledVerde, 0);
    puerta.write(0);
    delay(espera);
  }
  if (letra == 'T' || letra == 't')
  {
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledAmarillo, LOW);
    digitalWrite(ledAzul, LOW);
    analogWrite(ledVerde, 0);
    puerta.write(0);
  }
}

Descargar

PDF Word HTML