Помогите подключить библиотеку S1D13700 к due

Trey3499
Trey3499 аватар
Offline
Зарегистрирован: 06.06.2014

Здравствуйте!

библиотеку ставлю:C:\Users\Серёга\Documents\Arduino\libraries\S1D

но при проверке выдает ошибку:
In file included from sketch_jun11a.ino:1:
C:\Users\Серёга\Documents\Arduino\libraries\S1D/S1D13700.h:45: fatal error: WProgram.h: No such file or directory
compilation terminated.
 

Trey3499
Trey3499 аватар
Offline
Зарегистрирован: 06.06.2014

 

Здравствуйте!

библиотеку ставлю:C:\Users\Серёга\Documents\Arduino\libraries\S1D

но при проверке выдает ошибку:
In file included from sketch_jun11a.ino:1:
C:\Users\Серёга\Documents\Arduino\libraries\S1D/S1D13700.h:45: fatal error: WProgram.h: No such file or directory
compilation terminated.

программа arduino-1.5.6-r2-windows-32

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так вам же все написала идэ. откройте файл на который ругается и замените в тексте WProgram.h на Arduino.h

Trey3499
Trey3499 аватар
Offline
Зарегистрирован: 06.06.2014

Спасибо большое.

появилось массу ошибок но уже с програмной частью.

C:\Users\Серёга\Documents\Arduino\libraries\S1D\S1D13700.cpp: In function 'void setData(unsigned char)':
C:\Users\Серёга\Documents\Arduino\libraries\S1D\S1D13700.cpp:87: error: 'DDRD' was not declared in this scope
C:\Users\Серёга\Documents\Arduino\libraries\S1D\S1D13700.cpp:88: error: 'PORTD' was not declared in this scope
C:\Users\Серёга\Documents\Arduino\libraries\S1D\S1D13700.cpp: In member function 'unsigned char S1D13700::readData()':
C:\Users\Серёга\Documents\Arduino\libraries\S1D\S1D13700.cpp:214: error: 'DDRD' was not declared in this scope
C:\Users\Серёга\Documents\Arduino\libraries\S1D\S1D13700.cpp:226: error: 'PIND' was not declared in this scope
 

если я правильно думаю то не совпадают функция и пины мк?

ссылка на библиотеку  http://www.cafelogic.com/2011/new-s1d13700-beta-library-for-arduino/

Trey3499
Trey3499 аватар
Offline
Зарегистрирован: 06.06.2014

удалите первое сообщение плиз.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

конечно. если хотите запустить придется много править в библиотеке

Trey3499
Trey3499 аватар
Offline
Зарегистрирован: 06.06.2014

конечно хочу!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не сами ручками

Trey3499
Trey3499 аватар
Offline
Зарегистрирован: 06.06.2014

 

Вот нашел сборку библиотек к due!!!

Вот только еще не разобрался как все работает.

https://github.com/delsauce

 

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

jeka_tm пишет:

так вам же все написала идэ. откройте файл на который ругается и замените в тексте WProgram.h на Arduino.h

не пойму , где мне нужно заменить ?? я кроме как в окне отчета об ошибках нигде более этоо текста не могу найти. скажите где нужно заменить? 2:30 ночи голову ломаю с 9 вечера. 

 
PID_v1.cpp:8:22: fatal error: WProgram.h: No such file or directory
 #include <WProgram.h>
                      ^
compilation terminated.
 
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

PID_v1.cpp в папке ардуино есль папка с библиотеками. находишь свою. а там внутри файл PID_v1.cpp

открой его и все сам увидишь

но почему называет pid это странно

 

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

jeka_tm пишет:

PID_v1.cpp в папке ардуино есль папка с библиотеками. находишь свою. а там внутри файл PID_v1.cpp

открой его и все сам увидишь

но почему называет pid это странно

 

ДА, НО ВОТ В ЭТОМ ПРОБЛЕМА. у меня не открываютя папки с разрешением срр и н. в чем их открыть? у меня вин 7

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

это не папки а файл

лучше этим, но можно и блокнотом

http://notepad-plus-plus.org/

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

странно, нашел, поменял, а она все равно пишет тоже самое. причем при сохранении она закричала: что только для чтения и сохранить можно только в другом месте, так и сделал. сохранил в другом месте , потом удалил предыдущие срр и вставил новые. теперь в срр написано<Arduino.h> и все равно она выдает ту же ошибку. почему???????

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

вот что пишет : 

 
C:\Users\admin\Documents\Arduino\libraries\PID_RelayOutput\PID_v1.cpp:8:22: fatal error: WProgram.h: No such file or directory
 #include <WProgram.h>
                      ^
