Funzione Mills

Ciao a tutti volevo chiedere un favore. Il progetto che sto facendo necessita l’utilizzo della funzione mills ma non ho idea di come utilizzarla. Sto facendo un rilevatore di movimento con un hc-sr04, una volta che rileva una persona fa attivare 4 relè che poi attiveranno dei monitor. Questi relè si devono accendere in modo sfalsato tra di loro ad esempio il primo relè si accende dopo cinque secondi e resta acceso per tot tempo in contemporanea però dopo 10 secondi si deve accendere il secondo relè.

Lascio anche in allegato lo sketch ma senza l’uso della funzione mills (i relè si accendono tutti in contemporanea):

int _trigPin = 11; //Trigger
int _echoPin = 12; //Echo
int _sensorMaxRng = 500; //cm
int _sensorMinRng = 2; //cm

int _potentiometer = A5;
int _val = 0;
int _borderLineVal = 0;

long _duration, _cm, _inches, _potentioRng;
const int rele1=2;
const int rele2=4;
const int rele3=7;
const int rele4=8;
void setup() {
Serial.begin(9600);

pinMode(_trigPin, OUTPUT);
pinMode(_echoPin, INPUT);
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
}

void loop()
{
cleanRefreshSensor();

_potentioRng = map (analogRead(_potentiometer),0,1023,2,500);
Serial.print(“POT:”);
Serial.println(_potentioRng);

pinMode(_echoPin, INPUT);
_duration = pulseIn(_echoPin, HIGH);

_cm = _duration / 2 / 29.1;

Serial.print(_cm);
Serial.print(" cm");
Serial.println();

if(_cm > _potentioRng){
Serial.print(" Fuori Portata “);
}
else
{
Serial.print(” A Portata ");
}

delay(1000);

if(_cm<_potentioRng){
digitalWrite(rele1, HIGH);

digitalWrite(rele2, HIGH);

digitalWrite(rele3, HIGH);

digitalWrite(rele4, HIGH);
}
else{
digitalWrite(rele1,LOW);
digitalWrite(rele2,LOW);
digitalWrite(rele3,LOW);
digitalWrite(rele4,LOW);
}
}

void cleanRefreshSensor()
{
digitalWrite(_trigPin, LOW);
delayMicroseconds(5);
digitalWrite(_trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(_trigPin, LOW);
}

Mi sembra un caso che puoi risolvere prendendo spunto dal codice Blink without Delay lo trovi tra gli esempi della IDE di arduino.
File -> Esempi -> 02.Digital

>Kolonna: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (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 o cattiva formattazione del testo. Grazie.

Guglielmo

Per il tuo progetto ... devi studiarti come si usa la funzione millis(), prima QUI, poi QUI ed infine leggi anche QUI e QUI ... vedrai che ti sarà tutto più chiaro :wink:

Guglielmo