Étape 3: Arduino Sketch
J’ai utilisé les résistances de 1K sur la led1Pin et led2Pin.
J’ai utilisé la résistance de 10K à transistor 2N2222 base, speakerPin au sol à l’émetteur. Puis l’emiter est allé à un côté de l’interrupteur de jouet et le collecteur à l’autre. Cela a fonctionné le transistor 2N2222 comme un interrupteur.
Regardez les commentaires de l’arduino pin de câblage.
#include < X10Firecracker.h >
#include < Servo.h >
Servo myservo ; Nouvelle instance de Servo.h
int rtsPin = 2 ; Ligne de DPE pour C17A - DB9 broche 7
int dtrPin = 3 ; Ligne DTR pour C17A - DB9 broche 4
Connectez DB9 broche 5 au sol.
int servoPin = 5 ; Servo utilisé pour soulever la bobine
int pirPin = 8 ;
int led1Pin = 10 ; Conduit de gauche
int led2Pin = 11 ; Conduit droit
int speakerPin = 12 ; Haut-parleur de buzzer piézo
int bitDelay = 1 ; Mme delay entre bits (1 mS OK)
int ledStatus = 0 ;
int calibrationTime = 30 ;
unsigned long int lowIn ;
unsigned long int pause = 5000 ;
Boolean lockLow = true ;
Boolean takeLowTime ;
int booCounter = 1 ;
void setup() {}
Serial.Begin(9600) ; Commencer la communication série à 9600 Baud
pinMode (led1Pin, sortie) ; Set led1Pin broche numérique à la sortie
pinMode (led2Pin, sortie) ; Set led1Pin broche numérique à la sortie
pinMode (speakerPin, sortie); / / Set speakerPin broche numérique à la sortie
pinMode (servoPin, sortie) ; Set led1Pin broche numérique à la sortie
myservo.Attach(7) ; ATACH servo sur la broche 7 servo de rotation continue
X10.init (rtsPin, dtrPin, bitDelay) ; Initialize X10 C17A
pinMode (pirPin, entrée) ;
digitalWrite (pirPin, basse) ;
donner le capteur quelque temps à étalonner
Serial.Print ("calibrage capteur") ;
pour (int i = 0; i < calibrationTime; i ++) {}
Serial.Print(".") ;
Delay(1000) ;
}
Serial.println ("terminé") ;
Serial.println ("capteur actif") ;
Delay(50) ;
myservo.Write(140) ;
}
void loop() {}
if(digitalRead(pirPin) == HIGH) {}
Serial.Print ("[[[get| http://www.mysite.com/iobridge.html]]]") ; Envoyer message série à iobridge.
digitalWrite (led1Pin, HIGH) ; le voyant lumineux visualise l’état de broche de sortie de capteurs
digitalWrite (led2Pin, HIGH) ; le voyant lumineux visualise l’état de broche de sortie de capteurs
{if(lockLow)}
fait en sorte de que nous attendre pour une transition vers le bas avant n’importe quelle autre sortie est faite :
lockLow = false ;
Libérer la bobine en soulevant le servo.
myservo.Write(140) ;
Allumez jouet avec son
digitalWrite (speakerPin, HIGH) ;
Delay(100) ;
digitalWrite (speakerPin, basse) ;
Delay(7000) ;
myservo.Write(65) ;
commandes d’envoi x10 à trun off/on s’allume
X10.sendCmd (hcC, 1, cmdOn) ;
X10.sendCmd (hcC, 3, cmdOn) ;
X10.sendCmd (hcC, 2, cmdOff) ;
var int = 0 ;
Activer le servo de rotation continue.
tandis que (var < 800) {}
digitalWrite(servoPin,HIGH) ;
delayMicroseconds(1200) ; 1.5ms
digitalWrite(servoPin,LOW) ;
Delay(20) ; 20ms
var ++ ;
}
Delay(50) ;
}
takeLowTime = true ;
}
if(digitalRead(pirPin) == faible) {}
Si (ledStatus == 0) {}
digitalWrite (led1Pin, HIGH) ;
digitalWrite (led2Pin, basse) ;
ledStatus = 1 ;
Delay(100) ;
}
else {}
digitalWrite (led1Pin, basse) ;
digitalWrite (led2Pin, HIGH) ;
ledStatus = 0 ;
Delay(100) ;
}
{if(takeLowTime)}
lowIn = millis() ; économiser le temps de la transition entre la haute et basse
takeLowTime = false ; Veillez à ce que cela se fait uniquement au début d’une phase de faible
}
Si le capteur est faible plus la pause donnée,
Nous partons du principe qu’aucun mouvement plus ne va se passer
Si (! lockLow & & millis() - lowIn > pause) {}
fait bien sûr ce bloc de code est exécuté uniquement après
une nouvelle séquence de mouvement a été détectée
lockLow = true ;
Commandes d’envoi x10
X10.sendCmd (hcC, 1, cmdOff) ;
X10.sendCmd (hcC, 3, cmdOff) ;
X10.sendCmd (hcC, 2, cmdOn) ;
}
}
}