compilation terminated.
Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

вот полный текст: /**********************************************************************************************

 * Arduino PID Library - Version 1
 * by Brett Beauregard <br3ttb@gmail.com> brettbeauregard.com
 *
 * This Code is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
 **********************************************************************************************/
 
#include <Arduino.h>
#include <PID_v1.h>
 
/*Constructor (...)*********************************************************
 *    The parameters specified here are those for for which we can't set up 
 *    reliable defaults, so we need to have the user set them.
 ***************************************************************************/
PID::PID(double* Input, double* Output, double* Setpoint,
        double Kp, double Ki, double Kd, int ControllerDirection)
{
PID::SetOutputLimits(0, 255); //default output limit corresponds to 
//the arduino pwm limits
 
    SampleTime = 100; //default Controller Sample Time is 0.1 seconds
 
    PID::SetControllerDirection(ControllerDirection);
    PID::SetTunings(Kp, Ki, Kd);
 
    lastTime = millis()-SampleTime;
    inAuto = false;
    myOutput = Output;
    myInput = Input;
    mySetpoint = Setpoint;
 
}
 
 
/* Compute() **********************************************************************
 *     This, as they say, is where the magic happens.  this function should be called
 *   every time "void loop()" executes.  the function will decide for itself whether a new
 *   pid Output needs to be computed
 **********************************************************************************/ 
void PID::Compute()
{
   if(!inAuto) return;
   unsigned long now = millis();
   int timeChange = (now - lastTime);
   if(timeChange>=SampleTime)
   {
      /*Compute all the working error variables*/
 double input = *myInput;
      double error = *mySetpoint - input;
      ITerm+= (ki * error);
      if(ITerm > outMax) ITerm= outMax;
      else if(ITerm < outMin) ITerm= outMin;
      double dInput = (input - lastInput);
 
      /*Compute PID Output*/
      double output = kp * error + ITerm- kd * dInput;
      
 if(output > outMax) output = outMax;
      else if(output < outMin) output = outMin;
 *myOutput = output;
 
      /*Remember some variables for next time*/
      lastInput = input;
      lastTime = now;
   }
}
 
 
/* SetTunings(...)*************************************************************
 * This function allows the controller's dynamic performance to be adjusted. 
 * it's called automatically from the constructor, but tunings can also
 * be adjusted on the fly during normal operation
 ******************************************************************************/ 
void PID::SetTunings(double Kp, double Ki, double Kd)
{
   if (Kp<0 || Ki<0 || Kd<0) return;
 
   dispKp = Kp; dispKi = Ki; dispKd = Kd;
   
   double SampleTimeInSec = ((double)SampleTime)/1000;  
   kp = Kp;
   ki = Ki * SampleTimeInSec;
   kd = Kd / SampleTimeInSec;
 
  if(controllerDirection ==REVERSE)
   {
      kp = (0 - kp);
      ki = (0 - ki);
      kd = (0 - kd);
   }
}
  
/* SetSampleTime(...) *********************************************************
 * sets the period, in Milliseconds, at which the calculation is performed
 ******************************************************************************/
void PID::SetSampleTime(int NewSampleTime)
{
   if (NewSampleTime > 0)
   {
      double ratio  = (double)NewSampleTime
                      / (double)SampleTime;
      ki *= ratio;
      kd /= ratio;
      SampleTime = (unsigned long)NewSampleTime;
   }
}
 
/* SetOutputLimits(...)****************************************************
 *     This function will be used far more often than SetInputLimits.  while
 *  the input to the controller will generally be in the 0-1023 range (which is
 *  the default already,)  the output will be a little different.  maybe they'll
 *  be doing a time window and will need 0-8000 or something.  or maybe they'll
 *  want to clamp it from 0-125.  who knows.  at any rate, that can all be done
 *  here.
 **************************************************************************/
void PID::SetOutputLimits(double Min, double Max)
{
   if(Min >= Max) return;
   outMin = Min;
   outMax = Max;
 
   if(inAuto)
   {
  if(*myOutput > outMax) *myOutput = outMax;
  else if(*myOutput < outMin) *myOutput = outMin;
 
  if(ITerm > outMax) ITerm= outMax;
  else if(ITerm < outMin) ITerm= outMin;
   }
}
 
/* SetMode(...)****************************************************************
 * Allows the controller Mode to be set to manual (0) or Automatic (non-zero)
 * when the transition from manual to auto occurs, the controller is
 * automatically initialized
 ******************************************************************************/ 
