Приветствую уважаемые. помогите пожалуйста новичку.
есть у меня код для отопителя на ардуино.
// 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 а то и больше секунд.