Go Down

Topic: Errore codice per progetto arduino Pedana mobile (Read 2784 times) previous topic - next topic

brunello22

prova a fare un test
Code: [Select]


# define FP1 2    //Finecorsa1 pedana
# define FP2 3    //Finecorsa2 pedana
# define FP3 4    //Finecorsa3 pedana
# define FP4 5    //Finecorsa4 pedana
# define FPR 6    //Finecorsa pedana RITORNO
# define MPA 9    //Relè Motore avanti pedana
# define MPI 10   //Relè Motore indietro pedana
# define FC1 8    //Finecorsa1 cubo
# define FC2 7    //Finecorsa2 cubo
# define MCA 11   //Relè Motore avanti cubo
# define MCI 12   //Relè Motore indietro cubo

void setup()
{
  Serial.begin (9600);
  pinMode(FP1, INPUT_PULLUP); // sensore posizione iniziale
  pinMode(FP2, INPUT_PULLUP);
  pinMode(FP3, INPUT_PULLUP);
  pinMode(FP4, INPUT_PULLUP);
  pinMode(FPR, INPUT_PULLUP);
  pinMode(FC1, INPUT_PULLUP);
  pinMode(FC2, INPUT_PULLUP);
  pinMode(MPA, OUTPUT);
  pinMode(MPI, OUTPUT);
  pinMode(MCA, OUTPUT);
  pinMode(MCI, OUTPUT);
  digitalWrite(MCI, HIGH); // disattiva i relè
  digitalWrite(MCA, HIGH);
  digitalWrite(MPI, HIGH);
  digitalWrite(MPA, HIGH);

  motore_cubo_stop();
  motore_pedana_stop();
}

void aspetta_seriale() {
  char inByte ;
  while ( inByte != '\n') {
    if (Serial.available() > 0 ) {
      inByte = Serial.read();
    }
  }
}

void loop() {
  Serial.println("Test motori");
  Serial.println("Premere invio dopo ogni richiesta");
  aspetta_seriale();
  Serial.println("Motore pedana Avanti");
  motore_pedana_avanti() ;
  aspetta_seriale();
  motore_pedana_stop() ;
  Serial.println("Motore pedana Indietro");
  motore_pedana_indietro();
  aspetta_seriale();
  motore_pedana_stop() ;
  Serial.println("Motore cubo Avanti");
  motore_cubo_avanti() ;
  aspetta_seriale();
  motore_cubo_stop();
  Serial.println("Motore cubo Indietro");
  motore_cubo_indietro() ;
  aspetta_seriale();
  motore_cubo_stop();
    Serial.println("Fine test motori");
    Serial.println();
Serial.println("inizio test sensori");
 Serial.println("Premere invio per iniziare");
 aspetta_seriale();
 Serial.println("Test sensore FP1");
 while (digitalRead(FP1) != LOW ) {
   }
 Serial.println("Test sensore FP1 OK");
 Serial.println("Test sensore FP2");
  while (digitalRead(FP2) != LOW ) {
   }
 Serial.println("Test sensore FP2 OK");
 Serial.println("Test sensore FP3");
  while (digitalRead(FP3) != LOW ) {
   }
 Serial.println("Test sensore FP3 OK");

 Serial.println("Test sensore FP4");
  while (digitalRead(FP4) != LOW ) {
   }
 Serial.println("Test sensore FP4 OK");
 Serial.println("Test sensore FPR");
  while (digitalRead(FPR) != LOW ) {
   }
 Serial.println("Test sensore FPR OK");
 Serial.println("Test sensore FC1");
  while (digitalRead(FC1) != LOW ) {
   }
 Serial.println("Test sensore FC1 OK");

 Serial.println("Test sensore Fc2");
  while (digitalRead(FC2) != LOW ) {
   }
 Serial.println("Test sensore FC2 OK");
 Serial.println();
 Serial.println("Fine del Test");
}

void reset_pedana() {
  while (digitalRead(FP1) == HIGH)  { // legge sensore di posizione iniziale
    motore_pedana_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_pedana_stop();
}

void reset_cubo() {
  while (digitalRead(FC1) == HIGH)  { // legge sensore di posizione iniziale
    motore_cubo_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato cubo su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_cubo_stop();
}

void motore_pedana_avanti() {
  digitalWrite(MPA, LOW);
  digitalWrite(MPI, HIGH);
}

void motore_pedana_indietro() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, LOW);
}

void motore_pedana_stop() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, HIGH);
}

