Advertisement
Guest User

Arduino_noDelay

a guest
Feb 20th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. /*
  2.  
  3.   Sistema de contagem de tempo para acionamentos independentes
  4.   code desenvolvido por: Romario de Jesus Santana
  5.   data da versao: 20/02/2017  V0.1a
  6.   Ocupação: estudante e hobista
  7.  
  8. */
  9.  
  10. class Conte {
  11.   private:
  12.     bool estado; unsigned long passado;
  13.   public:
  14.     bool oneInterval(unsigned long tempoUnico);
  15.     bool twoInterval(unsigned long tempoDes, unsigned long tempoLig);
  16.     void noInterval();
  17. };
  18.  
  19. Conte tempo1, tempo2, tempo3; //cria diferentes tempos usando a classe Conte
  20.  
  21. void setup() {
  22.  
  23.   pinMode(13, OUTPUT);
  24.   pinMode(12, OUTPUT);
  25.   pinMode(11, OUTPUT);
  26.   pinMode(2, INPUT_PULLUP);
  27.  
  28. }
  29.  
  30. void loop() {
  31.  
  32.   digitalWrite(13, tempo1.twoInterval(1000, 3000)); //vai contar 1segundo desligado e 3segundos ligado
  33.   digitalWrite(12, tempo2.oneInterval(500)); //muda o estado a cada meio segundo
  34.  
  35.   if (digitalRead(2) != 0) tempo3.noInterval();//caso o botao nao esteja pressionado não irá fazer a contagem do tempo3
  36.   digitalWrite(11, tempo3.oneInterval(2000)); //muda o estado a cada 2segundos
  37.  
  38. }
  39.  
  40. bool Conte::twoInterval(unsigned long tempoDes, unsigned long tempoLig) {//faz uma contagem alternada com intervalos diferentes
  41.   unsigned long alterne[2] = {tempoDes, tempoLig};//
  42.   if (millis() - passado >= alterne[estado]) {
  43.     passado = millis();
  44.     estado = !estado;
  45.   }
  46.   return estado;
  47. }
  48.  
  49. bool Conte::oneInterval(unsigned long tempoUnico) {//faz uma contagem alternada com mesmo intervalo
  50.   return twoInterval(tempoUnico, tempoUnico);
  51. }
  52.  
  53. void Conte::noInterval() {//funçao mantem a contagem parada
  54.   passado = millis();
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement