Вывод переменной на 1602

Oksymoron
Offline
Зарегистрирован: 28.01.2017

Доброго времени суток! Прошу помощи в решении проблемы с выводом переменной на 1602, косяк вышел вот в чем, не могу получить коректное отображение переменной, диапозон переменной заключен в диапозоне 50...250, при изменении от 50 до мах. проблем нет но когда изменения идут от мах. значения до 50, при перевале со 100 до 99 не убираеться последний символ т.е. значение пишит 990 а не 90. За ранее благодарю.

int ledPin = 9;      // выход протяжка
int analogPin = 0;   // потенциометр регулировки скорости подачи
int val = 0;         // переменная для хранения значения
int start = 8;       // кнопка пуска
int gaz = 10;        // выход клапана
int tot = 0;         // переменная для отображения скорости
int tok = 0;         // переменная для отображения значения тока
int analog = 1;  // потенциометр регулировки тока

#include <LiquidCrystal.h>  // Добавляем необходимую библиотеку
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup()
{
lcd.begin(16, 2);                  // Задаем размерность экрана
lcd.setCursor(0, 0);               // Устанавливаем курсор в начало 1 строки
lcd.print("S");       // Выводим текст
lcd.setCursor(0, 1);               // Устанавливаем курсор в начало 1 строки
lcd.print("A"); 

Serial.begin(9600);  
pinMode(ledPin, OUTPUT);      // установка порта на выход
pinMode(gaz, OUTPUT);      // установка порта на выход
pinMode(start, INPUT_PULLUP);
}
 
void loop()
{
 int sensorVal = digitalRead(8);
 
 val = analogRead(analogPin);  // считываем значение с порта, подключенному к потенциометру
 val = map(val, 0, 1023, 100, 1023);   // перевести в диапазон 100..1023
 val = constrain(val, 100, 1023);
 
 tot = analogRead(analogPin);
 tot = map(tot, 0, 1023, 10, 99);   // перевести в диапазон 100..1023
 tot = constrain(tot, 10, 99);  

 tok = analogRead(analog);
 tok = map(tok, 0, 1023, 50, 250);   // перевести в диапазон 100..1023
 tok = constrain(tok, 50, 250);  

 
 Serial.print(tok); Serial.print("A   "); Serial.print(tot); Serial.println("B");
 lcd.setCursor(2, 0);              // Устанавливаем курсор в начало 1 строки
 lcd.print(tot);
 lcd.setCursor(2, 1);              // Устанавливаем курсор в начало 1 строки
 lcd.print(tok);

      
      if (sensorVal == HIGH) {
      digitalWrite(9, LOW);
      //delay (500);
      digitalWrite(gaz, LOW);
      }
      else {
      digitalWrite(gaz, HIGH);
      //delay (500);
      analogWrite(ledPin, val / 4);
      }
}

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Запечатывайте его пробелом...

Oksymoron
Offline
Зарегистрирован: 28.01.2017

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

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

sadman41 пишет:

Запечатывайте его пробелом...

lcd.setCursor(2, 0);              // Устанавливаем курсор в начало 1 строки
 lcd.print(tot);
lcd.print("  ")
 lcd.setCursor(2, 1);              // Устанавливаем курсор в начало 1 строки
 lcd.print(tok);
lcd.print("  ")

 

 

И??? ВАриант?

 

Oksymoron
Offline
Зарегистрирован: 28.01.2017

спасибо большое, все заработало.

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

Oksymoron пишет:

спасибо большое, все заработало.


Так это Садману41 скажите

Oksymoron
Offline
Зарегистрирован: 28.01.2017

и Вам спасибо большое.