void motore_cubo_avanti() {
  digitalWrite(MCA, LOW);
  digitalWrite(MCI, HIGH);
}

void motore_cubo_indietro() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, LOW);
}

void motore_cubo_stop() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, HIGH);
}

orzowilde

Allora, controllo effettuato...

In poche parole testando i motori tutto ok... testando i finecorsa ho trovato un problema, funzionano bene tranne quando premo FC1. Premendo FC1 è come se premessi FC1 e FC2 insieme... Forse per questo si blocca tutto...

orzowilde

Ciao brunello... il problema persiste ancora...
Ho provato a cambiare pin di arduino... ho provato i collegamenti hardware e ho provato a vedere se c'era qualche errore o problema nel codice...

Ma non trovo niente di irregolare...

Come faccio?

Grazie

orzowilde

Salve, Brunello... Ho risolto il problema.... era il pulsante dell'FC2 con cui facevo le prove che era danneggiato, era sempre premuto anche se non si vedeva...

Ora però ho un altro problema... Le prove dei finecorsa le facevo su breadboard con pulsanti per PCB collegati in pull-up con una resistenza da 10Kohm...

Tutto sembrava funzionare, ma adesso ho collegato questo finecorsa per la pedana e questo per il cubo, e lo sketch mi si blocca...
Non è che magari, nella mia ignoranza, devo cambiare resistenza?

Grazie

brunello22

Quote
e lo sketch mi si blocca...
eh, facile da dirsi a distanza............
Hai usato i contatti NC o NO ?

lo hai fatto un test con codesti pulsanti ?

orzowilde

Salve Brunello, ho usato i contatti NO, ho fatto il test e funzionano...

Comunque ho risolto il problema...
Quando azionavo i finecorsa li attivavo e subito li rilasciavo, ma se li tengo premuti fino all'inizio del prossimo step tutto funziona alla grande...

Una piccola domanda: invece di tenerli premuti che modifiche posso fare per farli funzionare anche solo azionandoli??

Sai, perchè non vorrei che slittasse la pedana sul finecorsa e si bloccherebbe tutto...

Grazie

brunello22

attualmente, fino a che i sensori non sono tutti e due attivi resta nel ciclo

Code: [Select]
while (digitalRead(FP2) != LOW || digitalRead(FC2) != LOW )


potresti modficarlo cosi'

Code: [Select]

