Servo e sensore conflitto
Ciao a tutti, sto provando a realizzare un progetto che permetta di muovere un servo dopo che un lettore di impronte digitali abbia riconosciuto una impronta previamente registrata. Ho gia scritto il codice e funziona abbastanza bene, il problema è che il servo fa dei micromovimenti strani e non riesco a risolvere il problema.
Sto utilizzando un servo DXW90 ed un lettore GT 511 e le loro librerie.
Il circuito è cosi realizzato:
Il codice è questo:
Ed il problema che da è possibile vederlo qui:
https://www.youtube.com/watch?v=vxnQHaX2LfA
Qualcuno sa cosa puo essere e come risolverlo?
Ho gia provato ad utilizzare una tensione esterna con 3 batteria ma niente, il problema non sembra essere di corrente, inoltre il servo singolarmente funziona bene, non fa questi micromovimenti qundi sembra che sia un problema di interferenza tra la comunicazioni dei due componenti.
Sto utilizzando un servo DXW90 ed un lettore GT 511 e le loro librerie.
Il circuito è cosi realizzato:
Il codice è questo:
- Codice: Seleziona tutto
#include "FPS_GT511C3.h"
#include "SoftwareSerial.h" // usata dalla FPS_GT511C3.h
#include "Arduino.h"
#include "ServoTimer2.h" // the servo library
#define rollPin 13// define the pins for the servos
int pos = 0; // variable to store the servo position
FPS_GT511C3 fps(8, 7);
ServoTimer2 servoRoll; // declare variables for up to eight servos
void setup() {
Serial.begin(9600);
delay(100);
fps.Open();
fps.SetLED(true);
servoRoll.attach(rollPin); // attach a pin to the servos and they will start pulsing
}
void loop()
{
if ((fps.IsPressFinger()) == true)
{
fps.CaptureFinger (true); // cattura l’impronta del dito sul sensore e la memorizza nella memoria del sensore stesso. Andrà poi confrontata con il DB per individuare l’id. Restituisce true se la cattura ha successo, false se il sensore è vuoto.
if (fps.Verify1_1(0) == 0 || fps.Verify1_1(1) == 0 || fps.Verify1_1(2) == 0 || fps.Verify1_1(3) == 0 || fps.Verify1_1(4) == 0 || fps.Verify1_1(5) == 0 || fps.Verify1_1(6) == 0 || fps.Verify1_1(7) == 0 || fps.Verify1_1(8) == 0 || fps.Verify1_1(9) == 0 || fps.Verify1_1(10) == 0 || fps.Verify1_1(11) == 0 || fps.Verify1_1(12) == 0 || fps.Verify1_1(13) == 0 || fps.Verify1_1(14) == 0 || fps.Verify1_1(15) == 0 || fps.Verify1_1(16) == 0 || fps.Verify1_1(17) == 0 || fps.Verify1_1(18) == 0 || fps.Verify1_1(19) == 0)
// int Verify1_1(int id): verifica se l’impronta catturata con la funzione CaptureFinger corrisponde all’impronta memorizzata nello slot identificato da id (da 0 a 199). Ritorna: 0 se corrispondono, 1 se la posizione non è valida (id < 0 o id > 199), 2 se l’id non in uso (vuoto), 3 se l’impronta non corrisponde a quella nello slot id
{
pos = 0;
servoRoll.write(pos); // motore in posizione 0 gradi
delay (2000);
}
pos = 75;
servoRoll.write(pos); // motore in posizione 75 gradi
delay (500);
}
}
Ed il problema che da è possibile vederlo qui:
https://www.youtube.com/watch?v=vxnQHaX2LfA
Qualcuno sa cosa puo essere e come risolverlo?
Ho gia provato ad utilizzare una tensione esterna con 3 batteria ma niente, il problema non sembra essere di corrente, inoltre il servo singolarmente funziona bene, non fa questi micromovimenti qundi sembra che sia un problema di interferenza tra la comunicazioni dei due componenti.