Girouette analogique avec obturateur automatique mis en place (5 / 8 étapes)

Étape 5: Code

const int analogInPin = A0 ; Broche d’entrée analogique si le potentiomètre est fixé au const int analogOutPin = 9 ; Sorties analogiques broches que le LED est attaché à const int tonePin = 11 ; int sensorValue = 1 ; float outputValue = 0 ; float rawDirection = 0 ; float maxSensorValue = 980.9999 ; float minSensorValue = 5.0001 ; int finalDirection = 0 ; int biggestAddingDirection = 0 ; int z = 0 ; int sensorValue2 = 0 ; int n = 0 ; int modeSize = 0 ; int c = 0 ; degré d’int = 0 ; int addingDirection [] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39, 40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119, 120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199, 200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279, 280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319, 320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362} ; void setup() {pinMode (sortie 12); / / cela fournit les courtes impulsions d’énergie du capteur de broche 12. pinMode (sortie 13); pinMode (2, INPUT_PULLUP); digitalWrite (13, faible) ; Serial.Begin(9600) ; tandis que (degré < 362) / / Set 362 toutes les valeurs à zéro. {addingDirection [degrés] = 0; degré ++;} maxSensorValue = 984.9999 ; } void loop() {resetValues(); z = 0; n ++; sensorValue2 = 0; while (z < 10) / / Get 10 lectures rapides. {z ++; digitalWrite (12, HIGH); delay(5); / / lecture de l’analogique en valeur : sensorValue = analogRead(analogInPin) ; sensorValue2 = sensorValue2 + sensorValue ; digitalWrite (12, LOW); delay(45);} Delay(500) ; Attribuez à ce retard donc total 500 = 1 seconde. sensorValue = (sensorValue2/z) ; Supposons que Deadband commence à 356,5 et se termine à 0 / / et de zéro correspondent à 360 ou 0 degrés: / / l’analogue maximale lecture je me fais sur l’essuie-glace est 981 / / un dépassement possible de 1024 (10 bits) si (sensorValue == 0) {outputValue = 0;} outputValue = ((sensorValue-minSensorValue)*356.5/maxSensorValue)+1.75 ; selfCalibrate() ; Vérifie la portée maximale des lectures analoue quand capteur sort de zone morte. / / Non calculs de linéarité: / / maintenant supposer que max non linéarité est à 240 degrés et +0.53 / / Supposons également que la non linéarité elle-même est linéaire, non pas une courbe : si (outputValue < 240 || outputValue == 240) {rawDirection = outputValue * 0,53 / 240 + outputValue;} si (outputValue > 240) {rawDirection = 0.53*(358-outputValue)/118 + outputValue;} si (sensorValue == minSensorValue) {rawDirection = 360;} / / / Serial.print ("capteur =") ; Serial.Print(sensorValue) ; Serial.Print ("\t sortie =") ; Serial.Print(outputValue,2) ; Serial.Print ("\t ajusté sortie =") ; Serial.Print(rawDirection,2) ; Serial.Print ("\t valeur capteur Max =") ; Serial.Print(maxSensorValue,2) ; Serial.Print ("\t valeur capteur Min =") ; Serial.Print(minSensorValue,2) ; Serial.Print ("\t n =") ; Serial.println(n) ; digitalWrite (12, faible) ; degré = (int) rawDirection ; / / Special affaire pour rawDirection = 360 : si (rawDirection == 360) {degré = 359 + c, c ++;} si (c > 2) {c = 0;} si (degré == 361) {degré = 1;} / / / / / calculer le mode en cours d’exécution (certaines de ces variables devront être réinitialisée par un appel retour de processeur principal)
. addingDirection [degrés] = addingDirection [degrés] + 1 ; Si (addingDirection [degrés] > modeSize) {modeSize = modeSize + 1; finalDirection = degré;} / / / si (finalDirection == 359 || finalDirection == 360 || finalDirection == 1) {finalDirection = 360;} Serial.Print ("taille Mode =") ; Serial.Print(modeSize) ; Serial.Print ("\t degré =") ; Serial.Print(degree) ; Serial.Print ("\t Mode Final Direction =") ; Serial.Print(finalDirection) ; Serial.Print ("\t ajout direction [degrés] =") ; Serial.println(addingDirection[degree]) ; Serial.println("");} 30 jours = 2592000 secondes / / chaque boucle de n x 10 est dix secondes / / chaque valeur de capteur max dix secondes est réduite de 0,0001 / / les valeurs de chaque 30 jours max capteur réduit par 2592000 / 10 * 0,00001 = 25,92 degrés / / dans les 3 jours de vents du Nord valeur max capteur ajustera par autant que 2,592 degrés. Pendant les vents du Nord, le capteur sera soi calibrer : void selfCalibrate() {si (sensorValue > maxSensorValue) {maxSensorValue = sensorValue ; tone(11,1000,500);} si (sensorValue < minSensorValue) {minSensorValue = sensorValue ; tone(11,2000,500);} si (((n>10) & &(sensorValue>900)) || ((n>10) & &(sensorValue<100))) Ne modifiez min et lectures de capteurs max dans un vent du Nord. {maxSensorValue = maxSensorValue - 0,01; / / lentement tire retour max capteur valeur. minSensorValue = minSensorValue + 0,01; / / lentement pousse vers l’avant du capteur valeur. n min = 0;} } void resetValues() / / nécessite une impulsion de retrait appel de 5 secondes pour réinitialiser les valeurs de clés. {Rappel int = digitalRead(2) ; if (rappel == faible) {digitalWrite (13, HIGH); modeSize = 0; tone(11,2500,500) ; tandis que (degré < 362) {addingDirection [degrés] = 0; degré ++;}} else {digitalWrite (13, LOW);}}

