здравствуйте! подскажите новичку) у меня такая задача (на flprog) С помощью потенциометра (50кОм) вращаю серво мотор (SD-90) и вывожу информацию на дисплей (1602). хочу сделать так, чтобы на одной 1 строке показывало градусы, а на 2 строке, например, на 90 градусов центр (!) при меньше 90 надпись "left" -при больше 90 соответственно надпись "right"
у меня всё время показывает "right" в чём моя ошибка или что я упустил?
потенциометр с графическим дисплеем
потенциометр с графическим дисплеем
У вас нет необходимых прав для просмотра вложений в этом сообщении.
с уважением olegs
- Сергей
- Лейтенант
- Сообщения: 578
- Зарегистрирован: 31 авг 2015, 15:06
- Имя: Сергей
- Контактная информация:
потенциометр с графическим дисплеем
olegs, проект выложите. По фото не понятны настройки блоков.
потенциометр с графическим дисплеем
#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;}
}
}
#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
потенциометр с графическим дисплеем
olegs, Проект выкладывайте в формате FLProg. Зачем числовое значение переводить в строку. Блоком "Компаратор" сравнивайте числовое значение < 90 или >90
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей