salve a tutti! devo fare un programma di un ascensore di tre piani e non riesco a trovare l'errore. ci sarebbe qualcuno gentilissimo ad aiutarmi? Sono un ragazzo di 18 anni ed è il primo programma che faccio con arduino. Lo so facendo perchè voglio portare come progetto per l'esame di quinta superiore l'ascensore. lo scritto ma non riesco a capire il perchè non mi funziona... qualcuno mi potrebbe aiutare?? please?
Potresti per favore presentarti nel threed apposito, se non lo hai già fatto (si trova come primo nella sezione generale) e leggere il regolamento del forum (sotto megatopic home italiana). Inoltre potresti dirci hardware utilizzato (descrizione o link), mandare copia del programma scritto, e descrivere il comportamento desiderato e quello osservato.
Fatte queste cose ci sarà più facile aiutare.
si scusa è che devo aspettare i 5 minuti...
sto usando l'arduino mega 2560. ecco qui la prima parte del programma:
#include<Servo.h> // mettere altre
// INGRESSI
int Pc0=2; //pulsante chiamata P0 mettere i numeri
int Pc1=3; //pulsante chiamata P1
int Pc2=4; //pulsante chiamata P2
int P0=5; //pulsante P0
int P1=6; //pulsante P1
int P2=7; //pulsante P2
int Pe=8; //pulsante d'emergenza
int Pfe=9; //pulsante fine d'emergenza
int Pa=10; //pulsante apertura porte
int Pc=11; //pulsante chiusura porte
// FINECORSA
int Fc0=12; //finecorsa P0
int Fc1_1=13; //finecorsa P1-1
int Fc1_2=14; //finecorsa P1-2
int Fc2=15; //finecorsa P2
int Fcpa0=16; //finecorsa porte aperte P0
int Fcpc0=17; //finecorsa porte chiuse P0
int Fcpa1=18; //finecorsa porta aperte P1
int Fcpc1=19; //finecorsa porte chiuse P1
int Fcpa2=20; //finecorsa porte aperte P2
int Fcpc2=21; //finecorsa porta chiuse P2
// USCITE
int Ma0=22; //motore apertura porte P0
int Mc0=23; //motore chiusura porte P0
int Ma1=24; //motore apertura porte P1
int Mc1=25; //motore chiusura porte P1
int Ma2=26; //motore apertura porte P2
int Mc2=27; //motore chiusura porte P2
int Mdx=28; //motore principale destra(discesa)
int Msx=29; //motore principale sinistra(salita)
int Luce_eme=30; //luce d'emergenza
int Suono_eme=31; //suono d'emergenza
int Display1=32; //display1
int Display2=33; //display2
int Display3=34; //display3
//DICHIARO VARIABILI
int PC0=0;
int PC1=0;
int PC2=0; // LA VERIFICA MI DA PROBLEMI QUA
int PU0=0;
int PU1=0;
int PU2=0;
int PE=0;
int PFE=0;
int PA=0;
int PC=0;
int FC0=0;
int FC11=0;
int FC12=0;
int FC2=0;
int P=0; // PIANO
void salire(int PU1, int PU2,int PC1, int PC2, int FC11, int FC12, int FC2)
{
digitalWrite(Msx, HIGH);
if(FC11==HIGH&&FC12==HIGH) {
if(PC1==HIGH) {
digitalWrite(Msx, LOW);
}
else if(PU1==HIGH) {
digitalWrite(Msx, LOW);
}
}
if(FC2==HIGH) {
if(PC2==HIGH) {
digitalWrite(Msx, LOW);
}
if(PU2==HIGH) {
digitalWrite(Msx, LOW);
}
}
}
//SOTTOPROGRAMMA DISCESA ASCENSORE
int discesa(int PU0, int PU1,int PC0,int PC1,int FCO,int FC11,int FC12)
{
digitalWrite(Mdx, HIGH);
if(FC11==HIGH&&FC12==HIGH) {
if(PC1==HIGH) {
digitalWrite(Mdx, LOW);
}
else if(PU1==HIGH) {
digitalWrite(Mdx, LOW);
}
}
if(FC0==HIGH) {
if(PC0==HIGH) {
digitalWrite(Mdx, LOW);
}
if(PU0==HIGH) {
digitalWrite(Mdx, LOW);
}
}
}
- il programma puoi anche allegarlo in forma di file (guarda il regolamento su come inserire allegati)
- se non lo fai almeno MODIFICA IL POST e racchiudi il codice tra i tag code
si scusa... sono nuova. ecco qua il programma.
mi da problemi quando ho messo PC=,PC1,PC2 uguale a 0. e non riesco a capire il perche.
Ascensore_Arduino.ino (9.37 KB)
>RICCARDO9090: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post #2 (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).
In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag:
[code] _il _tuo_ codice_ [/code]
così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati. Grazie.
Guglielmo
P.S.: ... è leggetelo con attenzione il REGOLAMENTO.
Vedo che ci sono degli errori che possono dare problemi. Esempio nel setup usi pinMode(pin.value) col punto per separare i vari argomenti, dovresti usare la virgola e ti dovrebbe segnare errore, in uno switch hai un case o1: lettera o, quindi già questi errori non ti fanno funzionare il programma.
Poi non ho ben capito la logica delle funzioni che aprano e chiudono le porte, ad esempio azioni il motore per chiudere una porta e in sequenza controlli con un if() se la porta è chiusa, secondo me non fa quel che credi, perché porta al valore alto il pin e subito dopo controlla se la porta è chiusa, ma non c'è niente nel codice che fa attendere che la porta raggiunga il finecorsa. Dovresti usare un ciclo esempio while() che controlla se raggiunto il finecorsa.
while(digitalRead(finecorsa)!=HIGH){// finchè non raggiunge il finecorsa
digitalWrite(pinChiusura,HIGH);
}
//Arrivati al finecorsa
digitalWrite(pinChiusura,LOW); // arresto il motore perché finita la chiusura
QUINDI, non solo ci sono piccoli errori qua e la , ma la logica del programma, il modo che usi, potrebbe non andare bene e non fare quel che credi.
e non puoi usare termini come PC0, PC1, PC2 etc, sono riservati
una considerazione leggermente OT
c'è una percentuale altissima di studenti che porta agli esami l'ascensore....
tutte scuole alte!
fine OT
Vero........ e tutti di tre piani
Off topic interessante, speriamo che non venga rimosso
In effetti il progetto dell'ascensore è molto gettonato, ma molte tesine si basano su progetti abbastanza diffusi e già proposti "vedi modellino di casa domotica e altro".
Il fatto è che c'è la necessità di un progetto interessante ma non estremamente complicato da realizzare, e che possa essere compreso la difficoltà e l'impegno da parte di insegnanti che non hanno familiarità con la tecnologia. Esempio, magari ci vuole più abilità e impegno in un robot con ruote, ma poi in esame ti considerano uno che ha portato una macchinina telecomandata
torn24:
... una macchinina telecomandata
... basta fare in modo che la "macchinina telecomandata" porti da sola il caffe' agli esaminatori ...
"Che porti il caffe", mi viene in mente una puntata in un programma di Magalli, dove un ingegnere ha portato robot che disegnavano e risolvevano il cubo di rubik , fatti con lego programmabili mindstorms.
Mi viene in mente come l'ingegnere cerca di spiegare la complessità dei robot, ma sulla faccia di Magalli si leggeva "ma questo grande e grosso gioca ancora con i mattoncini lego" . Quindi non contare troppo sul fatto che chiunque capisca la complessità di un progetto