Articles Liés

Mise en place d’un courtier MQTT. Partie 2: ITO, domotique

Mise en place d’un courtier MQTT. Partie 2: ITO, domotique

Avant-proposOkay en ' partie 1: ITO, domotique ', vous avez créé et configuré votre « Vanilla » Raspberry Pi (pardonnez le jeu de mots) et peut y connecter à distance avec du mastic. Maintenant, nous allons configurer un serveur qui établira votre in
Un Guide pour la mise en place et mise en route avec votre nouveau Macbook Pro 2015 (13" ou 15")

Un Guide pour la mise en place et mise en route avec votre nouveau Macbook Pro 2015 (13" ou 15")

En tant que nouveau propriétaire d'un Macbook Pro 2015 vous pourriez avoir besoin d'un guide pour aider à comprendre les complexités mineures de ce morceau impressionnant de technologie. Eh bien, cherchez pas plus loin ! Nous avons pour vous ici un f
Mis en place en 4 étapes avec Ubuntu de filtrage de contenu de web

Mis en place en 4 étapes avec Ubuntu de filtrage de contenu de web

comme un informaticien, une des choses plus courantes collègues me poser est comment ils peuvent contrôler quels sites leurs enfants peuvent accéder en ligne. C'est très facile à faire et à libérer à l'aide d'Ubuntu linux, dansguardian et tinyproxy.É
Mise en place d’un DNS active pour pointer vers un Pi 2 de framboise avec un serveur web sur elle

Mise en place d’un DNS active pour pointer vers un Pi 2 de framboise avec un serveur web sur elle

Cette image décrit l'écoulement du trafic à utiliser un service DNS Active ! Services DNS Active sont également arbitrés à comme services de DNS gère aussi bienÉtape 1: Choisir un service DNS Active à utiliserCe lien fournit une liste de fournisseurs
Mise en place de votre Pi framboise

Mise en place de votre Pi framboise

