Paso 3: Sketch de Arduino
Usé las resistencias de 1K en el led1Pin y led2Pin.
Usé el resistor de 10K en speakerPin va al transistor 2N2222 base, tierra para el emisor. Luego lo emiter fue a un lado del interruptor de juguete y el colector fue a la otra. Esto funcionó el transistor 2N2222 como un interruptor.
Mire los comentarios para el arduino pin cableado.
#include < X10Firecracker.h >
#include < Servo.h >
Servo myservo; Nueva instancia de Servo.h
int rtsPin = 2; Línea RTS para C17A - DB9 pin 7
int dtrPin = 3; Línea DTR para C17A - DB9 pin 4
Conectar el DB9 pin 5 a tierra.
int servoPin = 5; Servo para levantar el carrete
pirPin int = 8;
int led1Pin = 10; Led de la izquierda
int led2Pin = 11; Led derecho
int speakerPin = 12; Altavoz piezoeléctrico del zumbador
int bitDelay = 1; retraso de mS entre bits (1 mS OK)
int ledStatus = 0;
int calibrationTime = 30;
tiempo unsigned int lowIn;
pausa larga unsigned int = 5000;
Boolean lockLow = true;
takeLowTime Boolean;
int booCounter = 1;
void setup() {}
Serial.Begin(9600); Iniciar la comunicación serial a 9600 baudios
pinMode (led1Pin, salida); Led1Pin Set pin digital a la salida
pinMode (led2Pin, salida); Led1Pin Set pin digital a la salida
pinMode (speakerPin, salida); / / configurar el pin digital speakerPin a la salida
pinMode (servoPin, salida); Led1Pin Set pin digital a la salida
myservo.Attach(7); Atach servo en el pin 7 para servo de rotación continua
X10.init (rtsPin, dtrPin, bitDelay); Inicializar X10 C17A
pinMode (pirPin, entrada);
digitalWrite (pirPin, LOW);
dar el sensor de tiempo para calibrar
Serial.Print ("calibración sensor");
para (int i = 0; i < calibrationTime; i ++) {}
Serial.Print(".");
Delay(1000);
}
Serial.println ("hecho");
Serial.println ("SENSOR activo");
Delay(50);
myservo.Write(140);
}
void loop() {}
if(digitalRead(pirPin) == HIGH) {}
Serial.Print ("[[[get| http://www.mysite.com/iobridge.html]]]"); Enviar mensaje serial a iobridge.
digitalWrite (led1Pin, HIGH); el led visualiza el estado de pin de salida de sensores
digitalWrite (led2Pin, HIGH); el led visualiza el estado de pin de salida de sensores
{if(lockLow)}
se cerciora de que esperamos una transición a la baja antes de cualquier salida de más:
lockLow = false;
Suelte la bobina levantando servo.
myservo.Write(140);
Gire el juguete con sonido
digitalWrite (speakerPin, HIGH);
Delay(100);
digitalWrite (speakerPin, bajo);
Delay(7000);
myservo.Write(65);
los comandos enviar x10 al trun apagado/encendido luces
X10.sendCmd (hcC, 1, cmdOn);
X10.sendCmd (hcC, 3, cmdOn);
X10.sendCmd (hcC, 2, cmdOff);
int var = 0;
Activar el servo de rotación continua.
mientras (var < 800) {}
digitalWrite(servoPin,HIGH);
delayMicroseconds(1200); 1.5ms
digitalWrite(servoPin,LOW);
Delay(20); 20ms
var ++;
}
Delay(50);
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW) {}
Si (ledStatus == 0) {}
digitalWrite (led1Pin, HIGH);
digitalWrite (led2Pin, bajo);
ledStatus = 1;
Delay(100);
}
Else {}
digitalWrite (led1Pin, bajo);
digitalWrite (led2Pin, HIGH);
ledStatus = 0;
Delay(100);
}
{if(takeLowTime)}
lowIn = millis(); ahorrar el tiempo de la transición de alto a bajo
takeLowTime = false; Asegúrese de que esto sólo se hace en el inicio de una fase
}
Si el sensor está bajo más de la pausa dada,
asumimos que no hay movimiento más va a pasar
Si (! lockLow & & millis() - lowIn > pausa) {}
hace que este bloque de código es sólo se ejecuta después de
se ha detectado una nueva secuencia de movimiento
lockLow = true;
Comandos de enviar x10
X10.sendCmd (hcC, 1, cmdOff);
X10.sendCmd (hcC, 3, cmdOff);
X10.sendCmd (hcC, 2, cmdOn);
}
}
}