Étape 5: Le Code
Ici, c’est la logique qui sous-tend le code : il y a 2 variables « compteur »-pour la détection de blanche et un noir. Au début, ils sont mis à « countmax », qui est ici de 10 secondes. Toutes les 10 millisecondes, l’Arduino cherche une détection soit haute ou basse, et elle affecte au compteur pour ce qu’il trouve à countmax, tandis que l’autre compteur descend par 10. Si un compteur descend en dessous de "countwarn" (2 secondes), le signal sonore retentit. Si chaque compteur descend en dessous de zéro, il s’éteint le relais alors le signal sur le câble RCA est ouvert et rien ne va à la TV.
Vous pouvez modifier les variables pour définir le max et le temps de mise en garde. Il y a beaucoup de Instructables ici environ téléchargeant un fichier .ino à l’Arduino. J’utilise un Nano, mais l’ONU ou toute autre devrait probablement fonctionner. Il doit y avoir des meilleures façons d’écrire le code, mais je suis un ingénieur civil, pas un programmeur informatique.
Si je l’ai fait juste, bikerelay.ino est attachée et qui est le code dont vous avez besoin (pourrait quelqu'un mis sur github?). Voici la version texte laid si cela ne fonctionne pas :
int ledpin = 13 ; active la lumière arduino lorsqu’il y a une détection
int ledpin2 = 11 ; active la LED ou la sonnerie externe lorsqu’il y a une détection int outputpin = 3 ; broches de la commande du relais est fixée à sensorpin int = 12 ; broche le détecteur est attaché à int warnpin = 4 ; broche utilisée pour activer le compteur d’avertissement LED ou sonnerie int = 0 ; compte à rebours depuis la dernière détection int counter2 = 0 ; compte à rebours depuis le dernier non-détection
modifier les 2 paramètres pour régler la minuterie intervalles int countmax = 10000 ; niveau maximum du compte à rebours. 1000 = 1 deuxième int countwarn = 2000 ; quand tourner sur la broche de mise en garde. 1000 = 1 deuxième void setup() {pinMode (ledpin, sortie); pinMode (ledpin2, sortie); pinMode (outputpin, sortie); pinMode (warnpin, sortie); pinMode (sensorpin, INPUT); compteur = countmax ; counter2 = countmax ; //any ligne avec « serial » est pour le débogage et devrait être commentée si n’est pas nécessaire parce qu’il va ralentir l’horloge / / Serial.begin(9600) ; //Serial.print ("count:") ; Serial.println(Counter) ; Serial.Print ("count2:") ; Serial.println(counter2) ; } void loop() {si (digitalRead(sensorpin)) //what faire quand il y a une non-détection {digitalWrite (ledpin, LOW); digitalWrite (ledpin2, LOW); Compteur = compteur - 10 ; counter2 = countmax;} //what autre chose à faire quand il y a une détection {digitalWrite(ledpin,HIGH) ; digitalWrite(ledpin2,HIGH) ; compteur = countmax ; counter2 = counter2 - 10;}
lignes de sortie série pour le débogage //Serial.print ("count:") ; Serial.println(Counter) ; Serial.Print ("count2:") ; Serial.println(counter2) ; Serial.println("---") ; lancer un avertissement si un compteur est supérieur à 0, mais sous le niveau de « countwarn » si (contrer > 0 & & compteur < countwarn || counter2 > 0 & & counter2 < countwarn) {digitalWrite (warnpin, HIGH);} else {digitalWrite (warnpin, LOW);}
désactiver la sortie si deux gouttes de compteur au-dessous de 0 //these paramètres sont pour un relais « low active ». Interrupteur « Haut » et plus bas pour un actif haute production si (compteur < 0) {digitalWrite (outputpin, HIGH); compteur = 0;} ElseIf (counter2 < 0) {digitalWrite (outputpin, HIGH); counter2 = 0;} else {digitalWrite (outputpin, LOW);}
Delay(10) ; attendre un temps (en millisecondes) avant d’aller à nouveau
}