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?
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?
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
/**
* /@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
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
mah non so che conoscenze pratiche di micromeccanica hai, ma fare un cancello in miniatura non è che sia il massimo della semplicità ,