немного тупых вопросов

kiselev
Offline
Зарегистрирован: 02.07.2016
 


void setup() {
  // put your setup code here, to run once:
  pinMode(A0,INPUT);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:
int s= analogRead(0) /4;
Serial.println(s);
analogWrite(11,s);
int var=0.05076142*s-2;
delay(1);
Serial.print(var);
delay(100);
int p ;
if (var== p){
  digitalWrite(13,LOW);
  delay(500);
}
else
{
digitalWrite(13,HIGH);
}
p=var;
}
 
з7
вот такой простой код я хочу что бы он сравнивал var с прошлого цикла с var(приравниваю его к р) в новом цикле.

но почему то значения var равны p но все равно он их как то неправильно сравнивает и говорит что не равны

в чем может быть ошибка,заранее спасибо

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Если какие-то переменные объявляешь внутри скобок {} , то выходя за них , а так же входя это уже другая переменная, хотя и название тоже. Но если все же очень хочется, то static http://arduino.ru/Reference/Static.

int var=0.05076142*s-2;

Но это сработает 1 раз при первом проходе.
ПС: Это условие языка и компилятора.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Или объяви переменную глобальной, т.е. вне функций setup() и loop()

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

kiselev пишет:

int var=0.05076142*s-2;
 
...
int p ;
if (var== p){
 
он их как то неправильно сравнивает и говорит что не равны
П.1 Блин, вставляйте код правильно - невозможно же обсуждать!

Почему неправильно? Правильно сравнивает.

var получило значение в строке № <блин, см. п. 1>, а p просто объявлено в строке №<блин, см. п. 1> и тут же, в следующей строке сравнивается с var. Чему равно p, если Вы ему ничего не присволили? ХЗ! Вот так оно у Вас и работает. Совершенно правильно, как написали, так и работает.

P.S. Если хотите дальнейшей работы, вставьте код правильно, иначе ничего не будет (от меня, по крайней мере).