Не могу понять где тот подковырок который я не вижу. кто хорошо просвещен подскажите.

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

Дело такое после заливки скетча должна ити передача цыфровых данных (мигать лампочка 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

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

Жесть вы с памятью обращаетесь, конечно :) По коду - навскидку криминала не видно, более пристально смотреть - глаза болят, код неформатирован (отступов нет) - жутко неудобно. Глаза отдохнут - ещё раз гляну :)

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

Ок, буду ждать, спасибо.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1.почти везде, где в циклах использованы массивы digitalInput и analogInput не проставлены индексы [i], или что-вы-там-имелии-ввиду.

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

Просто скетч не передает данные через rx-tx на esp8266

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

slimzp@gmail.com пишет:
Просто скетч не передает данные через rx-tx на esp8266
А должен?

Посмотрите внимательно на строки 26 и 29. Потом посмотрите на описание упомянутых в них переменных. И попытайтесь самомы себе объяснить, что в этих строках делается.

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

Честно я в этом не очень разбираюсь по этому и обратился ко всем вам.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

строка 96

resultString = String(resultString + analogInput);

а надо

resultString = String(resultString + analogInput[i]);

строка 100

resultString = String(resultString + digitalInput);

а надо

resultString = String(resultString + digitalInput[i]);

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

slimzp@gmail.com пишет:
Честно я в этом не очень разбираюсь по этому и обратился ко всем вам.
Это, что не Ваш код? А почему Вы обратились в этот раздел? Если код чужой, то Вам в другой раздел надо.

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

теперь вот что 

"C:\Program Files\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10611 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Program Files\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files\Arduino\hardware\arduino\avr\variants\mega" "-IC:\Program Files\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src" "C:\Temp\build38ff8250e1aec0b4d924b8da07773256.tmp\sketch\venato_tavria_sketch_old_shield.ino.cpp" -o "C:\Temp\build38ff8250e1aec0b4d924b8da07773256.tmp\sketch\venato_tavria_sketch_old_shield.ino.cpp.o"
C:\Users\Наталья\Desktop\venato_tavria_sketch_old_shield\venato_tavria_sketch_old_shield.ino: In function 'void setup()':

venato_tavria_sketch_old_shield:26: error: incompatible types in assignment of 'int' to 'int [29]'

venato_tavria_sketch_old_shield:29: error: incompatible types in assignment of 'int' to 'int [15]'

Используем библиотеку SoftwareSerial версии 1.0 из папки: C:\Program Files\Arduino\hardware\arduino\avr\libraries\SoftwareSerial 
exit status 1
incompatible types in assignment of 'int' to 'int [29]'

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

строка 26 должна быть

digitalInput{i}=0;

29

analogInput[i]=0;

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Valera19701 пишет:

строка 26 должна быть

digitalInput{i}=0;

Точно? :)))

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

ШО, скобки не те поставил?, :))))

ну тогда так

digitalInput[i]=0;

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

теперь самое главное загрузил все норм но 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);
}

 

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

Уважаемые форумчани вы извените но я просто все перепробывал одна надежда на вас уже голова взрываеться от компа дня 4 не отходил пива не пил и все зря(

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

что можешь еще сказать?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

slimzp@gmail.com пишет:

что можешь еще сказать?

Так всё уже сказано, если код чужой, то Вам в другой раздел надо.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
  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]);
  } 

 

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

ты фокусник все норм начала мигать лампочка пошло в мониторе порта но с маленьким нюансом 

 

нужно 

 и вот что есть

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

я глаза ломать не буду, сравнивай знки < > в тех строках которые я дал выше

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
//********************************************************************
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);
}

 

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

Делать было нечего, подпилил:

//********************************************************************
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);
}
//------------------------------------------------------------------------------------------------------------------------------------

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

DIYMan пишет:

Делать было нечего, подпилил:

строка 31 и 42 всего15 а не 29 элементов в массиве

и в строках 74 и 81 остались ошибки

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

не подскажешь по поводу того что ноли гонит там чуть выше фото

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

нет, я ничего не могу там разобрать

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

дай почту или на мою напиши я фото скину нормальные

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

попробуй вот так

//********************************************************************
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);
}

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

убрал ненужный код

//********************************************************************
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);
}

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Valera19701 пишет:

попробуй вот так


  for(i=0; i>14; i++){                     //обнуление массива аналоговых значений  

К пятнице уже глаза залили все? Сколько раз проработает цикл с (i=0; i > 14; i++) ?????????????????

Подсказка, млеать: НОЛЬ раз!!!! Я, блин, где-то читал, что НОЛЬ МЕНЬШЕ 14, едреный ёжег!

Что вы там все курите? Поделиццо нет желания?

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

Valera19701 пишет:

строка 31 и 42 всего15 а не 29 элементов в массиве

Да, там проглядел.

Valera19701 пишет:

и в строках 74 и 81 остались ошибки

В чём? Выхода за пределы массива вроде нет. Впрочем, я сильно не приглядывался, надо же что-то автору оставить :)

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

wdrakula пишет:

Valera19701 пишет:

попробуй вот так


  for(i=0; i>14; i++){                     //обнуление массива аналоговых значений  

К пятнице уже глаза залили все? Сколько раз проработает цикл с (i=0; i > 14; i++) ?????????????????

Подсказка, млеать: НОЛЬ раз!!!! Я, блин, где-то читал, что НОЛЬ МЕНЬШЕ 14, едреный ёжег!

Что вы там все курите? Поделиццо нет желания?

дык понятно что должно быть < , но он гад виснет на нем когда в сетапе, в последнем варианте я убрал это,

проверять то не начем, вот и ТС делаеет за меня :))))

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

Вот, подправил:

//------------------------------------------------------------------------------------------
#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);
}
//------------------------------------------------------------------------------------------

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

DIYMan пишет:

Valera19701 пишет:

и в строках 74 и 81 остались ошибки

В чём? Выхода за пределы массива вроде нет. Впрочем, я сильно не приглядывался, надо же что-то автору оставить :)

да не , там все правильно

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

Хотя, конечно, я бы так память не насиловал:

//------------------------------------------------------------------------------------------
#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%) памяти устройства.

 
Почти два кило как с куста.

 

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

на этом лампа РХ мигает но приложение не запускаеться почемуто 

slimzp@gmail.com
Offline
Зарегистрирован: 26.08.2016

СПАСИБО ВСЕМ что есть такие добрые и отзывчивые люди!!!!!!!!!!!!!