Codice:
#include <Servo.h> // libreria del servomotore
///////////////////////////// uscite analogiche dei fotoresistori ////////////////////////////////////
int uno = A0;
int due = A1;
int tre = A2;
int qua = A3;
////////////////// variabili di mappature per i servomotori dei valori in ingresso ///////////////////
int u = 0;
int d = 0;
int t = 0;
int q = 0;
///////////////////////////// angoli di base dei servomotori /////////////////////////////////
int angx = 90; // asse delle x
int angy = 90; // asse delle y
//////// valore minimo di differenza tra coppia di resistori per l'azionamento del servomotore //////////
char vmin = 10; // si può impostare il valore che si vuole (sensibilità del movimento)
//////////////////////////// nomi dei servomotori /////////////////////////////////////////
Servo servox; // servo asse delle x
Servo servoy; // servo asse delle y
///////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
pinMode(uno, INPUT); // settaggio ingresso
pinMode(due, INPUT); // settaggio ingresso
pinMode(tre, INPUT); // settaggio ingresso
pinMode(qua, INPUT); // settaggio ingresso
servox.attach(3); // pin di controllo del servomotore dell'asse x
servoy.attach(2); // pin di controllo del servomotore dell'asse y
}
void loop() {
//////////////////////////////// mappatura dati ricevuti dai fotoresistori ///////////////////////////////
u = map(analogRead(uno), 12, 860, 0, 180);
d = map(analogRead(due), 12, 875, 0, 180);
t = map(analogRead(tre), 12, 820, 0, 180);
q = map(analogRead(qua), 12, 915, 0, 180);
/////////////////////////////////// inizio del controllo dei servomotori ////////////////////////////
////////////////////////////////// controllo asse delle x ////////////////////////////////////////
if ( u > q && angx <= 180 && u - q > vmin) {
angx = angx + 1;
servox.write(angx);
}
if (u < q && angx >= 0 && q - u> vmin) {
angx = angx - 1;
servox.write(angx);
}
////////////////////////////////// controllo asse delle y ////////////////////////////////////////
if (t < d && angy <= 180 && d - t > vmin) {
angy = angy + 1;
servoy.write(angy);
}
if (t > d && angy >= 0 && t - d > vmin) {
angy = angy - 1;
servoy.write(angy);
}
delay(2); // tempo di delay (volendo si può eliminare)
//////////////////////////////////// fine //////////////////////////////////////
}
Nessun commento:
Posta un commento