Visualizza messaggio singolo
Vecchio 01 maggio 14, 12:59   #6 (permalink)  Top
sniper5
User
 
Data registr.: 07-10-2009
Messaggi: 20
ecco le righe commentate e giusto, cio capito qualcosa?
Codice:
int tempo, gradi, x, y, valore, gradiRil, i;    //settaggio variabili

void main (void){
 ANSEL  = 1;                     // configurazione input alanogico
  TRISIO = 0b001011;                  // gpio0-1-3 in input – gpio2 in output
  valore = 40;
  i=0;

while (1){
inizio:

 tempo = ADC_READ(0); //legge valore  su GP0  per la velocita  rotazione
 delay_ms(5); //ritardo lettura valore

 gradiRil = ADC_READ(1);  //legge valore su GP per angolo  rotazione
 delay_ms(5); //ritardo lettura valore

 tempo = (tempo+50)/50;    //variabile tempo +50 diviso 50
 gradiRil = (gradiRil+50)/7;    //variabile gradirilevati +50 diviso 7

    for(x=0;x<tempo;x++){   //se X uguale a 0 ma minore di tempo aumenta X
    for(y=0;y<valore;y++){   // se Y uguale a 0 ma minore  di valore aumenta Y
            gpio.f2 = 1;    //genera il segnale controllo servo
}
gpio.f2 = 0;
delay_ms(5);
}

if(gpio.f3)   //rileva segnale tasto
   i=i^1; //se i uguale portalo ad 1 cioe tasto premuto
delay_ms(5000);// qui ritardo di 5 secondi dopo la pressione tasto
   while(gpio.f3){}


if(i)
   gradi = gradiRil;
  else
   gradi = 40;     //se i gradi sono uguali a gradiRil porta a 40

if(valore==gradi)
   goto inizio;     //se invece valore uguale a gradi ritorna inizio

 if(valore>gradi)     //se valore e maggiore di gradi
   valore--; //diminuisci il valore
 else           //altrimenti
   valore++; //aumenta valore

}}

Ultima modifica di sniper5 : 01 maggio 14 alle ore 13:02
sniper5 non è collegato   Rispondi citando