запись коррекции в массив
- Войдите на сайт для отправки комментариев
Пнд, 17/09/2018 - 01:53
Доброго времени , есть скетч и есть вопрос как организовать запись скорректироного
[code]
int DRVPin = A0; // пин считывания датчика расхода воздуха (Д.Р.В.)
int DKPin = A1; // пин считывания датчика кислорода (Д.К.)
int VKPin = 9; // пин выхода корекции (В.К.)
int valDRV = 0; // переменная для хранения сигнала сдатчика расхода воздуха
int valDK = 0; // переменная для хранения сигнала датчика кислорода
int valVK = 1;
int x =1;
byte VAF[256] //таблица выход
{
205,
202,
200,
197,
195,
192,
190,
188,
186,
183,
181,
178,
176,
173,
170,
168,
166,
163,
160,
158,
156,
153,
150,
148,
146,
143,
140,
138,
136,
133,
130,
128,
126,
123,
120,
118,
116,
113,
110,
108,
106,
103,
103,
102,
102,
101,
101,
100,
100,
99,
99,
98,
98,
97,
97,
96,
96,
95,
95,
94,
94,
93,
93,
92,
92,
91,
91,
90,
90,
90,
89,
89,
88,
88,
87,
87,
86,
86,
85,
85,
84,
84,
83,
83,
82,
82,
81,
81,
80,
80,
79,
79,
78,
78,
77,
77,
77,
76,
76,
75,
75,
74,
74,
73,
73,
72,
72,
71,
71,
70,
70,
69,
69,
68,
68,
67,
67,
66,
66,
65,
65,
64,
64,
64,
63,
63,
62,
62,
61,
61,
60,
60,
59,
59,
58,
58,
57,
57,
56,
56,
55,
55,
54,
54,
53,
53,
52,
52,
52,
51,
51,
50,
50,
49,
49,
48,
48,
47,
47,
46,
46,
45,
45,
44,
44,
43,
43,
42,
42,
41,
41,
40,
40,
39,
39,
39,
38,
38,
37,
37,
36,
36,
35,
35,
34,
34,
33,
33,
32,
32,
31,
31,
30,
30,
29,
29,
28,
28,
27,
27,
26,
26,
26,
25,
25,
24,
24,
23,
23,
22,
22,
21,
21,
20,
20,
19,
19,
18,
18,
17,
17,
16,
16,
15,
15,
14,
14,
13,
13,
13,
12,
12,
11,
11,
10,
10,
9,
9,
8,
8,
7,
7,
6,
6,
5,
5,
4,
4,
3,
3,
2,
2,
1,
1,
0,
0
};
void setup()
{
TCCR2B = TCCR2B & 0b11111000 | 0x02;
Serial.begin(9600);
pinMode(DRVPin, INPUT); //назначаю вход
pinMode(DKPin, INPUT); //назначаю вход
pinMode(VKPin, OUTPUT); //назначаю выход
}
void loop()
{
valDRV = analogRead(DRVPin); // считываю напряжение с (Д.Р.В.)
valDRV = map(valDRV,0,1023,0,255); // перевел в map
int newVK = VAF[valDRV] + valVK; // расчет выходного сигнала на (В.К.)
newVK = constrain(newVK,0,255);
analogWrite (VKPin,newVK); //выдал шим на (В.К.) начало гореть топливо
valDK = analogRead(DKPin); //считываю напряжение с (Д.К.) "померил сгоревшее топливо"
if(valDK < 93) // если в отработанных газах топлива мало будет напряжение от 0,02в до 0,45в,нужно добавить на (В.К.) 1 и померить еще раз пока на(Д.К.) установится 0,46в
{
valVK= ++x ;
}
else if(valDK > 106) // если в отработанных газах топлива много будет напряжение от 0,5в до 0,98в,нужно убавить на (В.К.) 1 и померить еще раз пока на(Д.К.) не установится 0,49в
{
valVK= --x ;
}
else // если в отработаных газах все в норме напряжение установится от 0,46в до 0,49в ни чего на делаем , а запускаем цикл по новой
{
}
Serial.print("dachikRV = ");
Serial.print(valDRV);
Serial.print("\t vihod_kor = ");
Serial.print(newVK);
Serial.print("\t dachikO2 = ");
Serial.println(valDK);
}
[/code]
числа из массива обратно в этот же массив .
Где idx - индекс ячейки массива, value - новое значение.
Спасибо за отклик , ещё такой вопрос после того как массив перезапишется и отключится питание и при следующем включении сохранятся изменения или останится массив который был до коррекции
Второе.
А если этот массив поместить в EEPROM и использавать его из этой памяти ,она же энэргонезависимая?
Тогда писать/читать с EEPROM, в документации есть описание.