Buongiorno a tutti,
seguendo il consiglio di Guglielmo, ma essendo novizio nel mondo di Arduino, mi sono letto tutte le pubblicazioni consigliate, però so che qualcosa mi manca, per far funzionare come vorrei il tutto, posso chiedervi se potete darmi una mano? Grazie mille
`
// FUNZIONAMENTO
// 1. Il treno viene rilevato da uno dei sensori IR
// 2. Inizia il suono della campanella e si accendono i led rossi 2 per lato in modo alternato.
// 3. Dopo 5 sec. iniziano a scendere le barriere e continua il suono della campanella ed i led restano accesi.
// 4. A barriere abbassate dopo 5 sec. si ferma la campanella e restano i led accesi fissi.
// 5. Rimane questa condizione fin quando il treno impegna ancora il secondo IR dello stesso binario.
// 6. Liberato il secondo IR le sbarre si alzano i led rimango accesi
// 7. A barriere completamente alzate i led si spengono dopo 2 sec.
#include <Servo.h>
#define servoPin 2
#define IR1 3
#define IR2 4
#define ledSemaf_int_1 5
#define ledSemaf_int_2 6
#define ledSemaf_est_1 7
#define ledSemaf_est_2 8
#define campanella 9
#define posMin 0
#define posMax 20
#define timePL 10
boolean statoPL = false;
int currentGrad = posMax;
Servo myservo;
void setup() {
pinMode(servoPin, OUTPUT);
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(ledSemaf_int_1, OUTPUT);
pinMode(ledSemaf_int_2, OUTPUT);
pinMode(ledSemaf_est_1, OUTPUT);
pinMode(ledSemaf_est_2, OUTPUT);
pinMode(campanella, OUTPUT);
myservo.attach(servoPin);
myservo.write(currentGrad);
}
void loop() {
digitalRead(IR1); //legge lo stato del sensore IR1
digitalRead(IR2); //legge lo stato del sensore IR2
if (digitalRead(IR1) == HIGH) { statoPL = true; } //se il sensore è alto presenza treno
if (digitalRead(IR2) == HIGH) { statoPL = true; } //se il sensore è alto presenza treno
digitalWrite( campanella, HIGH );
digitalWrite(ledSemaf_int_1, HIGH); // se la condizione degli IR è HIGH (quindi con il treno) si accendono i led
digitalWrite(ledSemaf_int_2, LOW);
digitalWrite(ledSemaf_est_1, HIGH);
digitalWrite(ledSemaf_est_2, LOW);
delay(1000);// attesa di un secondo per altenare i led
digitalWrite(ledSemaf_int_1, LOW);
digitalWrite(ledSemaf_int_2, HIGH);
digitalWrite(ledSemaf_est_1, LOW);
digitalWrite(ledSemaf_est_2, HIGH);
delay(1000);// attesa di un secondo per altenare i led
if ( statoPL == true && currentGrad > posMin)
while (currentGrad > posMin) {
currentGrad--;
myservo.write(currentGrad);
delay(timePL);
}
if ( statoPL == false && currentGrad < posMax) {
while (currentGrad < posMax) {
currentGrad++;
myservo.write(currentGrad);
delay(timePL);
}
}
}
`
grazie mille per l'aiuto
