Помогите написать код правильно

Приветствую уважаемые. помогите пожалуйста новичку.
есть у меня код для отопителя на ардуино.

// 12 — свеча
// 11 — насос помпа 
// 10 — вентилятор
// 7 - контакт на откл схемы
// 6 - топливный насос

int i;
int k;
int x;
int a;  //наличие пламени
int b;  //температура
int c;  //перегрев

void setup() 
{  pinMode(12, OUTPUT);  //свеча
   pinMode(11, OUTPUT);   //помпа    
   pinMode(10, OUTPUT);  //вентилятор   
   pinMode(6, OUTPUT);  //топливный насос 
   pinMode(7, OUTPUT);   //контакт на откл схемы
   pinMode(A0,INPUT);   //датчик температуры
   pinMode(A1,INPUT);   //датчик перегрева
   pinMode(A2,INPUT);    //датчик пламени
   pinMode(3,INPUT_PULLUP);    // кнопка стоп 
}

void loop()
{  
          
 if(analogRead(A0)<=450 && analogRead(A1)<=450 && analogRead(A0)>0 && analogRead(A1)>0 && analogRead(A2)>0)     //если t воды <65
{     
{   analogWrite (10, 0);  
    delay(5000);  
    digitalWrite(11, HIGH);     //вкл помпа
    delay(3000);
    analogWrite (10, 100);  //продувка 5с
    delay(5000);
    analogWrite(10, 0);
    delay(1000);
    analogWrite(10, 20);       // 1
    delay(500);
    digitalWrite(12, HIGH);   //свеча вкл
    delay(5000);          
    for(int i=1; i<6; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(800);
  } 
    analogWrite(10, 25);       // 2
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(700);
  } 
    analogWrite(10, 30);       // 3
    for(int i=1; i<8; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(650);
  } 
    analogWrite(10, 35);       // 4
    for(int i=1; i<8; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(625);
  } 
    
    analogWrite(10, 40);       // 5
    for(int i=1; i<8; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(600);
  } 
    
    analogWrite(10, 45);       // 6
    for(int i=1; i<8; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(575);
  } 
          
    analogWrite(10, 50);       // 7
    for(int i=1; i<9; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(550);
  } 

    { digitalWrite(12, LOW);     //свеча откл отработав 35 сек
  } 
     analogWrite(10, 55);       // 8
    for(int i=1; i<9; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(525);
  } 
     analogWrite(10, 60);       // 9
    for(int i=1; i<8; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(500);
  } 
    analogWrite(10, 65);       //  10
    for(int i=1; i<8; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(475);
  } 
    analogWrite(10, 70);       //  11
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(450);
  }
        
    analogWrite(10, 75);       //  12
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(425);
  } 
    analogWrite(10, 80);       //  13
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(400);
  } 
    analogWrite(10, 85);       //  14
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(385);
  } 
    analogWrite(10, 90);       //  15
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(370);
  } 
    analogWrite(10, 95);      //  16
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(340);
  }
    analogWrite(10, 100);      //  17
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(320);
  }
    analogWrite(10, 105);      //  18
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(300);
  }
       
    analogWrite(10, 110);      //  19
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(280);
  }
    analogWrite(10, 115);      //  20
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(260);
  }
   analogWrite(10, 120);      //  21
    for(int i=1; i<7; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(250);
  }  

    
    analogWrite(10, 120);      //  22
    for(int i=1; i<120; i++)      
  { digitalWrite(6, HIGH);
    delay(30);
    digitalWrite(6, LOW);
    delay(250);                
  } 
                
 }
  
  if(analogRead(A2)<=570)       //если датчик пламени вкл. общее время розжига 110 -115 сек 
  {
      while(analogRead(A0)<=550 && analogRead(A1)<=550 && analogRead(A2)<=570 && digitalRead(3)==HIGH
      && analogRead(A0)>0 && analogRead(A1)>0 && analogRead(A2)>0)  //пока t<=75 и не нажат стоп и не оборваны датчики
     {digitalWrite(6, HIGH);
      delay(30);
      digitalWrite(6, LOW);
      delay(250); 
               
      }
    delay(50000);
    analogWrite (10, 0);     //вентилятор выкл
    delay(10000);
    digitalWrite(11, LOW);    //помпа выкл
    delay(1000);
    digitalWrite(7, HIGH);  //отключение схемы 
    delay(100);
  }
    else {delay(5000);}
    k=x;
    if (k<2)
    {delay(8000);k=x++; }   //3 попытки запуска если нет пламени
    else {analogWrite (10, 0);
    digitalWrite(7, HIGH);  //отключение схемы 
      delay(1000000);}
 }
    else {delay(4000);digitalWrite(7, HIGH);}
}

хочу дописать к нему код чтобы показываел показания датчиков на дисплея ТМ1367. добавил следующее :

#include <Arduino.h>
#include "TM1637Display.h"

// Module connection pins (Digital Pins)
#define CLK1 2
#define DIO1 4
#define CLK2 8
#define DIO2 9
#define UPDATE_INTERVAL 1000 // Set an interval for LCD updates (1000 ms = 1 sec)

TM1637Display display1(CLK1, DIO1);
TM1637Display display2(CLK2, DIO2);

// Your pins
// 12 — свеча
// 11 — насос помпа 
// 10 — вентилятор
// 7 - контакт на откл схемы
// 6 - топливный насос
int i;
int k;
int x;
int a;  //наличие пламени
int b;  //температура
int c;  //перегрев

unsigned long previousMillis = 0; // for non-blocking delay

void setup() {
  Serial.begin(9600);
  display1.setBrightness(0x0f);
  display2.setBrightness(0x0f);
  pinMode(12, OUTPUT);  //свеча
  pinMode(11, OUTPUT);   //помпа    
  pinMode(10, OUTPUT);  //вентилятор   
  pinMode(6, OUTPUT);  //топливный насос 
  pinMode(7, OUTPUT);   //контакт на откл схемы
  pinMode(A0, INPUT);   //датчик температуры
  pinMode(A1, INPUT);   //датчик перегрева
  pinMode(A2, INPUT);    //датчик пламени
  pinMode(3, INPUT_PULLUP);    // кнопка стоп 
}

void loop() {
  int analogValue1 = 0;
  int analogValue2 = 0;
  
  unsigned long currentMillis = millis();
  
  if (currentMillis - previousMillis >= UPDATE_INTERVAL) {
    previousMillis = currentMillis;

    analogValue1 = analogRead(A0);
    analogValue2 = analogRead(A1);
  
    display1.showNumberDec(analogValue1, false); 
    display2.showNumberDec(analogValue2, false);
  
    Serial.print("A0: ");
    Serial.println(analogValue1);
    Serial.print("A1: ");
    Serial.println(analogValue2);
  }

вроде дисплеи показали что надо, но обновляются показания через 10 а то и больше секунд.

Я думаю, что вы используете задержку в своем коде, который вы используете для обновления отображаемых данных. Вы можете изменить/удалить эту задержку.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.