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);
}