Не могу понять где тот подковырок который я не вижу. кто хорошо просвещен подскажите.
- Войдите на сайт для отправки комментариев
Пт, 02/09/2016 - 11:49
Дело такое после заливки скетча должна ити передача цыфровых данных (мигать лампочка RX и в терминали должно быть видны отображения этих данных) уход данных в uart но этого по какойто неведомой для меня причине не происходит может быть кто то подскажет в чем дело что не так? за рание благодарю вас!
//********************************************************************
unsigned long micros_sp = 0, micros_th = 0;
volatile int tz;
volatile int sz;
volatile int sp; //импульсы спидометра
volatile int th; //импульсы тахометра
int analogInput [15]; //массив аналоговых значений
int digitalInput[29]; //массив цифровых значений
String resultString = ""; //строка
int i; //счетчик циклов
//********************************************************************
//********************************************************************
void speedometr(){ //измеряем частоту на входе спидометра по прерыванию
sp=(567000.0/( micros() - micros_sp));
micros_sp = micros();
sz = 10;
}
//********************************************************************
void tahometr(){ //измеряем частоту на входе тахометра по прерыванию
th=(29000000.0/( micros() - micros_th));
micros_th = micros();
tz = 10;
}
void setup(){
for(i=0; i<=14; i++){ //обнуление массива аналоговых значений
digitalInput=0;
}
for(i=0; i<=28; i++){ //обнуление массива цифровых значений
analogInput=0;
}
Serial.begin(9600);
Serial1.begin(9600); //инициализация ком порта
attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса
attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса
}
//********************************************************************
void loop(){
analogInput[0] = analogRead(4); // B13 напряжение
analogInput[1] = analogRead(2); // B11 топливо
analogInput[2] = analogRead(0); // B 9 температура охлаждения
analogInput[3] = 0;
analogInput[4] = 0;
analogInput[5] = 0;
analogInput[6] = 0;
analogInput[7] = 0;
analogInput[8] = 0;
analogInput[9] = 0;
analogInput[10] = 0;
analogInput[11] = 0;
analogInput[12] = 0;
analogInput[13] = 0;
analogInput[14] = 0;
digitalInput[0] = digitalRead(47); // B 2 зажигание
digitalInput[1] = 0;
//********************************************************************
digitalInput[2] = 0;
//********************************************************************
digitalInput[3] = digitalRead(32) + // A14 левый поворот
digitalRead(33) * 2; // A13 правый поворот
//********************************************************************
digitalInput[4] = digitalRead(28) + // A18 габарит
digitalRead(29) * 2; // A17 дальний
//********************************************************************
digitalInput[5] = 0 + // А16 птф передние
digitalRead(31) * 2; // A15 птф задний
//********************************************************************
digitalInput[6] = 0;
digitalInput[7] = !digitalRead(26); // A20 - уровень тж
digitalInput[8] = !digitalRead(27); // A19 - ручник
digitalInput[9] = 0;
digitalInput[10] = !digitalRead(24); // A22 - лампа топлива
digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ
digitalInput[12] = !digitalRead(22); // A24 - давление масла
digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора
digitalInput[14] = digitalRead(23); // A23 - зарядка
digitalInput[15] = 0;
digitalInput[16] = 0;
digitalInput[17] = 0;
digitalInput[18] = 0;
digitalInput[19] = 0;
digitalInput[20] = 0;
digitalInput[21] = 0;
digitalInput[22] = 0;
digitalInput[23] = 0;
digitalInput[24] = 0;
digitalInput[25] = 0;
digitalInput[26] = 0;
digitalInput[27] = 0;
digitalInput[28] = 0;
resultString = String(resultString + sp);
resultString = String(resultString + ",");
resultString = String(resultString + th);
resultString = String(resultString + ",");
for(i=0; i<=14; i++){ //передаем аналоговые данные из массива в COM-port
resultString = String(resultString + analogInput);
resultString = String(resultString + ",");
}
for(i=0; i<=28; i++){ //передаем цифровые данные из массива в COM-port
resultString = String(resultString + digitalInput);
}
resultString = String(resultString + ":\n");
Serial1.print (resultString);
Serial.print (resultString);
resultString = String("");
tz = tz - 1;
sz = sz - 1;
if (tz == 0){th = 0;}
if (sz == 0){sp = 0;}
delay(50);
}
данные которые должны были бы быть в терменали при мигающем RX