// 1° Step *************************************
  Serial.println("Inizia Primo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
  byte stato_fp = 1 ;
  byte stato_fc = 1 ;
  while (stato_fp != 0 || stato_fc != 0 ) {
    if (digitalRead(FP2) == 0 )   {
      motore_pedana_stop();
      stato_fp = 0 ;
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
      stato_fc = 0 ;
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Primo Step");
  // attivare led
  delay(ritardo);

orzowilde

Salve Brunello, non ho più risposto perchè abbiamo perso tempo nella realizzazione del progetto (pedana e cubi).
Allora, in questo video c'è il progetto posizionato e funzionante alla perfezione....

L'unica cosa che non sono riuscito a fare sono le modifiche che mi hai consigliato nel tuo ultimo post relative ai finecorsa e il tempo di attesa a fine reset.

In poche parole la pedana ed il cubo dovrebbero stare 30 secondi fermi tra uno step ed un altro e dopo il reset dovrebbero stare 5 minuti fermi.

Qui il codice:
Code: [Select]
define FP1 2    //Finecorsa1 pedana
# define FP2 3    //Finecorsa2 pedana
# define FP3 4    //Finecorsa3 pedana
# define FP4 5    //Finecorsa4 pedana
# define FPR 6    //Finecorsa pedana RITORNO
# define MPA 9    //Relè Motore avanti pedana
# define MPI 10   //Relè Motore indietro pedana
# define FC1 8    //Finecorsa1 cubo
# define FC2 7    //Finecorsa2 cubo
# define MCA 11   //Relè Motore avanti cubo
# define MCI 12   //Relè Motore indietro cubo
# define LED1 25  //Relè faretto 1
# define LED2 23  //Relè faretto 2
# define LED3 27  //Relè faretto 3
# define LED4 29  //Relè faretto 4
# define LED5 31  //Relè faretto 5
# define LED6 33  //Relè faretto 6
# define LED7 35  //Relè faretto 7
# define LED8 37  //Relè faretto 8
# define LED9 39  //Relè faretto 9
# define LED10 41 //Relè faretto 10
# define LED11 43 //Relè faretto 11
# define MUSIC 45 //Relè musica

boolean stato_errore =  false ;
unsigned int ritardo = 30000 ; // tempo in cui pedana stà ferma tra uno step ed un altro
unsigned int pausa = 300000 ; // tempo in cui pedana stà ferma dopo reset

void setup()
{
  Serial.begin (9600);

  pinMode(FP1, INPUT_PULLUP); // sensore posizione iniziale
  pinMode(FP2, INPUT_PULLUP);
  pinMode(FP3, INPUT_PULLUP);
  pinMode(FP4, INPUT_PULLUP);
  pinMode(FPR, INPUT_PULLUP);
  pinMode(FC1, INPUT_PULLUP);
  pinMode(FC2, INPUT_PULLUP);
  pinMode(MPA, OUTPUT);
  pinMode(MPI, OUTPUT);
  pinMode(MCA, OUTPUT);
  pinMode(MCI, OUTPUT);
  digitalWrite(MCI, HIGH); // disattiva i relè
  digitalWrite(MCA, HIGH);
  digitalWrite(MPI, HIGH);
  digitalWrite(MPA, HIGH);
  pinMode(LED1, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);
  pinMode(LED10, OUTPUT);
  pinMode(LED11, OUTPUT);
  pinMode(MUSIC, OUTPUT);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(MUSIC, HIGH);

  motore_cubo_stop();
  motore_pedana_stop();
  led_spento();
  Serial.println("inizia pedana fino alla posizione di Start");
  reset_pedana(); // il motore va' fino a posizione di Start

  Serial.println("Inizia cubo fino alla posizione di Start");
  reset_cubo(); //Il motore sposta il cubo fino alla posizione di Start
  led_spento(); //Tutti i faretti sono spenti
}


void loop() {

  // 1° Step *************************************
  digitalWrite(MUSIC, LOW);
  led_primo_step();
  delay(ritardo);
  led_spento();
 
  Serial.println("Inizia Primo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
   while (digitalRead(FP2) != LOW || digitalRead(FC2) != LOW ) {
    if (digitalRead(FP2) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Primo Step");
  led_secondo_step();  // attivare led
  delay(ritardo);

  led_spento();

  // 2° Step *************************************
  Serial.println("Inizia Secondo Step");
  motore_pedana_avanti() ;
  motore_cubo_indietro();
  while (digitalRead(FP3) != LOW || digitalRead(FC1) != LOW ) {
    if (digitalRead(FP3) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC1) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Secondo Step");
  led_terzo_step(); // attivare led
  delay(ritardo);
  led_spento();

  // 3° Step *************************************
  Serial.println("Inizia Terzo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
  while (digitalRead(FP4) != LOW || digitalRead(FC2) != LOW ) {
    if (digitalRead(FP4) == 0 )   {
      motore_pedana_stop();
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Terzo Step");
  led_quarto_step();// attivare led
  delay(ritardo);
  led_spento();
  digitalWrite(MUSIC, HIGH);


  // fine del ciclo. Torna a posizione di Start
  Serial.println();
  Serial.println("Torna a Start e rincomincia");
  reset_pedana();
  reset_cubo();
  delay(pausa);
 

} // Fine LOOP ***************************

void errore_sensori() { // Se un sensore non richiesto si attiva
  Serial.println();
  Serial.println("Errore sui sensori");
  // tone (pin_buzzer,frequenza); // Attiva un buzzer
  while (1); // blocca tutto e aspetta un reset Hardware ( volendo si puo' inserire un Reset software)
}

void reset_pedana() {
  while (digitalRead(FP1) == HIGH)  { // legge sensore di posizione iniziale
    motore_pedana_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_pedana_stop();
}

void reset_cubo() {
  while (digitalRead(FC1) == HIGH)  { // legge sensore di posizione iniziale
    motore_cubo_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato cubo su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_cubo_stop();
}

void motore_pedana_avanti() {
  digitalWrite(MPA, LOW);
  digitalWrite(MPI, HIGH);
}

void motore_pedana_indietro() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, LOW);
}

void motore_pedana_stop() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, HIGH);
}

void motore_cubo_avanti() {
  digitalWrite(MCA, LOW);
  digitalWrite(MCI, HIGH);
}

void motore_cubo_indietro() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, LOW);
}

void motore_cubo_stop() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, HIGH);
}

void led_spento() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
 
}

void led_primo_step() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);

}

void led_secondo_step() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
}

void led_terzo_step() {
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
}

void led_quarto_step() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
}


Ho commesso degli errori??

Grazie

brunello22

