Salve a tutti del forum. Mi affido alla vostra clemenza ed alla vostra esperienza per risolvere un mio problema.
Tempo fa avevo fatto dei piccoli progrettini con arduino e adesso mi hanno chiesto di movimentare un monumento del mio paese.
In poche parole dovrei far girare una pedana circolare in senso orario che si fermi 4 volte per tot secondi in punti precisi e sopra la pedana ci sarà un cubo fisso ed uno mobile che ad ogni step della pedana deve assumere 2 posizioni, uno aperto ed uno chiuso. Quando si arriverà all’ulrimo step la pedana deve ritornare al primo step girando in senso antiorario. Ad ogni step, inoltre, devono accendere dei faretti led che in tutto sono dieci, ma si accenderanno 2 in uno step, 3 in un altro step ecc….
Per questo progetto sto usando un arduino mega, 2 schede relè da 8 moduli per comandare 2 motori, uno per la pedana ed uno per il cubo (1 relè avanti ed uno indietro per ogni motore).
4 finecorsa per la pedana e 2 finecorsa per il cubo.
E gli altri relè per i faretti.
Per quanto riguarda i collegamenti, gli schemi elettrici e la meccanica non ci sono problemi, il mio problema è la programmazione.
Ho abbozzato uno sketch in maniera un pò rozza e mi da errore di compilazione quando faccio verifica con l’Ide di arduino e sinceramente non so neanche se questo sketch farà funzionare tutto il sistema, sono un po’ scettico.
Potete darmi una mano? Gazie anticipatamente.
Questo è il codice!
/* AUTOMAZIONE PIAZZETTA SIGNURARA
FP1 FineCorsa primo step pedana, che chiuderà verso massa il circuito restituendo un livello logico zero; collegare R di pull-up (10K) tra piedino di Arduino e +5V
FP2 FineCorsa secondo step pedana, che chiuderà verso massa il circuito restituendo un livello logico zero; collegare R di pull-up (10K) tra piedino di Arduino e +5V
FP3 FineCorsa terzo step pedana, che chiuderà verso massa il circuito restituendo un livello logico zero; collegare R di pull-up (10K) tra piedino di Arduino e +5V
FP4 FineCorsa quarto step pedana, che chiuderà verso massa il circuito restituendo un livello logico zero; collegare R di pull-up (10K) tra piedino di Arduino e +5V
FC1 FineCorsa primo step Cubo, che chiuderà verso massa il circuito restituendo un livello logico zero; collegare R di pull-up (10K) tra piedino di Arduino e +5V
FC2 FineCorsa secondo step Cubo, che chiuderà verso massa il circuito restituendo un livello logico zero; collegare R di pull-up (10K) tra piedino di Arduino e +5V
*/
# define FP1 2 //Finecorsa1 pedana collegato al pin digitale n.2
# define FP2 3 //Finecorsa2 pedana collegato al pin digitale n.3
# define FP3 4 //Finecorsa3 pedana collegato al pin digitale n.4
# define FP4 5 //Finecorsa4 pedana collegato al pin digitale n.5
# define FC1 6 //Finecorsa1 cubo collegato al pin digitale n.6
# define FC2 7 //Finecorsa2 cubo collegato al pin digitale n.7
# define MPA 8 //Relè Motore avanti pedana
# define MPI 9 //Relè Motore indietro pedana
# define MCA 10 //Relè Motore avanti cubo
# define MCI 11 //Relè Motore indietro cubo
# define FPR 32 //Finecorsa RITORNO pedana collegato al pin digitale n.32
# define LED1 22 //Faretto
# define LED2 23 //Faretto
# define LED3 24 //Faretto
# define LED4 25 //Faretto
# define LED5 26 //Faretto
# define LED6 27 //Faretto
# define LED7 28 //Faretto
# define LED8 29 //Faretto
# define LED9 30 //Faretto
# define LED10 31 //Faretto
int statoFP1 = 1; //Definiz. e assegnaz. delle variabili di programma
int statoFP2 = 1;
int statoFP3 = 1;
int statoFP4 = 1;
int statoFC1 = 1;
int statoFC2 = 1;
int RITARDO = 0;
int STATO = 0;
/* STATO=0 CHIUSO
STATO=1 AVANTI
STATO=2 CHIUSURA
STATO=3 APERTO-TEMPORIZZAZIONE
*/
void setup()
{
pinMode(FP1, INPUT); //Impostaz. dei piedini di Arduino come INPUT o OUTPUT
pinMode(FP2, INPUT);
pinMode(FP3, INPUT);
pinMode(FP4, INPUT);
pinMode(FPR, INPUT);
pinMode(FC1, INPUT);
pinMode(FC2, INPUT);
pinMode(MPA, OUTPUT);
pinMode(MPI, OUTPUT);
pinMode(MCA, OUTPUT);
pinMode(MCI, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, 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);
}
void loop() // VEDI DIAGRAMMA DI FLUSSO -------------
{
digitalWrite(MPA,HIGH);
digitalWrite(MCA,HIGH);
}
if(digitalRead(FC1)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MCA,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
if(digitalRead(FP2)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MPA,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
{
digitalWrite(MPA,HIGH);
digitalWrite(MCI,HIGH);
}
{
if(digitalRead(FC2)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MCI,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
if(digitalRead(FP3)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MPA,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
}
{
digitalWrite(MPA,HIGH);
digitalWrite(MCA,HIGH);
}
{
if(digitalRead(FC1)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MCA,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
if(digitalRead(FP4)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MPA,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
}
{
digitalWrite(MPA,HIGH);
digitalWrite(MCI,HIGH);
}
{
if(digitalRead(FC1)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MCI,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
if(digitalRead(FPR)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MPA,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
}
{
digitalWrite(MPI,HIGH);
}
{
if(digitalRead(FP1)==0) //FCORSA APERTURA NON attivato
{
digitalWrite(MPI,LOW);
digitalWrite(LED1,HIGH);
delay(10000);
}
}