Salve ho realizzato un cancello scorrevole che potete vedere nel link nel video - YouTube però non mi piace lo sketch che ho fatto perché usa delay, come sapiamo il delay e un autobloccante in questo caso e anche pericoloso perché ignora anche le sicurezze.
devo usare (millis().
che facile da spiegare ma quando arrivo ad applicarla non ci capisco niente,
qualcuno ha qualche sketch pronto o simile che provo a caricalo su e lo modificarlo alla mio cancello.
forse chiedo troppo
const int releapri = 13;
const int relechiude = 12;
const int fotocellula = A0;
const int conttato = A1;
const int buttonPin = 2;
const int buttonPin1 = 4;
const int micro = 8;
// variables will change:
int buttonState = 0;
int buttonState1 = 0; //
int microState = 0;
void setup() {
Serial.begin(9600);
pinMode(releapri, OUTPUT);
pinMode(relechiude, OUTPUT);
pinMode(fotocellula, INPUT);
pinMode(conttato, INPUT);
pinMode(buttonPin, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(micro, INPUT);
}
void loop() {
int fotocellulaStatus = analogRead(fotocellula);
int conttatoStatus = analogRead(conttato);
buttonState = digitalRead(buttonPin);
buttonState1 = digitalRead(buttonPin1);
microState = digitalRead(micro);
if ( buttonState == LOW) {
digitalWrite(relechiude, LOW);
digitalWrite(releapri, LOW);
delay(100);
digitalWrite(relechiude, HIGH);
digitalWrite(releapri, LOW);
Serial.println(micro);
Serial.println(conttatoStatus);
}
if ( buttonState1 == LOW) {
digitalWrite(relechiude, LOW);
digitalWrite(releapri, LOW);
delay(100);
digitalWrite(relechiude, LOW);
digitalWrite(releapri, HIGH);}
if (fotocellulaStatus <= 40)
{
digitalWrite(relechiude, LOW);
delay(5000);
digitalWrite(releapri, HIGH);
}
if (microState == HIGH) {
if (fotocellulaStatus >= 40)
{
digitalWrite(relechiude, HIGH);
}
if (conttatoStatus <= 1005)
{ digitalWrite(releapri, LOW);
} }
if ((microState == LOW)&& (conttatoStatus >= 1005))
{
digitalWrite(relechiude, LOW);
}
}