Go Down

Topic: Aiuto tesina con arduino non funziona (Read 1 time) previous topic - next topic

Mera94

Apr 19, 2013, 09:53 pm Last Edit: Apr 20, 2013, 07:30 am by leo72 Reason: 1
Il programma funziona ma la velocità del ciclo del programma è molto lento.

Code: [Select]
#include <Servo.h>
#include <Narcoleptic.h>
/*
Libreria che permette di mandare in standby il microcontrollore
nei momenti di inattività  (delay), risparmiando parecchia energia.
Si può eventualmente anche non utilizzare (in tal caso va sostituita
l'ultima istruzione Narcoleptic.delay(15) con delay(15).
*/

Servo myservo;
int Value;
int Center=90;
/*
La variabile Center rappresenta il valore di centratatura
del servo a rotazione continua. Nel mio caso è 105, di solito è 90.
Con questo valore il servo deve restare fermo.
*/

void setup() {
 Serial.begin();
 myservo.attach(9); // Collega il servo al PIN 9
}

void loop() {
 int sensorValue = analogRead(A0);  // Legge il valore del sensore LDR di sinistra
 int sensorValue2 = analogRead(A1); // Legge il valore del sensore LDR di destra
 
 Value=(sensorValue-sensorValue2)/10;  
 /*
 Calcola la differenza tra i due sensori e li divide per 10,
 in questo modo una differenza di 10 equivale a 1, una differenza
 di 53 equivale a 5 e cosi via
 */
 
 if (Value==0) myservo.detach(); else myservo.attach(9);
 /*
 Se la differenza è uguale a 0 scollega il servo altrimenti lo
 collega (serve per risparmiare energia)
 */
 
 if (Value>10) Value=100;
 if (Value<-10) Value=-100 ;
 /*
 Limita la differenza massima tra -10 e + 10
 (per evitare una velocità  eccessiva)
 */
 
 Serial.println(Value); // Debug - Visualizza il valore sulla seriale
 myservo.write(Center+Value);
 /*
 Se il valore di Value è positivo, sposta il Servo a DX, se è negativo a SX.
 La velocità  Ã¨ direttamente proporzionale al valore assoluto di Value
 */
 
  delay(15);
 /*
 Invece che usare un semplice delay, usiamo questo, così risparmiamo energia.
 Si può eventualmente sostituire con delay(15).
 */
}

francescoprisco

un pò di parentesi graffe agli if non fanno male

pablos

#2
Apr 19, 2013, 10:32 pm Last Edit: Apr 19, 2013, 10:54 pm by pablos Reason: 1
Quote
Il programma funziona ma la velocità del ciclo del programma è molto lento.


Senza un ciao, senza un buon Natale, senza mettere il codice negli appositi tag.... non so una descrizione di cosa vuoi fare, a cosa serve, niente ..... il programma va lento mettetemelo a posto!! manco grazie

... "DICAAAAAAA ...un attimo e sono sciubito da leiii!!!"  :D :D



un pò di parentesi graffe agli if non fanno male
se usa una sola istruzione dopo l'if o dopo l'else può essere omesso l'uso delle graffe
no comment


leo72

@Mera94:
ti chiedo di rispettare il regolamento del forum

PaoloP

Code: [Select]
Serial.begin();
forse dovresti mettere
Code: [Select]
Serial.begin(9600);

Mera94

Si lo so di metter un valore nel Serial.begin(9600); ma non funziona uguale
Scusate se non ho rispettato le regole del forum ma non ho molto tempo e ho postato tutto un po alla svelta  :)

Mera94

é un inseguitore di luce il circuito è questo

leo72


la velocità del ciclo del programma è molto lento.

E' questo il problema?
Che cosa intendi per "molto lento"?


Mera94

Nessuno allora mi può dire il perché ?
XD 

nid69ita

Prova a NON alimentare il servo da Arduino ma a dargli una alimentazione esterna. Di solito i servo rispondono meglio se gli dai 6Volt (verifica che il tuo servo li accetti, di solito accettano fino a 7,4volt)
Bastano 4 batterie AA da 1,5 (non di più).   Ricorda di collegare insieme GDN del servo e del circuito.


my name is IGOR, not AIGOR

Go Up