Проблемы с дисплеями 128х64
- Войдите на сайт для отправки комментариев
Втр, 22/12/2015 - 15:00
Ребята!
Подскажите, в чем может быть проблема. Имеется два дисплея, синий 12864В V2.0 и зеленый 12864ZW.
Подключаю их поочередно к ардуине мини. Залил простой скетч, с датчиком давления ВМР180, и на обоих дисплеях, периодический, вижу кривые цифры переменных. Пробовал менять библиотеки, шрифты, бесполезно. Подключал и по последовательному, и паралельному, все также. Может кто-то сталкивался с такой проблемой?
Что-то фото всавить не могу.
#include <U8glib.h>
#include <Wire.h>
#include <BMP085.h>
U8GLIB_ST7920_128X64 u8g(10, 11, 12, U8G_PIN_NONE);
// Инициализируем объект-экран, определяем пины для работы с экраном
BMP085 dps = BMP085();
long Temperature085 = 0, Pressure085 = 0, Altitude085 = 0;
void setup()
{
dps.init();
}
void loop (){
u8g.firstPage();
do
{
dps.getTemperature(&Temperature085);
dps.getPressure (&Pressure085);
u8g.setFont(u8g_font_fub17);
u8g.setPrintPos(4, 20);
u8g.print("mm:");
u8g.print(Pressure085/133.3);
u8g.setFont(u8g_font_fub14);
u8g.setPrintPos(4, 40);
u8g.print("t=");
u8g.print(Temperature085*0.1);
delay(1000);
}
while(u8g.nextPage());
}
Мне кажется нужно дробные цифры предварительно преобразовать в строку или хотябы приведение типов данных использовать.
Дело в том что язык С не определяет автоматически тип данных. В строках 23 и 27 у вас ерунда полнейшая.
А можно поподробней, что в них не правильно? С дисплеем 1602 это все работает. А тут при обновлении может показать правильно, а может показать половина 4 ки, и половина 5 ки, или вллбще не понятно что.
Я использую аппаратный SPI и увеличенный буффер для увеличения скорости
Спасибо большое за подсказку!
Заработала!
Всего лишь поменял 1 на 4. Я пробовал с еденицей, не работало.
U8GLIB_ST7920_128X64_1X u8g(10,11,12, U8G_PIN_NONE);
U8GLIB_ST7920_128X64_4X u8g(10,11,12, U8G_PIN_NONE);
Ребята!
Помогите, кто в курсе, с проблемой. Заливаю простой скетч тахометра, с дисплеем 1602, и датчиком холла, все работает. Меняю дисплей, на 12864, не получается. Что-то с прерыванием. Хотя смена дисплея с барометром, все получилось. Подскажите, где ошибка в скетче?
#define RPMpin 2 // датчик Холла #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,6,5,4,3); long microsold = 0; int rpm = 0; void setup() { lcd.begin(16, 2); lcd.print("initializing"); delay(1000); lcd.clear(); digitalWrite(RPMpin, 2); attachInterrupt(0, RPM, FALLING); } void loop() { delay(100); lcd.clear(); lcd.setCursor(0, 0); lcd.print(rpm,DEC); delay (1000); } void RPM () { rpm = (1000000.0/(micros() - microsold))*60; microsold = micros(); }Работает
#define RPMpin 2 // датчик Холла //#include <LiquidCrystal.h> //LiquidCrystal lcd(12,11,6,5,4,3); #include "U8glib.h" U8GLIB_ST7920_128X64 u8g(10, 11, 12, U8G_PIN_NONE); long microsold = 0; int rpm = 0; void setup() { //lcd.begin(16, 2); //lcd.print("initializing"); //delay(1000); //lcd.clear(); digitalWrite(RPMpin, 2); attachInterrupt(0, RPM, FALLING); } void loop() { u8g.firstPage(); do { delay(100); //lcd.clear(); //lcd.setCursor(0, 0); u8g.setFont(u8g_font_7x13); u8g.setPrintPos(2, 22); u8g.print(rpm,DEC); delay (1000); } void RPM () { rpm = (1000000.0/(micros() - microsold))*60; microsold = micros(); } while(u8g.nextPage()); }Не работает