Skocz do zawartości

Zamiana delay() na millis()


gregory099

Pomocna odpowiedź

Witam serdecznie. Jestem początkującym który uczy się programowania Arduino. Interesuje mnie temat zamiany delay na millis aby program się nie zatrzymywał. Weźmy np jak zrobić aby np wentylator załączył się na 3 sek później wyłączył i zaczęło działać np światło dioda LED przy pomocy millis. Czy będzie ktoś w stanie mi to wytłumaczyć w jaki sposób używać funkcji millis? 

Link do komentarza
Share on other sites

(edytowany)

Witam. Tak owszem zapoznałem sie z tą częścią kursu. W czym tkwi problem otóż:

Mam zdeklarowane zmienne określające dane piny Arduino. W funkcji void setup też mam określone co i jak który pin ma działać. Funkcje void loop podzieliłem sobie na 3 inne podrzędne funkcje i teraz tak mam odczyt z 3 czujników temperatury i gdy chociaż raz użyje delay program mi sie zatrzymuje na czas określony w delay i nie mam odczytu z czujników. Potrzebuje np powiedzmy i czy się to da zrobić z pomocą millis() aby odczyt z czujników mieć cały czas powiedzmy co 1s a w funkcji loop aby powiedzmy wentylator włącza sie na 3s potem stop następuje grzanie świecy żarowej przez 5sek, następnie gdy swieca osiąga daną temperature zostaje podane paliwo wentylator startuje np na 20 % itp itd. Chyba że od złej strony się zabieram i nie pomoże mi w tym funkcja millis().

Edytowano przez gregory099
błędy
Link do komentarza
Share on other sites

(edytowany)

Dodaje to co udało mi się już zrobic :

 

 

const int wentylator = 3;
const int swiecaZarowa = 4;
const int pompaPaliwa = 6;

float temperaturaWody = A0;
float temperaturaPlomienia = A1;
float temperaturaPrzegrzania = A2;
float temperaturaZewnetrzna = A3;

int Vo;
float R1 = 10000;
float logR2, R2, T;
float A = 1.149074145e-03, B = 2.307683271e-04, C = 1.017352663e-07;



void setup() {

  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);


  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);

  Serial.begin(115200);
}
void loop() {
  czujniki();

  webastoPraca();

  zabezpieczenie();
}
void webastoPraca() {
          // włącz wentylator na ok 3 sek potem stop
          // jeżeli temperatura wody <5*C to zacznij rozruch
          // włącz swiece zarowa do momentu osiagniecia np 120 stopni
          // włącz pompe paliwa wysterowana w pwm od 0 do 255 stopniowo przyspieszajac
          // wyłącz świece żarową
          // włącz wentylator na ok 20% itp itd
          //   .
          //   .
          //   .

}
void czujniki() {
  int odczyt =  analogRead (temperaturaPlomienia);
  float napiecie = (odczyt / 1024.0) * 5.0;
  float Temperatura = (napiecie - 0.5) * 100;

  Serial.print("  Temperatura plomienia: ");
  Serial.print(Temperatura);
  Serial.print(" *C");
  delay(500);                                                  // Tutaj mam zdeklarowane wyliczenia do ori czujników na piecu

  Vo = analogRead(temperaturaWody);
  R2 = R1 * (1024.0 / (float)Vo - 0.80);
  logR2 = log(R2);
  T = (1.0 / (A + B * logR2 + C * logR2 * logR2 * logR2));
  T =  T - 273.15;
  Serial.print(" || temperatura wody: ");
  Serial.print(T);
  Serial.println(" *C");
}
void zabezpieczenie()  {
       // jeżeli temperatura wody > 85 *C pompa paliwa wyłącz, wentylator wyłącz
       // jeżeli temperatura wody = 50*C temp płomienia 80*C zwiększ podawanie paliwa i obroty wentylatora 
       //  .
       //  .
       //  .

   
}

 

Edytowano przez gregory099
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.