questo fa' partire i motori insieme
# 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
boolean stato_errore = false ;
unsigned int ritardo = 5000 ; // tempo in cui pedana stà ferma
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();
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
}
void loop() {
// 1° Step *************************************
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");
// attivare led
delay(ritardo);
// 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");
// attivare led
delay(ritardo);
// 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");
// attivare led
delay(ritardo);
// 4° Step *************************************
Serial.println("Inizia Quarto Step");
motore_pedana_avanti() ;
motore_cubo_indietro();
while (digitalRead(FPR) != LOW || digitalRead(FC1) != LOW ) {
if (digitalRead(FPR) == 0 ) {
motore_pedana_stop();
}
if (digitalRead(FC1) == 0 ) {
motore_cubo_stop();
}
}
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();
//il cubo è già in posizione
} // 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);
}