запись коррекции в массив
- Войдите на сайт для отправки комментариев
Пнд, 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, в документации есть описание.