Cancello automatico Arduino

Salve ragazzi, sono nuovo del forum e da poco mi sono avvicinando a questo fantastico mondo dell'open source.
A breve ho gli esami di maturità come elettrotecnico ed automazione, e come tale, vorrei presentare un cancello automatico gestito totalmente dal nostro micro-controllore, cioè l'Arduino!
La serie del cancello automatico sarebbe la seguente:

-Premendo pulsante fisico, si avvia il motore quindi apertura cancello
-Fine corsa una volta il cancello arrivato al limite di apertura
-Dal finecorsa si ha un "conto alla rovescia" per poi riattivare il motore in senso opposto, quindi alla chiusura del cancello
-Alla chiusura del cancello, si ha un altro fine corsa che arresta il motore
-All'avvio del motore, si aggiunge un led lampeggiante e l'attivazione delle fotocellule in caso di emergenza
-Avvio motore tramite telecomando (se possibile)

Mi potete aiutare? Ho visto un pò in giro per trovare delle risposte come chiede il forum prima di postare dei topics ma niente, tenete conto che sono ancora alle prime armi, e di linguaggio di programmazione so poco e niente.
Grazie mille spero sarete in tanti a darmi una mano!

Phoenix94:
Mi potete aiutare? Ho visto un pò in giro per trovare delle risposte come chiede il forum prima di postare dei topics ma niente, tenete conto che sono ancora alle prime armi, e di linguaggio di programmazione so poco e niente.
Grazie mille spero sarete in tanti a darmi una mano!

Il 30 aprile, mentre sei alle prime armi in questo genere di progetti e con nozioni prossime allo zero di programmazione ti accingi a preparare un progetto per la maturità? Uhm.. non potevi pensarci prima, mi verrebbe da chiederti? :wink:
Voglio dire, tutto quel che chiedi è fattibile ma richiede una certa conoscenza di diverse cose, non facili da apprendere in 2 mesi.

Ma tu vorresti fare un modellino di cancello oppure comandare un vero cancello?

Wow grazie per il sostegno! Purtroppo da poco ho scoperto Arduino...
All'inizio dell'anno avevo altri progetti ma non così belli da fare e da vedere!

Come già detto in due mesi diventa difficile... Comunque quel che secondo me hai bisogno più che sensori di fine corsa sono dei servi motori a 180 gradi. Nella programmazione procedurale di arduino scoprirai che esiste una funzione chiamate delay() che ti consente di ritardare una determinata azione. Detto ciò quando il servo si sarà aperto completamente e di conseguenza anche il cancello, scatterà un "conto alla rovescia" al termine del quale il servo girerà in senso contrario richiudendo il cancello. Per il led ed il pulsante questo è un gioco da ragazzi in quanto sono i primi esempi che si fanno per apprendere l'uso di Arduino e corrispondono al classico "Hello, World!" dell'informatica. Per la fotocellula potresti usare una coppia trasmettitore/ricevitore oppure puntare su una fotocellula già bella che pronta che alla fine viene gestita come un input digitale di arduino. Io l'anno scorso sviluppai un progetto con una fotocellula nel caso ti farò vedere lo sketch! Un ultimo consiglio che ti do da informatico è di dove possibile utilizzare una programmazione orientata agli oggetti piuttosto che quella procedurale. In arduino programmi in C++... Se hai altre domande chiedi pure

Phoenix94:
Wow grazie per il sostegno! Purtroppo da poco ho scoperto Arduino...
All'inizio dell'anno avevo altri progetti ma non così belli da fare e da vedere!

Non hai risposto però alla domanda. Vuoi fare un modellino o pilotare un cancello vero?
Hai iniziato almeno a buttare giù una bozza di codice per gestire un prototipo basato su pulsantini e LED in modo da scrivere lo scheletro del codice?

Grazie ragazzi!
@Leo, si voglio creare un modellino cosi da poterlo portare agli esami di maturità, e purtroppo no, ancora devo creare delle bozze perchè sincerament non so nemmeno da dove partire e come poter far muovere il "cancello"
@pres961 potresti inviarmi gli sketch per le fotocellule?? Grazie :stuck_out_tongue:

/**
 * /@author Christian Berti
 * /rilevatore di ingressi PROTOTIPO
 **/
int TxPin=6;//pin trasmissione seriale display LCD
const char carControllo= 'h';
#include <SoftwareSerial.h> //importo libreria seriale per display LCD
SoftwareSerial mySerial = SoftwareSerial(255,TxPin);//dichiaro un oggetto della libreria per display LCD
int fotocellula=11; //pin a cui è collegata la fotocellula
int FotoValue=LOW;//attributo in cui viene memorizzato valore letto da fotoresistore
int FotoValue2=LOW;
int contatore=0;//attributo dedito al conteggio 
char valbutton;//dichiarazione attributo per memorizzazione stato interruttore



void setup() {//dichiarazione utilizzo pin
  pinMode(fotocellula,INPUT); //dichiarazione tipo di pin
  Serial.begin(9600);
  pinMode (TxPin, OUTPUT);//dichiarazione tipo di pin
  mySerial.begin(9600);//dichiarazione velocità aggiornamento LCD
  delay(100);
  mySerial.write(12);//pulizia LCD

}


void loop() {
  valbutton= Serial.read();//associo lettura digitale all'attributo
  FotoValue=digitalRead(fotocellula);//prima lettura stato fotocellula
  if (FotoValue==LOW){//confronto stato fotocellula con valore HIGH
    FotoValue2=digitalRead(fotocellula);//eseguo nuova lettura stato fotocellula
    if(FotoValue2==LOW){
        //TODO
    }
    else{
      Serial.println(FotoValue);// stampa su seriale il valore del fotoresistore
      contatore++;
      mySerial.print("Persone: ");
      mySerial.println(contatore);//stampa su LCD
      //mySerial.println(contatore);//stampa su seriale l'attributo
    }
  }
  else{
    if (valbutton==carControllo){ //confronto lettura interruttore con valore HIGH
      contatore=0;//azzero contatore
      mySerial.println("Sistema Azzerato");//stampa su LCD
      delay (2000);//ritarda di 2 secondi
      mySerial.write(12);
  }
   
    


  
}
}

Questo era il prototipo iniziale. Purtroppo al momento ho trovato solo questo perchè ho cambiato diversi PC nel frattempo e ho perso gran parte delle cose. Piuttosto questo era molto semplice. Non faceva altro che contare gli ingressi in una determinata stanza. Nel tuo caso puoi tranquillamente sostituire l'azione di contatore++ con l'azione di apri/chiudi servo. Poi come già ti avevo detto non fare come ho fatto io qua che ho usato la programmazione procedurale ma concentrati su quella orientata agli oggetti. Per altre domande scrivimi pure :wink:

Phoenix94:
Grazie ragazzi!
@Leo, si voglio creare un modellino cosi da poterlo portare agli esami di maturità, e purtroppo no, ancora devo creare delle bozze perchè sincerament non so nemmeno da dove partire e come poter far muovere il "cancello"
@pres961 potresti inviarmi gli sketch per le fotocellule?? Grazie :stuck_out_tongue:

mah non so che conoscenze pratiche di micromeccanica hai, ma fare un cancello in miniatura non è che sia il massimo della semplicità ,

REGOLAMENTO, punto 16.9.

Guglielmo

P.S.: ... e leggetelo il regolamento !