Sei sulla pagina 1di 2

#include <Servo.

h> Servo myservo; int val; //valore della differenza delle 2 fotoresistenze int fermo=90; //valore col quale il motore servo rimane fermo //se aggiungo un valore positivo girer in senso orario //se aggiungo un valore negativo girer in senso antiorario //dichiarazione variabili "tempo" unsigned long time; unsigned long letturadati; unsigned long letturaluce_time; int v, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, so mma, media; void setup() { Serial.begin(9600); //inizializzo porta seriale myservo.attach(9); time=millis(); letturadati=millis(); letturaluce_time=millis(); Serial.println("CLEARDATA"); //in excel cancella in automatico i valori //delle colonne in caso di necessit Serial.println("LABEL,Time, ,V"); //in excel assegna un nome alle colonne } void loop() { time=millis(); //prima parte (inseguimento luce) if(time>letturaluce_time+50) { int sinistra = analogRead(A0); //leggo valore resistenza sx int destra = analogRead(A1)-250; //leggo valore resistenza dx val=(sinistra-destra);

// se la diffenrenza tra le 2 fotoresistenze sta tra -70 e +70 allora il servo nono ruota if ((val>-70 && val<0) || (val>=0 && val<70)) myservo.detach(); else myservo.attach(9); //queste due operazioni servono per "contenere" la velocita del servo limitan do la differenza tra -10 e +10 if (val>10) val=10; if (val<-10) val=-10; //se no muoviti del valore "val", quindi se positivo in senso orario se no vic eversa myservo.write(fermo+val);

letturaluce_time=millis(); } // seconda parte (media del valori ricevuti in modo da rendere meno "oscillanti " i dati rilevati) if(time>letturadati+5000){ v=analogRead(A3); v1=analogRead(A3); v2=analogRead(A3); v3=analogRead(A3); v4=analogRead(A3); v5=analogRead(A3); v6=analogRead(A3); v7=analogRead(A3); v8=analogRead(A3); v9=analogRead(A3); v10=analogRead(A3); v11=analogRead(A3); v12=analogRead(A3); v13=analogRead(A3); v14=analogRead(A3); v15=analogRead(A3); v16=analogRead(A3); somma= v+v1+v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+v13+v14+v15+v16; media= somma/17;

Serial.print("DATA,TIME,"); Serial.print(","); Serial.println(media); letturadati=millis();

} }

Potrebbero piacerti anche