Запятая

antonx
Offline
Зарегистрирован: 29.12.2019

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

Почему только в первой колонке после запятой есть какие то цифры а в  остальных нет ?
Помогите исправить ?
 
#include <LiquidCrystal.h>
//LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);
LiquidCrystal lcd(PB15, PB5, PA2, PB6, PB8, PB9);
int A = 25;
int B = 22;
int D;
int E;
void setup()
{
  Serial.begin(115200);
  lcd.begin(16, 2);
}
void loop()
{
  float  C = sqrt( A * A + B * B );
  float D = ((A * 100 / B * 100) / 100);//
  float E = A / B; // = 1.36
  
  Serial.print(C);        //ok
  Serial.print("   ");
  Serial.print(D);        // = 113.6
  Serial.print("   ");
  Serial.println(E);      // =1.136

  lcd.setCursor(0, 1);
  lcd.print(C);

}

 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

может так?
 

  float  C = (float)sqrt( A * A + B * B );
  float D = (float)((A * 100 / B * 100) / 100.0);//
  float E = (float)A / B; // = 1.36  
  Serial.print(C,3);        //ok
  Serial.print("   ");
  Serial.print(D,3);        // = 113.6
  Serial.print("   ");
  Serial.println(E,3);      // =1.136

 

antonx
Offline
Зарегистрирован: 29.12.2019

Лучше

113.000 должно быть 113.6

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

Замените int на float в строках №№4 и 5, а строки №№6 и 7 выбросьте вовсе.

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

ua6em пишет:

может так?
 

  float  C = (float)sqrt( A * A + B * B );
  float D = (float)((A * 100 / B * 100) / 100.0);//
  float E = (float)A / B; // = 1.36  
  Serial.print(C,3);        //ok
  Serial.print("   ");
  Serial.print(D,3);        // = 113.6
  Serial.print("   ");
  Serial.println(E,3);      // =1.136

 

Нет, не так. Вы сначала делите целые, а потом преобразовываете к float, когда уже поздно боржом пить.

antonx
Offline
Зарегистрирован: 29.12.2019

Спасибо, все работает как хотел.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

может так?
 

  float  C = (float)sqrt( A * A + B * B );
  float D = (float)((A * 100 / B * 100) / 100.0);//
  float E = (float)A / B; // = 1.36  
  Serial.print(C,3);        //ok
  Serial.print("   ");
  Serial.print(D,3);        // = 113.6
  Serial.print("   ");
  Serial.println(E,3);      // =1.136

 

Нет, не так. Вы сначала делите целые, а потом преобразовываете к float, когда уже поздно боржом пить.

боржом как вода кончился однако )))

antonx
Offline
Зарегистрирован: 29.12.2019

А можна на сериал плоттер получить такую картину , есть угол и гипотенуза прямоугольного треугольника ?



//
#include <LiquidCrystal.h>
//LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);
LiquidCrystal lcd(PB15, PB5, PA2, PB6, PB8, PB9);

int A = 25;
int B = 25;

void setup()
{
  Serial.begin(115200);
  lcd.begin(16, 2);
}
void loop()
{

  float  C = (float)sqrt( A * A + B * B );
  //E= RAD_TO_DEG * (atan2(A, B)+PI);
  E = RAD_TO_DEG * (atan2(A, B));

  Serial.print(C, 3);         //гипотенуза 
  Serial.print("   ");
  Serial.print("AngleX= ");
  Serial.println(E);        // угол
  /////////////////

  lcd.setCursor(0, 1);
  lcd.print(C);

}
sadman41
Offline
Зарегистрирован: 19.10.2016

Теоретически можно, но без букв.

antonx
Offline
Зарегистрирован: 29.12.2019

Без букв тоже хорошо. Для начала хорошо бы получить одно вертикальную линию. 

sadman41
Offline
Зарегистрирован: 19.10.2016

С абсолютно вертикальной проблема, конечно. Всегда на пиксель минимум будет наклон. Придется треугольник на гипотенузу класть.