Paso 3: Sensor de pulso y código
El sensor del pulso puede adquirirse en SparkFun por $24.95, sparkfun también proporciona el código que tendrá que trabajar gratis!
Así que agarra tu Arduino, conexión Arduino USB, sensor de pulso, protector de Motor y llegar a un equipo!
(aunque más que probable que ya se encuentra en una computadora si estás leyendo este jajaja)
Adelante y deslice su escudo del Motor en la parte superior su Arduino y se conecta en su computadora, una vez abierto el programa de Arduino puede conectar el sensor de pulso (cable morado a A0, rojo para 5V o 3V y negro a tierra) y he desarrollado este código combina el código de sensor de pulso y el código de barrido básico
Lo que debe suceder es en cierta frecuencia cardíaca es menor que 66 bpm se moverá a una velocidad estándar, si su ritmo cardíaco es superior a 66 bpm se moverá más rápido:
#include < Servo.h > Servo myservo; crear objeto servo para controlar un servo se puede crear un máximo de ocho objetos de servo int pinNineInput = 9; int pulsePin = 0; Pulso púrpura Sensor cable conectado al pin analógico 0 int blinkPin = 13; PIN a parpadear led en cada latido fadePin int = 5; pasador de lujo blink de decoloración con clase en cada latido int fadeRate = 0; solía desaparecer LED en con PWM en fadePin estas variables son volátiles porque se utilizan durante la rutina de servicio de interrupción. int volátil BPM; utiliza para mantener el pulso volátil int señal; contiene los datos crudos entrantes int volátil IBI = 600; retiene el tiempo entre contracciones, el intervalo entre latidos volátil pulso boolean = false; verdadero cuando el pulso es alto, false cuando es baja volátiles QS boolean = false; llega a ser verdad cuando Arduoino encuentra un ritmo. int pos = BPM; void setup() { myservo.Attach(9); se fija el servo en el pin 9 al objeto servo pinMode(blinkPin,OUTPUT); PIN que empezará a parpadear a los latidos del corazón! pinMode(fadePin,OUTPUT); PIN que se decoloran a los latidos del corazón! Serial.Begin(115200); Estamos de acuerdo en hablar rápido! interruptSetup(); poder para leer la señal del Sensor de pulso cada 2 ms ONU-comentario la línea siguiente si está encendido el Sensor del pulso en bajo voltaje, Y QUE LA TENSIÓN SE APLICA AL PERNO A-REF analogReference(EXTERNAL); } void loop() { Si (pinNineInput < 66) { para (pos = 0; pos < 360; pos += 2) / / va desde 0 grados a 360 grados {/ / en pasos de 1 grado myservo.Write(POS); Dile el servo a la posición en la variable 'pos' Delay(5); espera 5 ms para el servo a la posición } para (pos = 360; pos > = 1; pos-= 2) / / va de 360 grados a 0 grados { myservo.Write(POS); Dile el servo a la posición en la variable 'pos' Delay(5); espera 5 ms para el servo a la posición } para (pos = 0; pos < 360; pos += 1) / / va desde 0 grados a 360 grados {/ / en pasos de 1 grado myservo.Write(POS); Dile el servo a la posición en la variable 'pos' Delay(15); espera 15ms para el servo a la posición } para (pos = 360; pos > = 1; pos-= 1) / / va de 360 grados a 0 grados { myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(15); espera 15ms para el servo a la posición
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
}
else if (pinNineInput > = 66)
{
{
para (pos = 0; pos < 360; pos += 2) / / va desde 0 grados a 360 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(5); espera 5 ms para el servo a la posición
}
para (pos = 360; pos > = 1; pos-= 2) / / va de 360 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(5); espera 5 ms para el servo a la posición
}
para (pos = 0; pos < 360; pos += 1) / / va desde 0 grados a 360 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(4); 4ms para el servo a la posición de espera
}
para (pos = 360; pos > = 1; pos-= 1) / / va de 360 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(4); 4ms para el servo a la posición de espera
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(3); espera 3 ms para el servo a la posición
}
}
}
otra cosa
{
para (pos = 0; pos < 360; pos += 2) / / va desde 0 grados a 360 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(10); espera 10 ms para el servo a la posición
}
para (pos = 360; pos > = 1; pos-= 2) / / va de 360 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(10); espera 10 ms para el servo a la posición
}
para (pos = 0; pos < 360; pos += 1) / / va desde 0 grados a 360 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(15); espera 15ms para el servo a la posición
}
para (pos = 360; pos > = 1; pos-= 1) / / va de 360 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(15); espera 15ms para el servo a la posición
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(7); 7ms para el servo a la posición de espera
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(7); 7ms para el servo a la posición de espera
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(7); 7ms para el servo a la posición de espera
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(7); 7ms para el servo a la posición de espera
}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(7); 7ms para el servo a la posición de espera
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS); Dile el servo a la posición en la variable 'pos'
Delay(7); 7ms para el servo a la posición de espera
}
}
Serial.Print(BPM);
Serial.Print("\t");
sendDataToProcessing (de ', señal); enviar procesamiento de los datos en bruto del Sensor pulso
Si (QS == true) {/ / bandera ser cuantificada es verdadera cuando arduino encuentra un latido
fadeRate = 255; Conjunto 'fadeRate' Variable de hasta 255 descolorarse LED con pulso
sendDataToProcessing('B',BPM); enviar de la frecuencia cardíaca con un prefijo 'B'
sendDataToProcessing('Q',IBI); enviar tiempo entre latidos con un prefijo 'Q'
QS = false; restablecer la bandera de ser cuantificado para la próxima vez
// }
ledFadeToBeat();
myservo.Attach(9); se fija el servo en el pin 9 al objeto servo
myservo.Write(POS);
Delay(3000); tomar un descanso
}
void ledFadeToBeat() {}
fadeRate-= 15; Ajuste el fade de LED
fadeRate = constrain(fadeRate,0,255); evitar LED fade valor de a números negativos!
analogWrite(fadePin,fadeRate); se descolora LED
}
void sendDataToProcessing (símbolo de char, int datos) {}
Serial.Print(Symbol); Prefijo símbolo dice procesamiento viene qué tipo de datos
Serial.println(Data); los datos para enviar hasta culminar en un retorno de carro
// }
Una vez cargado el código prueba enchufando su cola a la parte del escudo del motor que dice Servo2.
Nota:
Este código fue desarrollado sólo para el motor de un servo, para aquellos que quieren controlar dos motores servo que se debe ajustar este código. También se estará trabajando en él para tener en cuenta dos servomotores pero si alguien me pega a él y desarrolla un código de su propio por favor no te olvides compartir! : D
El código de Sensor de pulso original puede encontrarse aquí:
SparkFun