не изменяется выходная величина при изменении входной

lopezmil
Offline
Зарегистрирован: 17.02.2015
Не могу понять что не так? Меняя значение "ust" потенциометром, значение "y" вроде должно меняться, но этого не происходит. Прошу помощи разобраться в данной ситуации.
 
#include <OneWire.h>
OneWire ds(10);
 
 
void setup() {
  
  Serial.begin(9600);
}
void loop()
{
  //инициализация уставки температуры:
  int ust = analogRead(0);
  ust = map(ust, 0, 1023, 0, 40);
  Serial.print("ust=");
  Serial.println(ust);
  
   
  // инициализация датчика температуры:
  byte data[2];
  ds.reset(); 
  ds.write(0xCC);
  ds.write(0x44);
  delay(750);
  ds.reset();
  ds.write(0xCC);
  ds.write(0xBE);
  data[0] = ds.read(); 
  data[1] = ds.read();
  int Temp = (data[1]<< 8)+data[0];
  Temp = Temp>>4;
  Serial.print("temp=");
  Serial.println(Temp);
 
// расчет выходной мощности:
 int y= ust/Temp;
 Serial.print("nagrev ");
 Serial.print(Temp);
 Serial.println("% ");
 Serial.println(" ");
    
  delay(2000);
}
 
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а этот кусок кода работает?

 Serial.print("ust=");
  Serial.println(ust);

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

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

А как видите что не меняется? Y нигде не используется и нигде не выводится

lopezmil
Offline
Зарегистрирован: 17.02.2015

Когда выводит на экран уставку температуры. Что значит правильно вставляй код? Можно подробнее? Насколько я понимаю программа должна делить значение "ust" на значение "temp" и выводить на экран результат, как значение "nagrev". Но на деле при изменении "ust" не происходит ничего, а при изменении значения "temp" прямо пропорционально изменяется "nagrev". 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Вы делите ust на Temp и вывыодите Temp... Y вообще не при делах. И еще при делении целого на целое не всегда получите целое

lopezmil
Offline
Зарегистрирован: 17.02.2015

Точно!!! Вот где я ошибся )) Спасибо за помощь!

lopezmil
Offline
Зарегистрирован: 17.02.2015

Может подскажешь ещё один момент, при снижении температуры ниже уставки, temp<ust,  на у появляется 0, а при достижении температуры уставки, на выходе у появляется 1.

lopezmil
Offline
Зарегистрирован: 17.02.2015

коди изменил на :

  

#include <OneWire.h>
OneWire ds(10);
 
 
void setup() {
  
  Serial.begin(9600);
}
void loop()
{
  //инициализация уставки температуры:
  int ust = analogRead(0);
  ust = map(ust, 0, 1023, 0, 40);
  
  Serial.print("ust");
  Serial.println(ust);
  
  
   
  // инициализация датчика температуры:
  byte data[2];
  ds.reset(); 
  ds.write(0xCC);
  ds.write(0x44);
  delay(750);
  ds.reset();
  ds.write(0xCC);
  ds.write(0xBE);
  data[0] = ds.read(); 
  data[1] = ds.read();
  int Temp = (data[1]<< 8)+data[0];
  Temp = Temp>>4;
  
  Serial.print("temp=");
  Serial.println(Temp);
 
// расчет выходной мощности:
 float y= ust/Temp;
 
 Serial.print("nagrev ");
 Serial.print(y);
 Serial.println("% ");
 Serial.println(" ");
  
  
  
  
  delay(2000);
}
 
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

 float y= (float)ust/(float)Temp;

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015
lopezmil
Offline
Зарегистрирован: 17.02.2015

Спасибо! Помогло. И за ссылку спасибо. Теперь буду правильно оформлять вопросы ))