Paso 4: El código de Arduino
Así que aquí está el código para hacer realidad este proyecto funciona, asegúrese de que ha descargado la biblioteca remota IR primero o no funcionará.
Rápida explicación del código:
Cuando se presiona el pulsador el LED rojo se encenderá y el arduino se espere para que cualquier señal de IR a. Una vez que se detecta una señal, esa señal es salvada y se utiliza para cambiar el servo.
El servo se encuentra para estar siempre a 90 grados hasta que se recibe la señal, que entonces se mueve ya sea 180 grados o grado 1 que hace el brazo del servo golpeó el cable, encender la luz.
#include < IRremote.h >
#include < Servo.h >
int RECV_PIN = 11;
Irrecv(RECV_PIN) de IRrecv;
resultados de la decode_results;
sin firmar largo CurrentValue = 0;
unsigned StoredCode largo = 0;
const int buttonPin = 6; el número de pin pulsador
const int ledPin = 4; el número de los pines del LED
const int outputPin = 3; el número de los pines de salida LED
const int servoPin = 9;
int enableOutput = 0;
int buttonState = 0; variable para lectura del estado del pulsador
int RecordState = 0; es el receptor en modo de grabación
int outputState = 1; es la salida de encendido o apagado
Servo myservo;
int pos = 0;
void setup()
{
myservo.Attach(9);
Serial.Begin(9600);
irrecv.enableIRIn(); Inicio del receptor
pinMode (ledPin, salida); Inicializa el pin LED como salida:
pinMode (outputPin, salida); inicializar el perno pulsador como entrada:
pinMode (buttonPin, entrada); inicializar el perno pulsador como entrada:
}
void loop()
{buttonState = digitalRead(buttonPin); / / leer el estado del pulsador valor:
Si (irrecv.decode (y resultados)) {/ / si se detecta una señal, almacenar el valor
CurrentValue = (results.value);
Serial.println ("código recibido"); Visualiza almacenada el código para referencia
Si el valor recibido es igual al valor programado, entonces cambiar el estado de salida
if(currentValue == StoredCode) {}
enableOutput = 1;
}
Si (RecordState == 1) {/ / si se activa el modo de grabación almacenar el valor actual como el valor programado StoredCode = CurrentValue;
RecordState = 0;
digitalWrite (ledPin, LOW);
Serial.println(StoredCode); Visualiza almacenada el código para referencia
}
Delay(500);
irrecv.resume(); Recibir el siguiente valor
}
else //if que se detecte ninguna señal, entonces el valor actual es de 0
{CurrentValue = 0;
} Si (buttonState == HIGH) {/ / comprobar si se presiona el botón de grabación.
Si es así, el buttonState es alta:
mientras que (buttonState == HIGH) buttonState = digitalRead(buttonPin); esperar el botón para ser liberado digitalWrite (ledPin, HIGH); enciende el LED para indicar que ese modo de grabación está en
RecordState = 1;
}
Si ((outputState == 1) & &(enableOutput==1)) {//set el estado de salida apropiado Serial.println("State=1,Enable=1"); código //displays almacenados para referencia
POS = 1;
myservo.Write(POS);
Delay(1000);
pos = 90;
myservo.Write(POS);
Delay(15);
digitalWrite (outputPin, HIGH); outputState = 0;
}
else if ((outputState == 0) & &(enableOutput==1))
{
Serial.println("State=0,enable=1"); Visualiza que almacena el código
pos = 180;
myservo.Write(POS);
Delay(1000);
pos = 90;
myservo.Write(POS);
Delay(15);
digitalWrite (outputPin, bajo);
outputState = 1;
}
enableOutput = 0;
}