void PID::SetMode(int Mode)
{
    bool newAuto = (Mode == AUTOMATIC);
    if(newAuto == !inAuto)
    {  /*we just went from manual to auto*/
        PID::Initialize();
    }
    inAuto = newAuto;
}
 
/* Initialize()****************************************************************
 * does all the things that need to happen to ensure a bumpless transfer
 *  from manual to automatic mode.
 ******************************************************************************/ 
void PID::Initialize()
{
   ITerm = *myOutput;
   lastInput = *myInput;
   if(ITerm > outMax) ITerm = outMax;
   else if(ITerm < outMin) ITerm = outMin;
}
 
/* SetControllerDirection(...)*************************************************
 * The PID will either be connected to a DIRECT acting process (+Output leads 
 * to +Input) or a REVERSE acting process(+Output leads to -Input.)  we need to
 * know which one, because otherwise we may increase the output when we should
 * be decreasing.  This is called from the constructor.
 ******************************************************************************/
void PID::SetControllerDirection(int Direction)
{
   if(inAuto && Direction !=controllerDirection)
   {
 kp = (0 - kp);
      ki = (0 - ki);
      kd = (0 - kd);
   }   
   controllerDirection = Direction;
}
 
/* Status Funcions*************************************************************
 * Just because you set the Kp=-1 doesn't mean it actually happened.  these
 * functions query the internal state of the PID.  they're here for display 
 * purposes.  this are the functions the PID Front-end uses for example
 ******************************************************************************/
double PID::GetKp(){ return  dispKp; }
double PID::GetKi(){ return  dispKi;}
double PID::GetKd(){ return  dispKd;}
int PID::GetMode(){ return  inAuto ? AUTOMATIC : MANUAL;}
int PID::GetDirection(){ return controllerDirection;}
 
Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

Жека , в чем может быть проблема?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

либу пид скачай последнюю

https://github.com/br3ttb/Arduino-PID-Library/zipball/master

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

спасибо жека, попробую сейчас

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

слава, жеке! слава богу и моему терпению))) спасиб еще раз. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну ты даешь))) сколько эмоций. видно долго мучался

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

я же писал, со вчерашнего вечера , с 9 часов до 5 утра, и с 9 утра снова голову ломал. из за этой проблемы не мог залить скетч готовый, я его неделю собираю уже. хотя по сути совсем простенький

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

жека может ты мне подскажешь? чет кажется я чет нахимичил с тахометром, как то через попу накидал. у меня по проекту, 2 импульса =1 об/мин. а на деле выходит чет совсем другое. глянь правильно ли ??:: обрати внимание на саму функцию, это не весь скетч, а лишь его малая часть:://********************************************************************

unsigned long micros_th = 0;
volatile int tz; 
volatile int th;                            //импульсы тахометра
 
//********************************************************************
void setup(){ 
              
  Serial.begin(115200);                     //инициализация ком порта 
  
  attachInterrupt(0, tahometr,   RISING);   //прерывание тахометра по фронтам импульса
//********************************************************************
void loop(){  }
 
//********************************************************************
void tahometr(){                            //измеряем частоту на входе тахометра по прерыванию
  th=(900000.0/( micros() - micros_th));
  micros_th = micros();
  tz = 30;
}
    
 
с какой переменной я могу получать обороты/минуту, уже высчитанные???
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

посмотри как код правильно вставлять

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

1900000.0 зря ты это
2900000    лучше так

зачем это вообще непонятно

а брать из переменной th

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

а фиг знает, это я слизал у товарисча)) хотя это полный тахо и он у него робит

 

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014
01//********************************************************************
02unsigned long micros_th = 0;
03volatile int tz;
04volatile int th;                            //импульсы тахометра
05 
06//********************************************************************
07void setup(){
08               
09  Serial.begin(115200);                     //инициализация ком порта
10   
11  attachInterrupt(0, tahometr,   RISING);   //прерывание тахометра по фронтам импульса
12}
13//********************************************************************
14void loop(){  }
15 
16//********************************************************************
17void tahometr(){                            //измеряем частоту на входе тахометра по прерыванию
18  th=(900000.0/( micros() - micros_th));
19  micros_th = micros();
20  tz = 30;
21}

вот, так то . спасибо еще раз

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

как считаешь , если уберу

 20 tz = 30; он считать будет? и вообще, Жека если не сложно, объясни что происходит в функции? поэтапно.

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

могу кинуть полный скетч, подскажешь как из массива вырвать рабочий кусок тахометра?

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

два импульса на оборот, а данный скетч выдаст общее кол-во импульсов за интервал времени или переведет в обороты/мин? или просто время в миллис между импульсами?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да все здесь и считается. больше ничего не надо

