Rieccoci con un problema...ed ammeto che questo mi sembra più scocciante. >:(
fin ora ero riuscito senza grandi problemi a leggere i dati di un accelerometro, e scriverlo in un servo; ero riuscito senza problemi a leggere il segnale PPM dalla mia ricevente e scrivere su un servo...qui nasce il problema: unendo i due codici, tutto continua a funzionare..ma a rallentatore, cioè i servi vengono aggiornati circa ogni secondo...anche le letture sulla seriale sono molto lente...
Non credo che sia questione di prestazioni fisiche...almeno spero..
Tempo fa ho visto un codice con una libreria servodecode.h...qualcuno ne sa qualcosa??
Consigli???
#include <Servo.h>
Servo servo1, servo2; //motori 1 e 2 asse x
Servo servo3, servo4; //motori 1 e 2 asse x
int xpin = 0, xpin1 = 0; //prima e seconda lettura asse x accelerometro
int ypin = 1, ypin1 = 1; //prima e seconda lettura asse y accelerometro
int valx, valx1; // variabile di lettura asse X accelerometro
int valy, valy1; // variabile di lettura asse y accelerometro
int assex, assey;
int letturagas = 7, letturaroll = 6; //ingresso segnale radio GAS,ROLL
unsigned long gas, roll; //variabile di lettura(radio)
int led = 13;
void setup()
{
servo1.attach(9), servo2.attach(10); // collegamento motori assex
servo3.attach(11), servo4.attach(12); // collegamento motori assey
Serial.begin(9600); //imposta letturagas imput
pinMode(letturagas, INPUT),(letturaroll, INPUT);
pinMode(led, OUTPUT);
}
void loop()
{
valx = analogRead(xpin); // legge valore x dal sensore(da 363 a 284) 1° lettura
valx = map(valx, 363, 284, 0, 180); // imposta scala
valy = analogRead(ypin); // legge valore y dal sensore(da 363 a 284) 1° lettura
valy = map(valy, 363, 284, 0, 180); // imposta scala
delay(2);
valx1 = analogRead(xpin1); // legge valore dal sensore(da 363 a 284) 2° lettura
valx1 = map(valx1, 363, 284, 0, 180); //imposta scala
valy1 = analogRead(ypin1); // legge valore dal sensore(da 363 a 284) 2° lettura
valy1 = map(valy1, 363, 284, 0, 180); //imposta scala
if (valx == valx1) //confronto letture asse x
{servo3.write(valx),
digitalWrite(led, HIGH); //scrittura su led
}
else
{
digitalWrite(led, LOW);
}
if (valy == valy1) //confronto letture asse x
{servo2.write(valy);
}
gas = pulseIn(letturagas, LOW);
gas = map(gas, 870, 1990, 0, 180); //imposta scala gas
roll = pulseIn(letturaroll, LOW);
roll = map(roll, 870, 1990, 0, 50); //imposta scala roll
servo1.write(gas); //scrive gas su servo2
Serial.print(gas);
Serial.print(" gas ");
Serial.println();
Serial.print(valx);
Serial.print(" VALx ");
Serial.print(valy);
Serial.print(" VALy ");
}