0

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

вот мой код для датчика давления пока

int fsrAnalogPin = 0; // FSR is connected to analog 0
int fsrReading;      // the analog reading from the FSR resistor divider

void setup(void) {
  Serial.begin(9600);  
}

void loop(void) {
  fsrReading = analogRead(fsrAnalogPin);
  Serial.print("Analog reading = ");
  Serial.println(fsrReading);
  delay(100);
}

Хорошо, поэтому я улучшил свой код и, наконец, получил его, этот код отображает силу, обнаруженную fsr, на гистограмме

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

byte lcdNumCols = 20; // -- number of columns in the LCD

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);   // -- creating LCD instance

int fsrAnalogPin = 0; // FSR is connected to A0

// -- creating a 4 chars wide bars
LcdBarGraphX lbg0(&lcd, 16, 0, 0); // -- First line at column 0 and row 0 with 16 columns

void setup(void) {
  Serial.begin(9600);   // We'll send debugging information via the Serial monitor
  lcd.begin(4, lcdNumCols); // start lcd with 2 rows and 16 columns
  lcd.clear();
  delay(100);
}

void loop(void) {
  lbg0.drawValue( analogRead(fsrAnalogPin), 9); // the 9  is the maximum range you want for pressure
  Serial.print("Analog reading = ");
  Serial.println(fsrReading);
  delay(100);
}
Share a link to this question
CC BY-SA 4.0
| улучшить этот вопрос | |
  • ваш вопрос не имеет ничего общего с датчиком силы ... это вопрос о рисовании гистограмм на ЖК-дисплее ... вам действительно следует отредактировать свой вопрос и заголовок так, чтобы он отражал фактический вопрос ... таким образом , люди найдут ваш вопрос, если они изучают график на ЖК-дисплееjsotola 13 окт.
1

Есть два способа сделать это: простой и необычный .

Легкий путь действительно прост. Поскольку на дисплее могут отображаться только символы, вы просто отображаете символы - этого достаточно для представления гистограммы.

Если у вас есть дисплей с «Rom Code A00» *, то символ 255 представляет собой сплошной блок (▇), поэтому вы просто печатаете от 0 до 16 из них подряд. 0 - 0%, 16 - 100%. (Если у вас есть ROM-код A02, вы можете просто использовать #или создать собственный персонаж - см. Ниже).

Force:▒▒▒▒▒▒▒▒▒▒
▇▇▇▇▇▇▇▇▇▒▒▒▒▒▒▒

Или с #:

Force:▒▒▒▒▒▒▒▒▒▒
#########▒▒▒▒▒▒▒

Изящный способ - использовать средство программирования символов. Вы должны создать 4 новых персонажа, которые частично заполняют блок. Каждый символ имеет ширину 5 пикселей, поэтому создание символа с набором 1 столбца пикселей (▏), с двумя наборами (▍), тремя наборами () и 4 наборами (▋) (у вас уже есть все 5 наборов в символе 255, если у вас есть ROM Code A00 - в противном случае укажите 5-й со всеми 5 столбцами). Теперь можно проявить смекалку и заняться:

  1. Сколько полных символов печатать, и
  2. Какой из лишних символов печатать в конце.

Это дает вам фактически 16 * 5 (80) пикселей по горизонтали (хотя и с небольшим промежутком между каждым набором из 5 пикселей).

Как именно вы будете делать, какой из этих методов вы выберете, теперь зависит от вас.


*: ROM Code A00 - это символьный ROM с японскими символами в символах 128-255. Код ПЗУ A02 содержит символы с европейским акцентом.

Share a link to this answer