1//********************************************************************
2void tahometr(){                            //измеряем частоту на входе тахометра по прерыванию
3  th=(900000.0/( micros() - micros_th)); // считаем частоту, просто делим 900000 на время между импульсами. micros() это время сейчас, micros_th время предыдущего импульса
4  micros_th = micros(); //после того как посчитали запоминаем текущее время чтобы использовать при следующем импульсе
5  tz = 30;//хз зачем
6}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

похоже сразу в обороты в мин переведет

все равно по тахометру надо будет проверять правильное ли число 900000 стоит или нет. возможно конктретно под твой автомобиль придется править

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

понял Жека спасибо, буду должен)), ты сам откуда? я вот анапский.

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

чет на 2000 реальных выдает цифру 200. эт как так?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да забей. я из москвы

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

значит вместо 900000 надо 9000000

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

оо, а я на прошлой неделе только прилетел и москвы.

в гостях о родных был на полежаевской и на кутузовской

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

)

ну что получилось?

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

холодно у вас. а у нас еще теплая оень))сегодня первый день дождь моросит, а так более 18 было

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

пока не пробовал, сейчас дождь усилился, мокнуть не хочу. машинка на улице, утихнет проверю

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да должно получится. а погода какая есть

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014
001//********************************************************************
002unsigned long micros_sp = 0, micros_th = 0;
003volatile int  tz;
004volatile int  sz;
005volatile int  sp;                            //импульсы спидометра
006volatile int  th;                            //импульсы тахометра
007int           analogInput [15];              //массив аналоговых значений
008int           digitalInput[29];              //массив цифровых значений
009String        resultString = "";             //строка
010int           i;                             //счетчик циклов
011//********************************************************************
012void setup(){
013  for(i=0; i<=14; i++){                     //обнуление массива аналоговых значений 
014    digitalInput[i]=0;
015  }
016  for(i=0; i<=28; i++){                     //обнуление массива цифровых значений 
017    analogInput[i]=0;
018  }
019  Serial.begin(115200);
020  Serial2.begin(115200);                     //инициализация ком порта
021  attachInterrupt(0, speedometr, RISING);   //прерывание спидометра по фронтам импульса
022  attachInterrupt(1, tahometr,   RISING);   //прерывание тахометра по фронтам импульса
023}
024//********************************************************************
025void loop(){
026  analogInput[0]   =      analogRead(4);         // B13    напряжение
027  analogInput[1]   =      analogRead(3);         // B24    топливо
028  analogInput[2]   =      analogRead(5);         // B21    температура охлаждения
029  analogInput[3]   =      analogRead(8);         // B20    температура в салоне
030  analogInput[4]   =      analogRead(7);         // B19    температура за бортом
031  analogInput[5]   =      analogRead(1);         //        дифферент
032  analogInput[6]   =      analogRead(2);         //        крен
033  analogInput[7]   =      analogRead(9);         // B17    аналог
034  analogInput[8]   =      analogRead(10);        // B18    аналог
035  analogInput[9]   =      analogRead(11);        // B15    резерв
036  analogInput[10]  =      analogRead(12);        // B16    резерв
037  analogInput[11]  =      analogRead(13);        // B13    резерв
038  analogInput[12]  =      analogRead(14);        // B14    резерв
039  analogInput[13]  =      analogRead(15);        // B11    резерв
040  analogInput[14]  =      analogRead(6);         // B22    резерв
041   
042   
043  digitalInput[0] =       digitalRead(47);       // В2    зажигание
044  digitalInput[1] =       digitalRead(9);        // В4    ночной скин
045  //********************************************************************
046  digitalInput[2]  =      digitalRead(53) +      // В8    кнопка выбора
047                          digitalRead(52) * 2;   // В7    кнопка действия
048  //********************************************************************
049  digitalInput[3]  =      digitalRead(32) +      // A14    левый поворот
050                          digitalRead(33) * 2;   // A13    правый поворот
051  //********************************************************************
052  digitalInput[4]  =      digitalRead(28) +      // A18    габарит
053                          digitalRead(29) * 2;   // A17    дальний
054 //********************************************************************
055  digitalInput[5]  =      digitalRead(30) +      // А16    птф передние
056                          digitalRead(31) * 2;   // A15    птф задний
057 //********************************************************************
058  digitalInput[6]  =      digitalRead(24);       // A23    чек
059  digitalInput[7]  =     !digitalRead(49);       // B 9  - уровень тж
060  digitalInput[8]  =     !digitalRead(27);       // A19  - ручник
061  digitalInput[9]  =      digitalRead(50);       // B 3    износ колодок
062  digitalInput[10] =    0;// !digitalRead(47);       // B10  - лампа топлива
063  digitalInput[11]  =    !digitalRead(51);       // B12  - уровень ож
064  digitalInput[12] =     !digitalRead(22);       // А24  - давление масла
065  digitalInput[13] =      digitalRead(37);       // A20    лампа вентилятора
066  digitalInput[14] =      digitalRead(23);       // A23    зарядка
067  digitalInput[15] =      0;//digitalRead(22);       // A 5    абс
068  digitalInput[16] =      digitalRead(26);       // A20    srs
069  digitalInput[17] =      digitalRead(18);       // A 3    ремень
070  digitalInput[18] =      digitalRead(46);       // B 1    двери
071  digitalInput[19] =      digitalRead(42);       // B 2    p
072  digitalInput[20] =      digitalRead(39);       // А22    r
073  digitalInput[21] =      digitalRead(24);       // A 7    n
074  digitalInput[22] =      0;//digitalRead(46);       // B 6    d
075  digitalInput[23] =      0;//digitalRead(52);       // B 5    s
076  digitalInput[24] =      digitalRead(25);       // A 8    резерв
077  digitalInput[25] =      0;//digitalRead(26);       // A 9    резерв
078  digitalInput[26] =      digitalRead(27);       // A10    резерв
079  digitalInput[27] =      0;//digitalRead(28);       // A11    резерв
080  digitalInput[28] =      digitalRead(44);       // B 4    резерв
081   
082   
083     
084  resultString = String(resultString + sp);
085  resultString = String(resultString + ",");
086  resultString = String(resultString + th);
087  resultString = String(resultString + ",");
088  for(i=0; i<=14; i++){                    //передаем аналоговые данные из массива в COM-port
089    resultString = String(resultString + analogInput[i]);
090    resultString = String(resultString + ",");
091  }
092  for(i=0; i<=28; i++){                    //передаем цифровые данные из массива в COM-port 
093    resultString = String(resultString  + digitalInput[i]);
094  }
095  resultString = String(resultString + ":\n");
096  Serial2.print (resultString);
097  Serial.print (resultString);
098  resultString =  String("");
099  tz = tz - 1;
100  sz = sz - 1;
101  if (tz == 0){th = 0;}
102  if (sz == 0){sp = 0;}
103  delay(50);
104}
105//********************************************************************
106void speedometr(){                          //измеряем частоту на входе спидометра по прерыванию
107   sp=(900000.0/( micros() - micros_sp));
108   micros_sp = micros();
109   sz = 10;
110}
111//********************************************************************
112void tahometr(){                            //измеряем частоту на входе тахометра по прерыванию
113  th=(2900000.0/( micros() - micros_th));
114  micros_th = micros();
115  tz = 10;
116}
117 
118вотсмотри, это полный скетч. почему то в этом другие цифры, 2900000 и тз 10 почему так???

 

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

