salve a tutti mi sono presentato in precedenza mi chiamo Simone e frequento il 5anno nell'istituto tecnico industriale itis volta di Roma.
Il mio obbiettivo per quest'anno è realizzare un'ascensore di 3 piani con l'utilizzo di arduino,girovagando per il web e per questo forum ho trovato un codice molto interessante ma non riesco a capire alcune funzioni,
potreste darmi una mano voi che siete più esperti in arduino stesso?
non vorrei realizzare un progetto senza la totale conoscenza di ciò che sto realizzando.
Inoltre vorrei andare a modificare il progetto stesso cercando di ampliarlo.... potreste darmi una mano?
grazie a tutti quelli che riusciranno a darmi dei consigli utili
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
//motore cabina
int avm = 13; // Motore marcia avanti
int inm = 12; // Motore marcia indietro
//motore porta cabina
int po = 11; // Apertura porte
int pc = 10; // Chiusura porte
//finecorsa
int fp4 = 9; // Finecorsa piano 4
int fp3 = 8; // Finecorsa piano 3
int fp2 = 7; // Finecorsa piano 2
int fp1 = 6; // Finecorsa piano 1
//tasti piano
int tp4 = 5; //Tasto piano 4
int tp3 = 4; //Tasto piano 3
int tp2 = 3; //Tasto piano 2
int tp1 = 2; //Tasto piano 1
//dichiaro variabili
int P = 0;
int PT = 0;
int c = 0;
int d = 1;
int e = 0;
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int val5 = 0;
int val6 = 0;
int val7 = 0;
int val8 = 0;
String readString; //string
boolean LEDON = false; //LED status flag
void setup()
{
//configuarazione pin
pinMode(avm, OUTPUT);
pinMode(inm, OUTPUT);
pinMode(po, OUTPUT);
pinMode(pc, OUTPUT);
pinMode(fp4, INPUT);
pinMode(fp3, INPUT);
pinMode(fp2, INPUT);
pinMode(fp1, INPUT);
pinMode(tp4, INPUT);
pinMode(tp3, INPUT);
pinMode(tp2, INPUT);
pinMode(tp1, INPUT);
Serial.begin(9600);
}
void loop( )
{
//inizio programma
finecorsa:
val1 = digitalRead(fp1);
val2 = digitalRead(fp2);
val3 = digitalRead(fp3);
val4 = digitalRead(fp4);
if (val1 == HIGH) { //controllo finecorsa piano 1
PT = 1 ;
goto pulsante; //si PIANO=1
}else if (val2 == HIGH) { //controllo finecorsa PIANO=2
PT = 2 ;
goto pulsante;
}else if (val3 == HIGH) {
PT = 3 ;
goto pulsante;
}else if (val4 == HIGH) {
PT = 4 ;
goto pulsante;
}else
goto finecorsa;
//fine controllo piani
pulsante:
if (c == 0 && PT>0){
P = PT;
c = 1;
}else
val5 = digitalRead(tp1);
val6 = digitalRead(tp2);
val7 = digitalRead(tp3);
val8 = digitalRead(tp4);
if (val5 == HIGH) { //controllo tasto piano 1
P = 1 ;
e = 1;
goto motore; //si PIANO=1
}else if (val6 == HIGH) { //no controllo tasto PIANO=2
P = 2 ;
e = 1;
goto motore;
}else if (val7 == HIGH) {
P = 3 ;
e = 1;
goto motore;
}else if (val8 == HIGH) {
P = 4 ;
e = 1;
goto motore;
//fine controllo tasti piani
}
motore: //avvio motore
if (P < PT) { //ascensore sotto alla destinazione
digitalWrite(avm, LOW);
digitalWrite(inm, HIGH);
d = 1; //cabina sale
goto porte;
}else if (P > PT) { //ascensore sopra alla destinzione
digitalWrite(inm, LOW);
digitalWrite(avm, HIGH); //cabina scende
d = 1;
goto porte;
}else if (P == PT) { //ascensore a destination
digitalWrite(avm, LOW); //motore spento
digitalWrite(inm, LOW);
d = d+1;
goto porte;
} //fine avvio motore
porte: //apertura porte
if (d == 2 && e == 1) {
digitalWrite(po, HIGH);
delay(500);
digitalWrite(po, LOW);
delay(3000);
digitalWrite(pc, HIGH);
delay(500);
digitalWrite(pc, LOW);
delay(500);
e=0;
}else goto finecorsa;
}