parcheggio automatizzato

salve ragazzi, sto realizzando un parcheggio automatizzato con Arduino con in e out separati. Ho provato ad abbozzare una programmazione ma il motore di uscita non va......potreste darmi una mano? :slight_smile: :slight_smile:
Il mio sketch è questo

#include <Servo.h>
Servo myservo;  
#include <Servo.h>
Servo myservo2;  


#define ServoM    12 
#define Bright      11              
#define In             8         
#define Servom    10     
#define Exit          9         

#define BarLowServoM    177      
#define BarUpServoM     95       
#define CAPACITY          9        
#define INTEN               80       

#define BarLowServom    177
#define BarUpServom     95

//Pins conections to segments (cathodes).
#define  segA  0
#define  segB  1
#define  segC  2
#define  segD  3
#define  segE  4
#define  segF  5
#define  segG  6


byte segments[10] = {
// pgfedcba  <--- segments
 B01000000, // number 0
 B01111001, // number 1
 B00100100, // number 2
 B00110000, // number 3
 B00011001, // number 4
 B00010010, // number 5
 B00000010, // number 6
 B01111000, // number 7
 B00000000, // number 8
 B00010000  // number 9
};

void setup(){
 myservo.attach(ServoM);          
 pinMode(In, INPUT);             
 digitalWrite(In, HIGH);         
 pinMode(segA,OUTPUT);
 pinMode(segB,OUTPUT);
 pinMode(segC,OUTPUT);
 pinMode(segD,OUTPUT);
 pinMode(segE,OUTPUT);
 pinMode(segF,OUTPUT);
 pinMode(segG,OUTPUT);
 analogWrite(Bright,255*INTEN/100);
 myservo.write(BarLowServoM);        
//  delay(1000);


myservo2.attach(Servom);         

 pinMode(Exit, INPUT);           
 digitalWrite(Exit, HIGH);       
 pinMode(segA,OUTPUT);
 pinMode(segB,OUTPUT);
 pinMode(segC,OUTPUT);
 pinMode(segD,OUTPUT);
 pinMode(segE,OUTPUT);
 pinMode(segF,OUTPUT);
 pinMode(segG,OUTPUT);
 pinMode(Bright,OUTPUT);
 analogWrite(Bright,255*INTEN/100);
 myservo2.write(BarLowServom);          
}

int  Available= 9
;                    


void loop(){
Display(Available);
if(digitalRead(In)==0)
{
 if(Available != 0){
   Available--;
   myservo.write(BarUpServoM);
   delay(3000);
   myservo.write(BarLowServoM);

myservo2.attach(Servom)
; if(digitalRead(Exit)==0)


if(Available != CAPACITY){
   Available++;
   myservo2.write(BarUpServom);
   delay(3000);
   myservo2.write(BarLowServom);

   }
   }
 }

}



void Display (int number){
byte segs =  ~segments[number];       

digitalWrite(segA, bitRead(segs, 0) );
digitalWrite(segB, bitRead(segs, 1) );
digitalWrite(segC, bitRead(segs, 2) );
digitalWrite(segD, bitRead(segs, 3) );
digitalWrite(segE, bitRead(segs, 4) );
digitalWrite(segF, bitRead(segs, 5) );
digitalWrite(segG, bitRead(segs, 6) );
}

Buongiorno e benvenuto sul forum,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Zef

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

... dopo di che, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Fatto.....potreste aiutarmi?

Ipotizzo che exit sia il sensore che sente un veicolo nel tratto di uscita

C'è qualche casino con le if

Hai dimenticato le graffe

Inoltre devi aprire la sbarra anche se available è Zero, se hai sbagliato il conto cosa fa il cliente? Muore di fame dentro al parcheggio perché tu non gli apri?

Inoltre metterrei un secondo sensore sulla pista di ingresso e su quella di uscita, dopo la sbarra e abbassarsi la sbarra solo dopo che il veicolo ha abbandonato il secondo sensore

Se al guidatore imbranato gli si spegne il motore, cosa fai, gli stampi la sbarra sulla capote?

Scusami per la mia ignoranza ma non essendo molto pratico avrei bisogno di una dimostrazione di quello che hai scritto.....non capisco

A parte che da telefonino ho difficoltà a scrivere, semmai stasera....