для чего эта переменная  tz?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

а tz зачем незнаю

но по ней обнуляется тахометр

это что то типа контроля всего авто на ноуте или планшете?

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

как это не странно на меге с выводом на свисток( мини писи под андроид) по вафле.на свистке флешь анмация со стрелками и прочими показометрами. вообщем круть полная))

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

хотя можно и на андроиде и на вин

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

любой гаджет пойдет

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

скинь ссылку хоть на проект глянуть для чего все это

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

оказывается уже видел. крисиво сделали

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

да суперски)) и защитили неплохо)) сломать не выходит

)

Pnewmoslon
Offline
Зарегистрирован: 26.07.2014

Жека добрый вечер. скажи что этому куску скетча нужно? ругается гад : 

 
podcoc_gotobiy_bez_temperaturi.ino: In function 'void loop()':
podcoc_gotobiy_bez_temperaturi.ino:37:26: error: lvalue required as left operand of assignment
podcoc_gotobiy_bez_temperaturi.ino:43:25: error: lvalue required as left operand of assignment
1  if (val >= 1000 && rpm = 0) {digitalWrite(8, LOW); // если темп больше или ровна 85С и обороты ровны 0,гасим свети прыгаем на label
2goto label;
3}
4  if (val >= 1000 && rpm > 0) {digitalWrite(8, LOW);//если темп больше 85С и обороты больше 0,гасим свет и прыгаем на label
5  goto label;
6}
7  if (val < 1000 && rpm = 0) {ustanovkaServa;}//температ меньше 85 и оборты = 0, запускаем функцию начальной устан сервы
8  if (val < 1000 && rpm >= 750) {zapuskPid;}//темп меньше 85 и обороты больше или ровны 750. запускаем пид
9}