запись коррекции в массив

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

Доброго времени , есть скетч и есть вопрос как организовать запись скорректироного

[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]

числа из массива обратно в этот же массив .

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015
VAF[idx] = value;

Где idx - индекс ячейки массива, value - новое значение.

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

Спасибо за отклик , ещё такой вопрос после того как массив перезапишется и отключится питание и при следующем включении сохранятся изменения или останится массив который был до коррекции

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Второе.

yrik8407
yrik8407 аватар
Offline
Зарегистрирован: 08.03.2016

А если этот массив поместить в EEPROM и использавать его из этой памяти ,она же энэргонезависимая?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Тогда писать/читать с EEPROM, в документации есть описание.