Paso 4: código
Ahora el código Halloween Props Instructable y mi código de satélite son muy similares sin embargo utilizo 5 sensores en vez de tres pero aqui se. copiarla y adaptarla a su elección. Para realmente controlar la configuración de cómo desea moverse paga cerca de atención en el umbral del flotador y el retraso porque el umbral determina cómo el servo convierte en dirección sabia mientras que el retardo se utiliza para indicar el rapidez para mover servo.
#include servo myservo; crear objeto servo para controlar un servoint ResetTimer = 0; retraso para restablecer positionint metaposición = 3; almacena la posición meta (1-5) donde la persona es standingint GoalPositionDegrees; almacena la posición meta en grados (30-150) int CurrentPositionDegrees = 90; almacena la posición actual en grados (30-150) int AveragingSpeed = 100; establece cómo rápidamente ajustan los valores medios (un valor menor valor medio cambia rápidamente) / / rápidamente. Un valor de 100 cambia lentamente el valor medio / su efectivamente establece la velocidad a la que los sensores se calibrar a cambio conditionsint luz PinOneCurrent; valor actual de almacenes de pernos 1-5int PinTwoCurrent; int PinThreeCurrent; int PinFourCurrent; int PinFiveCurrent; float PinOneAverage; almacena la media valor de pernos PinTwoAverage 1-5float flotador PinThreeAverage flotador PinFourAverage; float PinFiveAverage; float RatioPinOne = 0.00; almacena la relación de valor de pin actual en un promedio de valuefloat pin RatioPinTwo = 0.00; float RatioPinThree = 0.00; float RatioPinFour = 0.00; float RatioPinFive = 0.00; float umbral = 0,95; umbral mínimo de sistemas de sensorsvoid setup(){myservo.attach(A0); //attaches servo para pin digital 13PinOneAverage = analogRead(A1); //reads de los sensores para establecer pin promedio inicial valuePinTwoAverage = analogRead(A2); PinThreeAverage = analogRead(3); PinFourAverage = analogRead(4); PinFiveAverage = analogRead(A5);} void loop() {//read analógica 1-5 de los pernos y establece el resultado como valor actual PinOneCurrent = analogRead(1); PinTwoCurrent = analogRead(A2); PinThreeCurrent = analogRead(3); PinFourCurrent = analogRead(A4); PinFiveCurrent = analogRead(A5); ajustar los valores de media pin PinOneAverage = PinOneAverage + (PinOneCurrent-PinOneAverage) / AveragingSpeed; PinTwoAverage = PinTwoAverage + (PinTwoCurrent-PinTwoAverage) / AveragingSpeed; PinThreeAverage = PinThreeAverage + (PinThreeCurrent-PinThreeAverage) / AveragingSpeed; PinFourAverage = PinFourAverage + (PinFourCurrent-PinFourAverage) / AveragingSpeed; PinFiveAverage = PinFiveAverage + (PinFiveCurrent-PinFiveAverage) / AveragingSpeed; calcula el cociente del valor actual de pin a pin valor RatioPinOne promedio = (float) PinOneCurrent/PinOneAverage; RatioPinTwo = (float) PinTwoCurrent/PinTwoAverage; RatioPinThree = (float) PinThreeCurrent/PinThreeAverage; RatioPinFour = (float) PinFourCurrent/PinFourAverage; RatioPinFive = (float) PinFiveCurrent/PinFiveAverage; determinar que relación es la más grande y establece la meta meta posición //set si (RatioPinThree < umbral & & RatioPinThree < RatioPinOne & & RatioPinThree < RatioPinTwo & & RatioPinThree < RatioPinFour & & RatioPinThree < RatioPinFive) {metaposición = 3; ResetTimer = 0; } else if (RatioPinOne < umbral & & RatioPinOne < RatioPinTwo & & RatioPinOne < RatioPinThree & & RatioPinOne < RatioPinFour & & RatioPinOne < RatioPinFive) {metaposición = 1; ResetTimer = 0; } else if (RatioPinTwo < umbral & & RatioPinTwo < RatioPinOne & & RatioPinTwo < RatioPinThree & & RatioPinTwo < RatioPinFour & & RatioPinTwo < RatioPinFive) {metaposición = 2; ResetTimer = 0; } else if (RatioPinFour < umbral & & RatioPinFour < RatioPinOne & & RatioPinFour < RatioPinTwo & & RatioPinFour < RatioPinThree & & RatioPinFour < RatioPinFive) {metaposición = 4; ResetTimer = 0; } else if (RatioPinFive < umbral & & RatioPinFive < RatioPinOne & & RatioPinFive < RatioPinTwo & & RatioPinFive < RatioPinThree & & RatioPinFive < RatioPinFour) {metaposición = 5; ResetTimer = 0; } else if (ResetTimer > 100) retraso //after se restablece a la posición 3 {metaposición = 3; ResetTimer = 0; } else {ResetTimer = ResetTimer + 1;} GoalPositionDegrees = metaposición * 25 + 15; la posición del objetivo se convierte en grados myservo.write(GoalPositionDegrees); ajusta la posición del servo según la escala valuedelay(30); establece cómo quckly el servo se convierte (menor números de vuelta más rápido)}