Bienvenue à nos instructions pour la mise en place d'une nouvelle marque Pi framboise ! Malgré quoi ça ressemble, un Pi de framboise est un ordinateur ; il manque juste une majorité de cloches et de sifflets avec que la plupart des ordinateurs sont l
Cam de sécurité Pi framboise facile avec Upload automatique Web

Cam de sécurité Pi framboise facile avec Upload automatique Web

Il s'agit d'un projet que j'ai mis ensemble super rapide au moins une semaine ou plus. La raison pour laquelle que j'avais besoin de mettre en place la façon dont je l'ai fait a été d'obtenir un système de sécurité de base en place dès que possible p
Mise en place d’un serveur VNC sur votre facture pro forma framboise

Mise en place d’un serveur VNC sur votre facture pro forma framboise

si votre Pi framboise est conçu pour exécuter une tâche qui ne nécessite normalement pas un moniteur, souris et clavier (ou toutes les relations humaines d'ailleurs), il est parfois utile d'accéder aux systèmes d'exploitation de la Pi vos framboises
Mise en place et l’exécution de NOOBS sur une facture pro forma framboise

Mise en place et l’exécution de NOOBS sur une facture pro forma framboise

Dans cette instruction, je vais aller sur comment mettre en place le Pi de la framboise et il amorcer des NOOBS pour la première fois. Il est important de comprendre comment configurer tout le matériel et la manière de mettre en place le système d'ex
Mise en place de la Zybot - logiciel Version 2

Mise en place de la Zybot - logiciel Version 2

Ce Instructable fait partie d'une série de six épisodes de construire la Zybot. Dans ce Instructable nous sera mise en place du côté du logiciel de le Zybot. Le ZYBO (Zynq Conseil) est un logiciel embarqué et la plateforme de développement de circuit
Mise en place d’un hotspot Wi-Fi à l’aide de TP-Link TL-MR3020 routeur sans fil N

Mise en place d’un hotspot Wi-Fi à l’aide de TP-Link TL-MR3020 routeur sans fil N

Il s'agit d'un guide sur la mise en place d'un hotspot Wi-Fi simple à l'aide d'une installation TP-Link TL-MR3020 routeur N sans fil 3 G/4 G avec NoDogSplash. L'objectif est de fournir un hotspot gratuit avec une page de garde de la publicité qui fou
Compteur de tension de voiture, la version analogique (avec rétro-éclairage « intelligent »)

Compteur de tension de voiture, la version analogique (avec rétro-éclairage « intelligent »)

Initialement, j'ai fait 7 segments tension compteur, mais le soleil rend difficile à lire. Pensé pour rendre la version analogique avec rétro-éclairage intelligent ; interrupteurs de couleur lorsque se pose le problème de sur-ou sous tension. Voltmèt
Portable 12 volts 17 Watt générateur de vent avec enrouleur automatique

Portable 12 volts 17 Watt générateur de vent avec enrouleur automatique

j'ai juste conçu et construit une pratique, portable 12 volts 17 Watt générateur de vent idéal (et approprié) pour mettre en place dans les terrains de camping, parcs, expositions de jour de la terre, stations de recherche et la propriété familiale d
Mise en place d’Apple AirPort routeur sans fil

Mise en place d’Apple AirPort routeur sans fil

tout dans notre monde est aujourd'hui va sans fil et Wi-Fi n'est pas nouveau. Cependant, il n'y a peut-être des personnes qui sont encore sans elle et si c'est votre première fois, créez votre propre réseau sans fil personnel, ces instructions seront
Un autre presque gratuit ordinateurs client léger mis en place la partie II.

Un autre presque gratuit ordinateurs client léger mis en place la partie II.

Dans cette section nous ajouter certains logiciels de sécurité internet et permettre l'accès au réseau des clients ltsp.Étape 1: Configuration de proxyPour filtrer l'internet nous avons besoin d'un outil pour nous permettre de le faire. Tinyproxy nou