Quote
Ho commesso degli errori??
a parte l'uso errato di int
Code: [Select]
unsigned int pausa = 300000 ;

che va' corretto in
Code: [Select]

unsigned long pausa = 300000 ;


Se ti funziona di errori non dovrebbero essercene

comunque ecco lo sketch come chiedevi
Code: [Select]


# define FP1 2    //Finecorsa1 pedana
# define FP2 3    //Finecorsa2 pedana
# define FP3 4    //Finecorsa3 pedana
# define FP4 5    //Finecorsa4 pedana
# define FPR 6    //Finecorsa pedana RITORNO
# define MPA 9    //Relè Motore avanti pedana
# define MPI 10   //Relè Motore indietro pedana
# define FC1 8    //Finecorsa1 cubo
# define FC2 7    //Finecorsa2 cubo
# define MCA 11   //Relè Motore avanti cubo
# define MCI 12   //Relè Motore indietro cubo
# define LED1 25  //Relè faretto 1
# define LED2 23  //Relè faretto 2
# define LED3 27  //Relè faretto 3
# define LED4 29  //Relè faretto 4
# define LED5 31  //Relè faretto 5
# define LED6 33  //Relè faretto 6
# define LED7 35  //Relè faretto 7
# define LED8 37  //Relè faretto 8
# define LED9 39  //Relè faretto 9
# define LED10 41 //Relè faretto 10
# define LED11 43 //Relè faretto 11
# define MUSIC 45 //Relè musica

byte stato_fp =  1 ;
byte stato_fc =  1 ;
unsigned int ritardo = 30000 ; // tempo in cui pedana stà ferma tra uno step ed un altro
unsigned long pausa = 300000 ; // tempo in cui pedana stà ferma dopo reset

void setup()
{
  Serial.begin (9600);

  pinMode(FP1, INPUT_PULLUP); // sensore posizione iniziale
  pinMode(FP2, INPUT_PULLUP);
  pinMode(FP3, INPUT_PULLUP);
  pinMode(FP4, INPUT_PULLUP);
  pinMode(FPR, INPUT_PULLUP);
  pinMode(FC1, INPUT_PULLUP);
  pinMode(FC2, INPUT_PULLUP);
  pinMode(MPA, OUTPUT);
  pinMode(MPI, OUTPUT);
  pinMode(MCA, OUTPUT);
  pinMode(MCI, OUTPUT);
  digitalWrite(MCI, HIGH); // disattiva i relè
  digitalWrite(MCA, HIGH);
  digitalWrite(MPI, HIGH);
  digitalWrite(MPA, HIGH);
  pinMode(LED1, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);
  pinMode(LED10, OUTPUT);
  pinMode(LED11, OUTPUT);
  pinMode(MUSIC, OUTPUT);
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
  digitalWrite(MUSIC, HIGH);

  motore_cubo_stop();
  motore_pedana_stop();
  led_spento(); //Tutti i faretti sono spenti
  Serial.println("inizia pedana fino alla posizione di Start");
  reset_pedana(); // il motore va' fino a posizione di Start

  Serial.println("Inizia cubo fino alla posizione di Start");
  reset_cubo(); //Il motore sposta il cubo fino alla posizione di Start
  led_spento(); //Tutti i faretti sono spenti
}


