Присваивание значения переменной

Jameson
Offline
Зарегистрирован: 21.03.2014

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

Geronimo
Offline
Зарегистрирован: 06.05.2013

Не очень понятна постановка задачи..

данные в переменной поменяются тогда когда вы укажете в программе.

Jameson
Offline
Зарегистрирован: 21.03.2014

Допустим есть сенсор с которого постоянно считываются значение мне нужно записать в переменную  только 1  раз  и при необходимости перезаписать ,у меня данные перезаписываются постоянно а нужно 1 раз

Клапауций
Offline
Зарегистрирован: 10.02.2013

ну, так не считывайте постоянно данные в переменную.

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

Jameson
Offline
Зарегистрирован: 21.03.2014
if (distance_cm > 20) 
{
    Serial.println(0);
    delay (250);
    float first_angle = 90.00 ;
    float second_angle = 0 ;
    second_angle = first_angle + heading ;
    if ( heading != second_angle )
{  
    digitalWrite(D1, LOW);  
    digitalWrite(D2, LOW);
    analogWrite(M1, 150 );       
    analogWrite(M2, 0 );
}
}

 

есть переменная  float first_angle  которая равна 90 и к ней я прибавляю значение с цифрового компаса окончательно значение заношу в float second_angle (перед этим обнулил) и при изменении значения с сенсора ( heading) изменяется и second_angle
Geronimo
Offline
Зарегистрирован: 06.05.2013
float var;
byte  flag = 0;
void setup()
{
    pinMode( A0, INPUT);
}

void loop()
{
   if(!flag)
   {
       var = analogRead(A0);
       flag = 1;
   }
}

 

Jameson
Offline
Зарегистрирован: 21.03.2014

в переменную вар я буду вносить значение сенсора под циклом if??

Geronimo
Offline
Зарегистрирован: 06.05.2013
float heading;
float first_angle;
float second_angle;
float distance_cm;
byte second_angle_accuired = 0;

void setup()
{
// skipped
}

void loop()
{
   if(distance_cm >20)
  {
     Serial.println(0);
     delay(20);
     first_angle = 90;
     if(!second_angle_accuired)
     {
         second_angle = first_angle + heading;
        second_angle_accuired = 1;
     }
    if(heading != second_angle)
    {
     /// тра-та-та
    }

  }
}

 

Jameson
Offline
Зарегистрирован: 21.03.2014
if(heading != second_angle)
 {
 }

тут вместо if можно ли использовать for для того чтобы если вошло в цикло он не выходило из него пока (heading != second_angle ) истинна не смотря ни на что?

Geronimo
Offline
Зарегистрирован: 06.05.2013

Jameson пишет:

if(heading != second_angle)
 {
 }

тут вместо if можно ли использовать for для того чтобы если вошло в цикло он не выходило из него пока (heading != second_angle ) истинна не смотря ни на что?

Лучше тогда не for  а while

Jameson
Offline
Зарегистрирован: 21.03.2014

может у кого-то есть скетч нормального таймера?