Paso 4: El código
Abrir el entorno de Arduino. Luego copiar y pegar en un dibujo nuevo.
Luego subir el código a la placa Arduino.
#include < Servo.h >
Servo myservo; crear objeto servo para controlar un servo
int ResetTimer = 0; sistemas de retardo para restablecer la posición
int metaposición = 3; almacena la posición meta (1-5) donde la persona está de pie
int GoalPositionDegrees; almacena la posición del objetivo 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 eficacia establece la velocidad a la que los sensores se calibrar a las cambiantes condiciones de luz
int PinOneCurrent; almacena el valor actual de los pines 1-5
int PinTwoCurrent;
int PinThreeCurrent;
int PinFourCurrent;
int PinFiveCurrent;
Float PinOneAverage; almacena el valor promedio de pines 1-5
Float PinTwoAverage;
Float PinThreeAverage;
Float PinFourAverage;
Float PinFiveAverage;
Float RatioPinOne = 0.00; almacena la relación de valor de pin a pin valor promedio
Float RatioPinTwo = 0.00;
Float RatioPinThree = 0.00;
Float RatioPinFour = 0.00;
Float RatioPinFive = 0.00;
Umbral del flotador = 0,95; establece el umbral mínimo de sensores
void setup()
{
myservo.Attach(13); servo se conecta al pin digital 13
PinOneAverage = analogRead(1); lecturas de los sensores para establecer valor pin promedio inicial
PinTwoAverage = analogRead(2);
PinThreeAverage = analogRead(3);
PinFourAverage = analogRead(4);
PinFiveAverage = analogRead(5);
}
void loop()
{
leer pines analógicos 1-5 y establece el resultado como valor actual
PinOneCurrent = analogRead(1);
PinTwoCurrent = analogRead(2);
PinThreeCurrent = analogRead(3);
PinFourCurrent = analogRead(4);
PinFiveCurrent = analogRead(5);
ajustar los valores promedio de 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 promedio
RatioPinOne = (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 ajusta la posición del objetivo
ajuste a la posición meta
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; }
otra cosa
{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 el valor de escala
Delay(30); establece cómo quckly el servo se convierte (menor números de vuelta más rápido)
}