потенциометр с графическим дисплеем

Использование дисплеев и обсуждение пользовательских блоков к ним
Ответить
olegs
Рядовой
Сообщения: 14
Зарегистрирован: 27.07.2016{, 14:32}
Репутация: 0
Контактная информация:

потенциометр с графическим дисплеем

#1

Сообщение olegs » 02.08.2016{, 12:48}

здравствуйте! подскажите новичку) у меня такая задача (на flprog) С помощью потенциометра (50кОм) вращаю серво мотор (SD-90) и вывожу информацию на дисплей (1602). хочу сделать так, чтобы на одной 1 строке показывало градусы, а на 2 строке, например, на 90 градусов центр (!) при меньше 90 надпись "left" -при больше 90 соответственно надпись "right"
у меня всё время показывает "right"  в чём моя ошибка или что я упустил?
Вложения
7072612.jpg
с уважением olegs

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

потенциометр с графическим дисплеем

#2

Сообщение Сергей » 02.08.2016{, 13:50}

olegs, проект выложите. По фото не понятны настройки блоков.

olegs
Рядовой
Сообщения: 14
Зарегистрирован: 27.07.2016{, 14:32}
Репутация: 0
Контактная информация:

потенциометр с графическим дисплеем

#3

Сообщение olegs » 02.08.2016{, 14:28}

#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

Servo _SM1;
int _disp2oldLength = 0;
int _disp3oldLength = 0;
int _disp1oldLength = 0;
int _disp4oldLength = 0;
void setup()
{
_SM1.attach(3);
_lcd1.begin(16, 2);
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}

if (1) {
_dispTempLength1 = (((String((map(( (analogRead (0))), (666), (1024), (0), (180))))))).length();
if (_disp3oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;} 
_disp3oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 - _dispTempLength1)/2), 0);
_lcd1.print(((String((map(( (analogRead (0))), (666), (1024), (0), (180)))))));
} else {
if (_disp3oldLength > 0) {_isNeedClearDisp1 = 1; _disp3oldLength = 0;} 
}
if (((((String((map(( (analogRead (0))), (666), (1024), (0), (180)))))).compareTo(String("91")))>0)) {
_dispTempLength1 = (String("lift")).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;} 
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 - _dispTempLength1)/2), 1);
_lcd1.print(String("lift"));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;} 
}
if (1) {_SM1.write ((map(( (analogRead (0))), (666), (1024), (0), (180))));} 
if ((((String((map(( (analogRead (0))), (666), (1024), (0), (180)))))).equals(String("90")))) {
_dispTempLength1 = (String("!!!!!!!!!!")).length();
if (_disp4oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;} 
_disp4oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 - _dispTempLength1)/2), 1);
_lcd1.print(String("!!!!!!!!!!"));
} else {
if (_disp4oldLength > 0) {_isNeedClearDisp1 = 1; _disp4oldLength = 0;} 
}
if (((((String((map(( (analogRead (0))), (666), (1024), (0), (180)))))).compareTo(String("89")))<0)) {
_dispTempLength1 = (String("right")).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;} 
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 - _dispTempLength1)/2), 1);
_lcd1.print(String("right"));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;} 
}

}
с уважением olegs

Аватара пользователя
Vitez
Сержант
Сообщения: 211
Зарегистрирован: 08.11.2015{, 14:32}
Репутация: 4

потенциометр с графическим дисплеем

#4

Сообщение Vitez » 02.08.2016{, 14:47}

olegs, Проект выкладывайте в формате FLProg.  Зачем числовое значение переводить в строку. Блоком "Компаратор"  сравнивайте числовое значение < 90 или >90

Ответить

Вернуться в «Дисплеи и индикаторы»