Распечатка выходных данных датчика мутности с Arduino UNO - PullRequest
0 голосов
/ 27 сентября 2019

Я читаю выходное напряжение датчика мутности: https://www.dfrobot.com/product-1394.html?tracking=5b603d54411d5 с Arduino UNO.Я хочу напечатать значение напряжения вольт и его NTU (единицы измерения мутности) на ЖК-экране ADM1602U Sparkfun.

Кажется, я не могу правильно распечатать данные на ЖК-дисплее, он открывается и горит (поэтому я думаю, что проводка в порядке), но данные не отображаются.

Вот код, который я использую:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int sensorPin = A0;
int val = 0;
float volt;
float ntu;

void setup()
{
  Serial.begin(9600);
  lcd.init();

  // Turn on the blacklight and print a message.
  lcd.backlight();
}

void loop()
{  
  volt = ((float)analogRead(sensorPin)/1023)*5;
  ntu = -1120.4*square(volt)+5742.3*volt-4353.8; 
  val = analogRead(volt);
  Serial.println(volt); 

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(volt);
  lcd.print(" V");

  lcd.setCursor(0,1);
  lcd.print(ntu);
  lcd.print(" NTU");
  delay(10);
}

float round_to_dp( float in_value, int decimal_place )
{
  float multiplier = powf( 10.0f, decimal_place );
  in_value = roundf( in_value * multiplier ) / multiplier;
  return in_value;
}

Я использовал аналог чтения только для того, чтобы проверить, правильно ли я получаю правильные значения напряжения для датчика, и да.

Спасибо

1 Ответ

0 голосов
/ 30 сентября 2019

Хорошо, поэтому я нашел ответ, используемая библиотека не подходит для печати на ЖК-дисплее 16x2.К вашему сведению работал следующий код:

#include <Wire.h> 
#include <SoftwareSerial.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
SoftwareSerial LCD(10, 11); // Arduino SS_RX = pin 10 (unused), Arduino SS_TX = pin 11 
int sensorPin = A0;
float volt;
float ntu;

void setup()
{
  Serial.begin(9600);
  LCD.begin(9600); // set up serial port for 9600 baud
  delay(500); // wait for display to boot 
}

void loop()
{  

  volt = ((float)analogRead(sensorPin)/1023)*5;
  ntu = -1120.4*square(volt)+5742.3*volt-4352.9; 
  Serial.println(volt); 

  // move cursor to beginning of first line
  LCD.write(254); 
  LCD.write(128);

  // clear display by sending spaces
  LCD.write("                "); 
  LCD.write("                ");

 // move cursor to beginning of first line
  LCD.write(254); 
  LCD.write(128);

  LCD.print(volt);
  LCD.write(" V");

  LCD.write(254);
  LCD.write(192);

  LCD.print(ntu);
  LCD.write(" NTU");
  delay(1000);

}
...