Жесть вы с памятью обращаетесь, конечно :) По коду - навскидку криминала не видно, более пристально смотреть - глаза болят, код неформатирован (отступов нет) - жутко неудобно. Глаза отдохнут - ещё раз гляну :)
Ок, буду ждать, спасибо.
1.почти везде, где в циклах использованы массивы digitalInput и analogInput не проставлены индексы [i], или что-вы-там-имелии-ввиду.
Просто скетч не передает данные через rx-tx на esp8266
Посмотрите внимательно на строки 26 и 29. Потом посмотрите на описание упомянутых в них переменных. И попытайтесь самомы себе объяснить, что в этих строках делается.
Честно я в этом не очень разбираюсь по этому и обратился ко всем вам.
строка 96
resultString = String(resultString + analogInput);а надоresultString = String(resultString + analogInput[i]);строка 100
resultString = String(resultString + digitalInput);а надоresultString = String(resultString + digitalInput[i]);теперь вот что
строка 26 должна быть
digitalInput{i}=0;29analogInput[i]=0;строка 26 должна быть
digitalInput{i}=0;Точно? :)))
ШО, скобки не те поставил?, :))))
ну тогда так
digitalInput[i]=0;теперь самое главное загрузил все норм но RX не мигает и в и в монеторе порта пусто
//******************************************************************** unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [15]; //массив аналоговых значений int digitalInput[29]; //массив цифровых значений String resultString = ""; //строка int i; //счетчик циклов //******************************************************************** void speedometr(){ //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //******************************************************************** void tahometr(){ //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //******************************************************************** void setup(){ for(i=0; i<=14; i++){ //обнуление массива аналоговых значений digitalInput[i]=0; } for(i=0; i<=28; i++){ //обнуление массива цифровых значений analogInput[i]=0; } Serial.begin(115200); Serial1.begin(115200); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //******************************************************************** void loop(){ analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения analogInput[3] = 0; analogInput[4] = 0; analogInput[5] = 0; analogInput[6] = 0; analogInput[7] = 0; analogInput[8] = 0; analogInput[9] = 0; analogInput[10] = 0; analogInput[11] = 0; analogInput[12] = 0; analogInput[13] = 0; analogInput[14] = 0; digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[1] = 0; //******************************************************************** digitalInput[2] = 0; //******************************************************************** digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот //******************************************************************** digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний //******************************************************************** digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний //******************************************************************** digitalInput[6] = 0; digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[9] = 0; digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка digitalInput[15] = 0; digitalInput[16] = 0; digitalInput[17] = 0; digitalInput[18] = 0; digitalInput[19] = 0; digitalInput[20] = 0; digitalInput[21] = 0; digitalInput[22] = 0; digitalInput[23] = 0; digitalInput[24] = 0; digitalInput[25] = 0; digitalInput[26] = 0; digitalInput[27] = 0; digitalInput[28] = 0; resultString = String(resultString + sp); resultString = String(resultString + ","); resultString = String(resultString + th); resultString = String(resultString + ","); for(i=0; i<=14; i++){ //передаем аналоговые данные из массива в COM-port resultString = String(resultString + analogInput[i]); resultString = String(resultString + ","); } for(i=0; i<=28; i++){ //передаем цифровые данные из массива в COM-port resultString = String(resultString + digitalInput[i]); } resultString = String(resultString + ":\n"); Serial1.print (resultString); Serial.print (resultString); resultString = String(""); tz = tz - 1; sz = sz - 1; if (tz == 0){th = 0;} if (sz == 0){sp = 0;} delay(50); }Уважаемые форумчани вы извените но я просто все перепробывал одна надежда на вас уже голова взрываеться от компа дня 4 не отходил пива не пил и все зря(
что можешь еще сказать?
что можешь еще сказать?
Так всё уже сказано, если код чужой, то Вам в другой раздел надо.
for (i=0; i>14; i++){ //обнуление массива аналоговых значений digitalInput[i]=0; } for (i=0; i>28; i++){ //обнуление массива цифровых значений analogInput[i]=0; }for( i=0; i>14; i++){ //передаем аналоговые данные из массива в COM-port resultString = String(resultString + analogInput[i]); resultString = String(resultString + ","); } for( i=0; i>28; i++){ //передаем цифровые данные из массива в COM-port resultString = String(resultString + digitalInput[i]); }ты фокусник все норм начала мигать лампочка пошло в мониторе порта но с маленьким нюансом
нужно
я глаза ломать не буду, сравнивай знки < > в тех строках которые я дал выше
//******************************************************************** unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [15]; //массив аналоговых значений int digitalInput[29]; //массив цифровых значений String resultString = ""; //строка int i; //счетчик циклов //******************************************************************** void speedometr(){ //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //******************************************************************** void tahometr(){ //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //******************************************************************** void setup(){ for(i=0; i>14; i++){ //обнуление массива аналоговых значений digitalInput[i]=0; } for(i=0; i>28; i++){ //обнуление массива цифровых значений analogInput[i]=0; } Serial.begin(115200); Serial1.begin(115200); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //******************************************************************** void loop(){ analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения analogInput[3] = 0; analogInput[4] = 0; analogInput[5] = 0; analogInput[6] = 0; analogInput[7] = 0; analogInput[8] = 0; analogInput[9] = 0; analogInput[10] = 0; analogInput[11] = 0; analogInput[12] = 0; analogInput[13] = 0; analogInput[14] = 0; digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[1] = 0; //******************************************************************** digitalInput[2] = 0; //******************************************************************** digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот //******************************************************************** digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний //******************************************************************** digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний //******************************************************************** digitalInput[6] = 0; digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[9] = 0; digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка digitalInput[15] = 0; digitalInput[16] = 0; digitalInput[17] = 0; digitalInput[18] = 0; digitalInput[19] = 0; digitalInput[20] = 0; digitalInput[21] = 0; digitalInput[22] = 0; digitalInput[23] = 0; digitalInput[24] = 0; digitalInput[25] = 0; digitalInput[26] = 0; digitalInput[27] = 0; digitalInput[28] = 0; resultString = String(resultString + sp); resultString = String(resultString + ","); resultString = String(resultString + th); resultString = String(resultString + ","); for(i=0; i>14; i++){ //передаем аналоговые данные из массива в COM-port resultString = String(resultString + analogInput[i]); resultString = String(resultString + ","); } for(i=0; i>28; i++){ //передаем цифровые данные из массива в COM-port resultString = String(resultString + digitalInput[i]); } resultString = String(resultString + ":\n"); Serial1.print (resultString); Serial.print (resultString); resultString = String(""); tz = tz - 1; sz = sz - 1; if (tz == 0){th = 0;} if (sz == 0){sp = 0;} delay(50); }Делать было нечего, подпилил:
//******************************************************************** unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [15]; //массив аналоговых значений byte digitalInput[29]; //массив цифровых значений String resultString = ""; //строка int i; //счетчик циклов //------------------------------------------------------------------------------------------------------------------------------------ void speedometr() { //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //------------------------------------------------------------------------------------------------------------------------------------ void tahometr() { //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //------------------------------------------------------------------------------------------------------------------------------------ void setup() { memset(digitalInput,0,sizeof(byte)*29); //обнуление массива цифровых значений memset(analogInput,0,sizeof(int)*29); //обнуление массива аналоговых значений Serial.begin(9600); Serial1.begin(9600); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //------------------------------------------------------------------------------------------------------------------------------------ void loop() { memset(analogInput,0,sizeof(int)*29); memset(digitalInput,0,sizeof(byte)*29); //обнуление массива цифровых значений analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка resultString += sp; resultString += ","; resultString += th; resultString += ","; for(i=0; i<=14; i++) { //передаем аналоговые данные из массива в COM-port resultString += analogInput[i]; resultString += ","; } for(i=0; i<=28; i++) { //передаем цифровые данные из массива в COM-port resultString += digitalInput[i]; } Serial1.println(resultString); Serial.println(resultString); resultString = ""; tz--; sz--; if (tz == 0) th = 0; if (sz == 0) sp = 0; delay(50); } //------------------------------------------------------------------------------------------------------------------------------------Делать было нечего, подпилил:
строка 31 и 42 всего15 а не 29 элементов в массиве
и в строках 74 и 81 остались ошибки
не подскажешь по поводу того что ноли гонит там чуть выше фото
нет, я ничего не могу там разобрать
дай почту или на мою напиши я фото скину нормальные
попробуй вот так
//******************************************************************** unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [15]; //массив аналоговых значений int digitalInput[29]; //массив цифровых значений String resultString = ""; //строка int i; //счетчик циклов //******************************************************************** void speedometr(){ //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //******************************************************************** void tahometr(){ //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //******************************************************************** void setup(){ for(i=0; i>14; i++){ //обнуление массива аналоговых значений digitalInput[i]=0; } for(i=0; i>28; i++){ //обнуление массива цифровых значений analogInput[i]=0; } Serial.begin(115200); Serial1.begin(115200); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //******************************************************************** void loop(){ analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения analogInput[3] = 0; analogInput[4] = 0; analogInput[5] = 0; analogInput[6] = 0; analogInput[7] = 0; analogInput[8] = 0; analogInput[9] = 0; analogInput[10] = 0; analogInput[11] = 0; analogInput[12] = 0; analogInput[13] = 0; analogInput[14] = 0; digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[1] = 0; //******************************************************************** digitalInput[2] = 0; //******************************************************************** digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот //******************************************************************** digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний //******************************************************************** digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний //******************************************************************** digitalInput[6] = 0; digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[9] = 0; digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка digitalInput[15] = 0; digitalInput[16] = 0; digitalInput[17] = 0; digitalInput[18] = 0; digitalInput[19] = 0; digitalInput[20] = 0; digitalInput[21] = 0; digitalInput[22] = 0; digitalInput[23] = 0; digitalInput[24] = 0; digitalInput[25] = 0; digitalInput[26] = 0; digitalInput[27] = 0; digitalInput[28] = 0; resultString = String(resultString + sp); resultString = String(resultString + ","); resultString = String(resultString + th); resultString = String(resultString + ","); for(i=0; i<=14; i++){ //передаем аналоговые данные из массива в COM-port resultString = String(resultString + analogInput[i]); resultString = String(resultString + ","); } for(i=0; i<=28; i++){ //передаем цифровые данные из массива в COM-port resultString = String(resultString + digitalInput[i]); } resultString = String(resultString + ":\n"); Serial1.print (resultString); Serial.print (resultString); resultString = ""; tz = tz - 1; sz = sz - 1; if (tz == 0){th = 0;} if (sz == 0){sp = 0;} delay(50); }убрал ненужный код
//******************************************************************** unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [15]; //массив аналоговых значений int digitalInput[29]; //массив цифровых значений String resultString = ""; //строка //******************************************************************** void speedometr(){ //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //******************************************************************** void tahometr(){ //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //******************************************************************** void setup(){ Serial.begin(115200); Serial1.begin(115200); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //******************************************************************** void loop(){ analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения analogInput[3] = 0; analogInput[4] = 0; analogInput[5] = 0; analogInput[6] = 0; analogInput[7] = 0; analogInput[8] = 0; analogInput[9] = 0; analogInput[10] = 0; analogInput[11] = 0; analogInput[12] = 0; analogInput[13] = 0; analogInput[14] = 0; digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[1] = 0; //******************************************************************** digitalInput[2] = 0; //******************************************************************** digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот //******************************************************************** digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний //******************************************************************** digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний //******************************************************************** digitalInput[6] = 0; digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[9] = 0; digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка digitalInput[15] = 0; digitalInput[16] = 0; digitalInput[17] = 0; digitalInput[18] = 0; digitalInput[19] = 0; digitalInput[20] = 0; digitalInput[21] = 0; digitalInput[22] = 0; digitalInput[23] = 0; digitalInput[24] = 0; digitalInput[25] = 0; digitalInput[26] = 0; digitalInput[27] = 0; digitalInput[28] = 0; resultString = String(resultString + sp); resultString = String(resultString + ","); resultString = String(resultString + th); resultString = String(resultString + ","); for(int i=0; i<=14; i++){ //передаем аналоговые данные из массива в COM-port resultString = String(resultString + analogInput[i]); resultString = String(resultString + ","); } for(int i=0; i<=28; i++){ //передаем цифровые данные из массива в COM-port resultString = String(resultString + digitalInput[i]); } resultString = String(resultString + ":\n"); Serial1.print (resultString); Serial.print (resultString); resultString = ""; tz = tz - 1; sz = sz - 1; if (tz == 0){th = 0;} if (sz == 0){sp = 0;} delay(50); }попробуй вот так
for(i=0; i>14; i++){ //обнуление массива аналоговых значенийК пятнице уже глаза залили все? Сколько раз проработает цикл с (i=0; i > 14; i++) ?????????????????
Подсказка, млеать: НОЛЬ раз!!!! Я, блин, где-то читал, что НОЛЬ МЕНЬШЕ 14, едреный ёжег!
Что вы там все курите? Поделиццо нет желания?
строка 31 и 42 всего15 а не 29 элементов в массиве
Да, там проглядел.
и в строках 74 и 81 остались ошибки
В чём? Выхода за пределы массива вроде нет. Впрочем, я сильно не приглядывался, надо же что-то автору оставить :)
попробуй вот так
for(i=0; i>14; i++){ //обнуление массива аналоговых значенийК пятнице уже глаза залили все? Сколько раз проработает цикл с (i=0; i > 14; i++) ?????????????????
Подсказка, млеать: НОЛЬ раз!!!! Я, блин, где-то читал, что НОЛЬ МЕНЬШЕ 14, едреный ёжег!
Что вы там все курите? Поделиццо нет желания?
дык понятно что должно быть < , но он гад виснет на нем когда в сетапе, в последнем варианте я убрал это,
проверять то не начем, вот и ТС делаеет за меня :))))
Вот, подправил:
//------------------------------------------------------------------------------------------ #define COUNT_ANALOG 15 #define COUNT_DIGITAL 29 //------------------------------------------------------------------------------------------ unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [COUNT_ANALOG]; //массив аналоговых значений byte digitalInput[COUNT_DIGITAL]; //массив цифровых значений String resultString = ""; //строка int i; //счетчик циклов //------------------------------------------------------------------------------------------ void speedometr() { //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //------------------------------------------------------------------------------------------ void tahometr() { //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //------------------------------------------------------------------------------------------ void setup() { memset(digitalInput,0,sizeof(byte)*COUNT_DIGITAL); //обнуление массива цифровых значений memset(analogInput,0,sizeof(int)*COUNT_ANALOG); //обнуление массива аналоговых значений Serial.begin(9600); Serial1.begin(9600); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //------------------------------------------------------------------------------------------ void loop() { memset(analogInput,0,sizeof(int)*COUNT_ANALOG); memset(digitalInput,0,sizeof(byte)*COUNT_DIGITAL); //обнуление массива цифровых значений analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка resultString += sp; resultString += ","; resultString += th; resultString += ","; for(i=0; i<COUNT_ANALOG; i++) { //передаем аналоговые данные из массива в COM-port resultString += analogInput[i]; resultString += ","; } for(i=0; i<COUNT_DIGITAL; i++) { //передаем цифровые данные из массива в COM-port resultString += digitalInput[i]; } Serial1.println(resultString); Serial.println(resultString); resultString = ""; tz--; sz--; if (tz == 0) th = 0; if (sz == 0) sp = 0; delay(50); } //------------------------------------------------------------------------------------------и в строках 74 и 81 остались ошибки
В чём? Выхода за пределы массива вроде нет. Впрочем, я сильно не приглядывался, надо же что-то автору оставить :)
да не , там все правильно
Хотя, конечно, я бы так память не насиловал:
//------------------------------------------------------------------------------------------ #define COUNT_ANALOG 15 #define COUNT_DIGITAL 29 //------------------------------------------------------------------------------------------ unsigned long micros_sp = 0, micros_th = 0; volatile int tz; volatile int sz; volatile int sp; //импульсы спидометра volatile int th; //импульсы тахометра int analogInput [COUNT_ANALOG]; //массив аналоговых значений byte digitalInput[COUNT_DIGITAL]; //массив цифровых значений int i; //счетчик циклов //------------------------------------------------------------------------------------------ void speedometr() { //измеряем частоту на входе спидометра по прерыванию sp=(567000.0/( micros() - micros_sp)); micros_sp = micros(); sz = 10; } //------------------------------------------------------------------------------------------ void tahometr() { //измеряем частоту на входе тахометра по прерыванию th=(29000000.0/( micros() - micros_th)); micros_th = micros(); tz = 10; } //------------------------------------------------------------------------------------------ template<class T> void send(T val) { Serial.print(val); Serial1.print(val); } //------------------------------------------------------------------------------------------ void setup() { memset(digitalInput,0,sizeof(byte)*COUNT_DIGITAL); //обнуление массива цифровых значений memset(analogInput,0,sizeof(int)*COUNT_ANALOG); //обнуление массива аналоговых значений Serial.begin(9600); Serial1.begin(9600); //инициализация ком порта attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса attachInterrupt(1, tahometr, FALLING); //прерывание тахометра по фронтам импульса } //------------------------------------------------------------------------------------------ void loop() { memset(analogInput,0,sizeof(int)*COUNT_ANALOG); memset(digitalInput,0,sizeof(byte)*COUNT_DIGITAL); //обнуление массива цифровых значений analogInput[0] = analogRead(4); // B13 напряжение analogInput[1] = analogRead(2); // B11 топливо analogInput[2] = analogRead(0); // B 9 температура охлаждения digitalInput[0] = digitalRead(47); // B 2 зажигание digitalInput[3] = digitalRead(32) + // A14 левый поворот digitalRead(33) * 2; // A13 правый поворот digitalInput[4] = digitalRead(28) + // A18 габарит digitalRead(29) * 2; // A17 дальний digitalInput[5] = 0 + // А16 птф передние digitalRead(31) * 2; // A15 птф задний digitalInput[7] = !digitalRead(26); // A20 - уровень тж digitalInput[8] = !digitalRead(27); // A19 - ручник digitalInput[10] = !digitalRead(24); // A22 - лампа топлива digitalInput[11] = !digitalRead(52); // B 7 - уровень ОЖ digitalInput[12] = !digitalRead(22); // A24 - давление масла digitalInput[13] = digitalRead(53); // B 8 - лампа вентилятора digitalInput[14] = digitalRead(23); // A23 - зарядка send(sp); send(","); send(th); send(","); for(i=0; i<COUNT_ANALOG; i++) { //передаем аналоговые данные из массива в COM-port send(analogInput[i]); send(","); } for(i=0; i<COUNT_DIGITAL; i++) { //передаем цифровые данные из массива в COM-port send(digitalInput[i]); } send("\n"); tz--; sz--; if (tz == 0) th = 0; if (sz == 0) sp = 0; delay(50); } //------------------------------------------------------------------------------------------До:
Скетч использует 7 734 байт (3%) памяти устройства.
После:
Скетч использует 5 850 байт (2%) памяти устройства.
на этом лампа РХ мигает но приложение не запускаеться почемуто
СПАСИБО ВСЕМ что есть такие добрые и отзывчивые люди!!!!!!!!!!!!!