lcd
- Войдите на сайт для отправки комментариев
Сб, 24/12/2016 - 00:18
доброго времени
Подскажите пожалусто как ограничеть значения in_volt и out_volt с точностью до сотых 0.00
а то выдает на дисплей полный ответ 0.000000000 так на дисплее места не хватит на все что надо вывести на дисплей.
[code]
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
const int PWM_PIN = 3; // выход расходомер
const int AIN_PIN = A0; // вход расходомер
int val = 0; // переменная для хранения сигнала входящего расходомера
byte VAF[256] //таблица выход
{
205,202,198,195,192,189,185,182,179,176,
172,169,167,165,164,162,160,158,157,155,
153,151,150,148,146,145,144,142,141,140,
138,136,134,133,132,130,129,128,126,125,
123,122,121,120,119,118,117,116,115,114,
113,112,111,110,109,108,107,106,105,104,
103,102,101,100,99,98,96,95,94,93,
92,91,90,89,88,87,86,85,84,83,
82,81,80,79,78,77,76,75,74,73,
72,71,70,70,69,69,68,67,67,66,
66,65,65,64,63,63,62,62,61,60,
60,59,58,58,57,57,56,56,55,54,
54,53,52,52,51,51,50,49,49,48,
48,47,46,46,45,44,44,43,43,42,
41,41,40,40,40,39,39,39,38,38,
38,37,37,37,36,36,36,35,35,34,
34,34,33,33,33,32,32,32,31,31,
30,30,30,30,30,30,29,29,29,28,
28,28,27,27,26,26,26,25,25,25,
24,24,24,23,23,23,22,22,21,21,
21,20,20,20,19,19,19,18,18,18,
17,17,16,16,16,15,15,15,14,14,
14,14,14,14,13,13,13,12,12,12,
11,11,11,10,10,9,9,8,8,7,
7,6,6,5,5,4,4,3,3,2,
2,1,1,1,0,0
};
void setup()
{
lcd.begin(16, 2);
lcd.print("\x50\A\C\X\O\xE0\ \B\O\xA4\xE0\xA9\X\A");
lcd.setCursor(0, 1);
lcd.print("\B\o\xBB\xC4\x89\ \xDA\ \xD9\ ");
TCCR2B = TCCR2B & 0b11111000 | 0x02;
pinMode (PWM_PIN, OUTPUT); // сконфигурировать контакт как выход
pinMode (AIN_PIN, INPUT); // сконфигурировать контакт как вход
}
void loop()
{
int val = analogRead ( AIN_PIN );
int inSignal = map (val,0,1023,0,255);
analogWrite (PWM_PIN,VAF[inSignal]);
float in_volt = (inSignal*0.01953125);
float out_volt = (VAF[inSignal]*0.01953125);
lcd.setCursor (7,1);
lcd.print (in_volt);
lcd.setCursor (11,1);
lcd.print (out_volt);
}
[/code]
и еще как замедлить обновление дисплея но не трогая программу по работе с массивом
lcd.print (out_volt, 2);
так я пробовал не помогает почемуто
А - lcd.println (out_volt, 2); ?
А - lcd.println (out_volt, 2); ?
А ln здесь при чем? Куда строку переводить?
Попробуйте библиотеку заменить, у меня работает без проблем.
Попробуйте библиотеку заменить, у меня работает без проблем.
а какую библиотеку использовать
Та найдите любую другую и попробуйте. Может какая левая попалась.
вроде оригинальную использую .
вечером поищу
А - lcd.println (out_volt, 2); ?
А ln здесь при чем? Куда строку переводить?
не переводить а проверить коды перевода строк отображает...
У меня код работает, правда для проверки чуток правил
//#include <LiquidCrystal.h> #include "Wire.h" #include <LiquidCrystal_I2C.h> //LiquidCrystal lcd(4, 5, 10, 11, 12, 13); LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); const int PWM_PIN = 13; // выход расходомер const int AIN_PIN = A0; // вход расходомер int val = 73; // переменная для хранения сигнала входящего расходомера byte VAF[256] //таблица выход { 205,202,198,195,192,189,185,182,179,176, 172,169,167,165,164,162,160,158,157,155, 153,151,150,148,146,145,144,142,141,140, 138,136,134,133,132,130,129,128,126,125, 123,122,121,120,119,118,117,116,115,114, 113,112,111,110,109,108,107,106,105,104, 103,102,101,100,99,98,96,95,94,93, 92,91,90,89,88,87,86,85,84,83, 82,81,80,79,78,77,76,75,74,73, 72,71,70,70,69,69,68,67,67,66, 66,65,65,64,63,63,62,62,61,60, 60,59,58,58,57,57,56,56,55,54, 54,53,52,52,51,51,50,49,49,48, 48,47,46,46,45,44,44,43,43,42, 41,41,40,40,40,39,39,39,38,38, 38,37,37,37,36,36,36,35,35,34, 34,34,33,33,33,32,32,32,31,31, 30,30,30,30,30,30,29,29,29,28, 28,28,27,27,26,26,26,25,25,25, 24,24,24,23,23,23,22,22,21,21, 21,20,20,20,19,19,19,18,18,18, 17,17,16,16,16,15,15,15,14,14, 14,14,14,14,13,13,13,12,12,12, 11,11,11,10,10,9,9,8,8,7, 7,6,6,5,5,4,4,3,3,2, 2,1,1,1,0,0 }; void setup() { lcd.begin(16, 2); //lcd.print("\x50\A\C\X\O\xE0\ \B\O\xA4\xE0\xA9\X\A"); lcd.print("RASHOD VOZDUHA"); lcd.setCursor(0, 1); //lcd.print("\B\o\xBB\xC4\x89\ \xDA\ \xD9\ "); TCCR2B = TCCR2B & 0b11111000 | 0x02; pinMode (PWM_PIN, OUTPUT); // сконфигурировать контакт как выход pinMode (AIN_PIN, INPUT); // сконфигурировать контакт как вход } void loop() { int val = val + analogRead ( AIN_PIN ); int inSignal = map (val,0,1023,0,255); analogWrite (PWM_PIN,VAF[inSignal]); float in_volt = (inSignal*0.01953125); float out_volt = (VAF[inSignal]*0.01953125); lcd.setCursor (1,1); lcd.print(in_volt,2); lcd.setCursor (8,1); lcd.print (out_volt,2); delay(2000); }не переводить а проверить коды перевода строк отображает...
У меня код работает, правда для проверки чуток правил
Возможно. У меня все I2C, с библиотекой ТС не проверить. В корректной библиотеке работать обязано.
а может от дисплея зависит ?
у меня амтел 1602
самое главное я сейчас для себя заметил что не все прочитал по документации наверное надо сначало изучить там все
я только учусь
спасибо что помогаете
и подскажите что такое ТС очень часто встречается
ТС = topicStarter
все понятно)
надо идти домашние дела делать вечером буду дальше разбираться
и с наступающим
ДОБРОГО ВРЕМЕНИ вот что у меня получилось
[code] #include <LiquidCrystal.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 13); const int PWM_PIN = 3; // выход расходомер const int AIN_PIN = A0; // вход расходомер int val = 0; // переменная для хранения сигнала входящего расходомера byte VAF[256] //таблица выход { 205,202,198,195,192,189,185,182,179,176, 172,169,167,165,164,162,160,158,157,155, 153,151,150,148,146,145,144,142,141,140, 138,136,134,133,132,130,129,128,126,125, 123,122,121,120,119,118,117,116,115,114, 113,112,111,110,109,108,107,106,105,104, 103,102,101,100,99,98,96,95,94,93, 92,91,90,89,88,87,86,85,84,83, 82,81,80,79,78,77,76,75,74,73, 72,71,70,70,69,69,68,67,67,66, 66,65,65,64,63,63,62,62,61,60, 60,59,58,58,57,57,56,56,55,54, 54,53,52,52,51,51,50,49,49,48, 48,47,46,46,45,44,44,43,43,42, 41,41,40,40,40,39,39,39,38,38, 38,37,37,37,36,36,36,35,35,34, 34,34,33,33,33,32,32,32,31,31, 30,30,30,30,30,30,29,29,29,28, 28,28,27,27,26,26,26,25,25,25, 24,24,24,23,23,23,22,22,21,21, 21,20,20,20,19,19,19,18,18,18, 17,17,16,16,16,15,15,15,14,14, 14,14,14,14,13,13,13,12,12,12, 11,11,11,10,10,9,9,8,8,7, 7,6,6,5,5,4,4,3,3,2, 2,1,1,1,0,0 }; void setup() { lcd.begin(16, 2); lcd.print("\x50\A\C\X\O\xE0\ \B\O\xA4\xE0\xA9\X\A"); TCCR2B = TCCR2B & 0b11111000 | 0x02; pinMode (PWM_PIN, OUTPUT); // сконфигурировать контакт как выход pinMode (AIN_PIN, INPUT); // сконфигурировать контакт как вход } void loop() { int val = analogRead ( AIN_PIN ); int inSignal = map (val,0,1023,0,255); analogWrite (PWM_PIN,VAF[inSignal]); { float vvolt = (inSignal*0.01953125); float ivolt = (VAF[inSignal]*0.01953125); lcd.setCursor(0, 1); lcd.print("\B\o\xBB\xC4\x89\xDA\ \xD9\ "); lcd.setCursor (6,1); lcd.print (vvolt); lcd.setCursor (11,1); lcd.print (ivolt); } } [/code]но есть еще вопрос как сделать задержку для вывода инфо на дисплей но чтоб не тормазила программа с входящим и выходящим сигналом
почемуто слова на дисплей выводятся нормально а цифры постоянно мерцают