просьба помощи
- Войдите на сайт для отправки комментариев
Сб, 10/07/2021 - 12:18
Ребят не подскажете, что не так? При выводе информации на дисплей, только функция (float) выводит 3 символа. остальные только первый!(((
Вот код программы!:
*************
Всё не так.
1. Код вставлен неправильно, смотреть его никто не будет. Читай правила
#include <LiquidCrystal_I2C.h> int analogPin = 0; int chargePin = 13; int dischargePin = 11; //speeds up discharging process, not necessary though int Value = 0; int resistorValue = 9900; unsigned long startTime; unsigned long elapsedTime; float microFarads; float nanoFarads; float Value_volt = 0; LiquidCrystal_I2C lcd(0x3F, 20, 4); void setup() { lcd.begin(); lcd.backlight(); pinMode(chargePin, OUTPUT); digitalWrite(chargePin, LOW); Serial.begin(9600); // Necessary to print data to serial monitor over USB } void loop() { { delay(9600); } digitalWrite(chargePin, HIGH); // Begins charging the capacitor startTime = millis(); // Begins the timer while (analogRead(analogPin) < 648) { } elapsedTime = millis() - startTime; // Determines how much time it took to charge capacitor microFarads = ((float)elapsedTime / resistorValue)*1000; Serial.print(elapsedTime); Serial.print(" mS "); if (microFarads > 1) // Determines if units should be micro or nano and prints accordingly { Serial.print((float)microFarads); Serial.println(" microFarads"); } else { nanoFarads = microFarads * 1000.0; Serial.print((float)nanoFarads); Serial.println(" nanoFarads"); delay(500); } digitalWrite(chargePin, LOW); // Stops charging capacitor pinMode(dischargePin, OUTPUT); digitalWrite(dischargePin, LOW); // Allows capacitor to discharge while (analogRead(analogPin) > 0) { } pinMode(dischargePin, INPUT); // Prevents capacitor from discharging lcd.clear(); lcd.setCursor(0,0); lcd.print("m"); lcd.setCursor(1,0); lcd.print("F"); lcd.setCursor(3,0); lcd.print("="); lcd.setCursor(7, 1); lcd.print((float)microFarads); }Теперь подробно.
Про какие "три символа" речь ?
12 строчку я уже удалил за ненадобностью!
Ясно.... Понятно....
В общем, я мерю емкость конденсатора! В мониторе порта все правильно показывает! Но при выводе информации на дисплей I2C 2004 A высвечивается только первый символ из многозначного числа, пробовал менять вес переменной. с функцией float выводит полученное значение но через запятую и только 3 первых знака из многозначного числа! Я просто уже не понимаю как вывести число на дисплей полностью!
конденсатор 470 мFr он покажет как 4,70 с весом переменной float. Пробовал менять вес переменной показывает только цифру 4.
Из описания Serial.print - по умолчанию выводятся два знака после запятой
В программе через USB порт все отлично показывает! у меня проблема с выводом на I2C 2004A!
lcd.clear(); lcd.setCursor(0,0); lcd.print("m"); lcd.setCursor(1,0); lcd.print("F"); lcd.setCursor(3,0); lcd.print("="); lcd.setCursor(7, 1); lcd.print((float)microFarads);Мошт библиотека ликвидкристалл кривой версии?
Ну а что он должен выводить по твоему ?
И чего ты хочешь добиться ?
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 20, 4); void setup() { // initialize the lcd for 20chars 4 lines, turn on backlight lcd.begin(20,4); float microFarads = 24.4587; lcd.setCursor(0,0); lcd.print("m"); lcd.setCursor(1,0); lcd.print("F"); lcd.setCursor(3,0); lcd.print("="); lcd.setCursor(7, 1); lcd.print((float)microFarads,3); } void loop() { // put your main code here, to run repeatedly: }Данный код выводит 24,458
Можете на этом примере пояснить -В чем проблема у вас.
На мониторе порта в программе ардуино выводит 24,4587 , а на дисплей 2004А I2C выводит только цифру 4. То есть первую до запятой цифру! я пробовал менять тип переменной: тип переменной Float выводит на дисплей 4,4587.
На мониторе порта в программе ардуино выводит 24,4587
Вы запускали код из #15
Не может он такого выводить. Он выводит только три знака после запятой, а не четыре. Вы в чём-то запутались и нас путаете.
Azat_Satdarov, посмотрите тему:
http://arduino.ru/forum/apparatnye-voprosy/problemy-s-lcd-ekranom-16x2-i2c
там обсуждалась проблема похожая на Вашу.
Спасибо, я уже вышел из положения!))
lcd.setCursor(0,0); lcd.print("m"); lcd.setCursor(1,0); lcd.print("F"); lcd.setCursor(2, 0); lcd.print((float )microFarads,5); lcd.setCursor(2,0); lcd.print("_"); lcd.setCursor(3,0); lcd.print("_");вот таким вот способом!