void loop() {
  // 1° Step *************************************
  digitalWrite(MUSIC, LOW);
  led_primo_step();
  delay(ritardo);
  led_spento();

  Serial.println("Inizia Primo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
  stato_fp = 1 ;
  stato_fc = 1 ;
  while (stato_fp != 0 || stato_fc != 0 ) {
    if (digitalRead(FP2) == 0 )   {
      motore_pedana_stop();
      stato_fp = 0 ;
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
      stato_fc = 0 ;
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Primo Step");
  led_secondo_step();  // attivare led
  delay(ritardo);
  led_spento();

  // 2° Step *************************************
  Serial.println("Inizia Secondo Step");
  motore_pedana_avanti() ;
  motore_cubo_indietro();
  stato_fp = 1 ;
  stato_fc = 1 ;
  while (stato_fp != 0 || stato_fc != 0 ) {
    if (digitalRead(FP3) == 0 )   {
      motore_pedana_stop();
      stato_fp = 0 ;
    }
    if (digitalRead(FC1) == 0 )   {
      motore_cubo_stop();
      stato_fc = 0 ;
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Secondo Step");
  led_terzo_step(); // attivare led
  delay(ritardo);
  led_spento();

  // 3° Step *************************************
  Serial.println("Inizia Terzo Step");
  motore_pedana_avanti() ;
  motore_cubo_avanti();
  stato_fp = 1 ;
  stato_fc = 1 ;
  while (stato_fp != 0 || stato_fc != 0 ) {
    if (digitalRead(FP4) == 0 )   {
      motore_pedana_stop();
      stato_fp = 0 ;
    }
    if (digitalRead(FC2) == 0 )   {
      motore_cubo_stop();
      stato_fc = 0 ;
    }
  }
  motore_pedana_stop();
  motore_cubo_stop();
  Serial.println("finito Terzo Step");
  led_quarto_step();// attivare led
  delay(ritardo);
  led_spento();
  digitalWrite(MUSIC, HIGH);

  /*
    // 4° Step *************************************
    Serial.println("Inizia Quarto Step");
    motore_pedana_avanti() ;
    motore_cubo_indietro();
    stato_fp = 1 ;
    stato_fc = 1 ;
    while (stato_fp != 0 || stato_fc != 0 ) {
      if (digitalRead(FPR) == 0 )   {
        motore_pedana_stop();
        stato_fp = 0 ;
      }
      if (digitalRead(FC1) == 0 )   {
        motore_cubo_stop();
        stato_fc = 0 ;
      }
    }
    motore_pedana_stop();
    motore_cubo_stop();
    Serial.println("finito Quarto Step");
    // attivare led
    delay(ritardo);
  */

  // fine del ciclo. Torna a posizione di Start
  Serial.println();
  Serial.println("Torna a Start e rincomincia");
  reset_pedana();
  reset_cubo();
  delay(pausa);

} // Fine LOOP ***************************


void reset_pedana() {
  while (digitalRead(FP1) == HIGH)  { // legge sensore di posizione iniziale
    motore_pedana_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_pedana_stop();
}

void reset_cubo() {
  while (digitalRead(FC1) == HIGH)  { // legge sensore di posizione iniziale
    motore_cubo_indietro(); // avvia motore indietro fino al sensore di posizione iniziale
  }
  Serial.println("finito reset. Posizionato cubo su Start"); // esce dal while quando si attiva il sensore di posizione iniziale
  motore_cubo_stop();
}

void motore_pedana_avanti() {
  digitalWrite(MPA, LOW);
  digitalWrite(MPI, HIGH);
}

void motore_pedana_indietro() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, LOW);
}

void motore_pedana_stop() {
  digitalWrite(MPA, HIGH);
  digitalWrite(MPI, HIGH);
}

void motore_cubo_avanti() {
  digitalWrite(MCA, LOW);
  digitalWrite(MCI, HIGH);
}

void motore_cubo_indietro() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, LOW);
}

void motore_cubo_stop() {
  digitalWrite(MCA, HIGH);
  digitalWrite(MCI, HIGH);
}
void led_spento() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);

}

void led_primo_step() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);

}

void led_secondo_step() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
}

void led_terzo_step() {
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, HIGH);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
}

void led_quarto_step() {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
  digitalWrite(LED6, HIGH);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, HIGH);
  digitalWrite(LED9, HIGH);
  digitalWrite(LED10, HIGH);
  digitalWrite(LED11, HIGH);
}


bella la pedana, l'hai fatta girare per Pasqua ?

orzowilde

#39
Apr 02, 2016, 04:58 pm Last Edit: Apr 02, 2016, 05:14 pm by orzowilde
 Salve Brunello, si la pedana la facciamo girare per pasqua e fino al 7 maggio in occasione della particolare festa del mio paese "Gli Archi di Pasqua"...
Ecco un link della nostra festa, li facciamo da sempre...
Comunque non so se hai notato che nel codice da me modificato manca il quarto step.... non c'è più bisogno...
Lo posso togliere in maniera indolore o mi sballa tutto?

Grazie ancora

brunello22

il link non funziona.

certo che lo puoi togliere, infati nell'ultimo sketch che ti ho inviato il 4° step è disabilitato

Archi di pasqua, simpatica iniziativa


orzowilde

Adesso il link funziona....
Quindi potrei anche lasciarlo il 4 step e lui si ferma lo stesso al terzo?

brunello22

no, se lo lasci lo fa'
nello sketch e' commentato, proprio per non farglielo eseguire

orzowilde

Ah, ok hai ragione...
Non mi ero accorto che era solo commentato...
Domattina metto il nuovo sketch e lo provo...
Ti ringrazio sempre infinitamente per l'aiuto.

Go Up