Ma non ti balza all'occhio che i due rami if hanno diverse le disposizioni delle graffe?

Perché se non te ne rendi conto, non solo hai brutalmente copiato, ma pure male...

allora aspetterò stasera.....comunque mi pare ovvio che ho preso spunto da altri schemi, io sono un elettronico e di certo a suola non mi insegnano i linguaggi di programmazione :wink: :wink:

#Doc ti stà dicendo che le graffe terminali degli if sono messe nel posto sbagliato, ad esempio la prima if viene chiusa alla fine di tutto il loop .
Cosa vuol dire questo ? Che tutto quello che c'e' scritto all'interno della if verrà eseguito solo se la condizione if è vera, quindi solo se c'è qualcuno davanti al sensore di ingresso. In pratica qualcuno potrebbe teoricamente uscire solo se arriva qualcun'altro ( in teoria, perchè di errori ce ne sono altri )

Quando ce l'hai l'esame ?

ah ok ora capisco......comunque l'esame è il 6 luglio

No, così non va
Lo sforzo lo devi fare tu, non noi

Io ti ho detto dov'è il problema

Tu mi chiedi di mostrartelo

Io ti dico che adesso non posso, forse stasera

E tu cosa fai?

Aspetti?

Il problema è nel fatto che non ci metti buona volontà

Io non posso adesso riscriverti il programma
Potrei stasera, ma me ne manca la voglia...

Cosa ci vuole a confrontare la parte che va con quella che non va?

Poco tempo ....

Ma tu nemmeno quello ci metti, aspetti me

Adesso so anche quale sarà la tua prossima mossa: chiedi scusa è ringrazi umilmente per il tempo che ti dedichiamo, vuoi imparare ma ti mancano le basi....

Credi di essere il primo?

Ok, adesso risponderai piccato che sei riuscito da solo, che non avevi bisogno
Però non posterai nulla
Anche qui, credi di essere il primo?

Comunque te lo dico di nuovo, guarda le graffe

Doc guarda che ho fatto ciò che mi hai detto......io ho buona volontà è che magri avendo 30 anni in meno di te mi manca un pò di cultura generale dell'arduino?

Fabrifiano:
è che magri vendo 30 anni in meno di te mi manca un pò di cultura generale dell'arduino?

Magari curare un pochino di pi√Ļ la sintassi, in 16 parole hai inserito 10 errori di ortografica, sarebbe meglio.
Non tirare fuori la scusa del correttore sul telefono/tablet perché non regge nemmeno un secondo.
Docsavage ha ragione, fa bene a non scrivere il codice per tuo conto, non solo così non impari nulla, ma stai pure barando per l'esame, è questa è una cosa molto, ma molto grave.

mi scusi prof ma sai, questo è un forum dedicato a chi ha bisogno di aiuto magari e non a sentirsi superiori tra l'altro poi con un ragazzo che ha 30 anni meno di te e che potrebbe essere tranquillamente tuo figlio

Personalmente potresti pi√Ļ che un figlio, essere un nipote...
Comunque qui vige una regola, aiutare , ma non dare la pappa pronta.
Quindi, se sei disposto ad essere aiutato, basta che tu lo dica e lo facciamo, altrimenti con le polemiche non si và da nessuna parte.
E guarda che lo facciamo per il Tuo bene, perchè non sò come funzionino ora gli esami di stato, ma "tanto" tempo fà oltre a vedere il lavoro svolto avrebbero fatto anche delle domande e con un copia e incolla ti ci voglio a dare delle spiegazioni convincenti

ma infatti lo so brunello.....comunque io ho risolto la questione parentesi graffe. Ora c'è qualche altro errore?

Se non ci fai vedere cosa hai fatto, come possiamo dirtelo ?

Grazie, funziona!!!

Se volessi aggiungere due led RGB, uno in entrata e uno in uscita come posso fare?
Allo stato basso del motore il led acceso è il rosso mentre allo stato alto è il verde.
I led sono connessi a delle porte analogiche e non so come gestirle

I led sono connessi a delle porte analogiche e non so come gestirle

Allo stesso modo delle porte digitali, infatti le porte analogiche funzionano anche come digitali

E visto che ti servono solo due colori, colleghi solo il pin rosso e quello verde