Проблема с дисплеем 1602
- Войдите на сайт для отправки комментариев
Чт, 07/02/2019 - 19:15
Написал программу часов на ардуино, в качестве экрана использовал жк дисплей 1602 с шиной подключения i2c, при вращении потонциометра режим "часы" должен меняться на картинку. но видимо от большего кол-ва созданых символов у дисплея возникают какие то проблеммы.Картинка представляет из себя два больших пальца вверх по краям, смайлик в центре и надпись"ALL GOOD". Правильность кода я проверял неоднократно символы должны вставать в картинку, но в итоге я получаю надпись "ALL GOOD" и разбросаные по всему экрану неупорядоченные символы. Объясните, пожалуйста, в чем проблема, заранее большое спасибо.
Вот код:
#include <Time.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
///////////////
byte p20[8] = {
B00100,
B00100,
B00100,
B00100,
B00100,
B00100,
B00100,
B00100,
};
/////////////////
////ALL GOOD////
byte c1[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00110,
B00110,
};
byte c2[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B01100,
B01100,
};
byte c3[8] = {
B00000,
B00000,
B10000,
B11000,
B01100,
B00111,
B00011,
B00000,
};
byte c4[8] = {
B00000,
B00000,
B00001,
B00011,
B00110,
B11100,
B11000,
B00000,
};
//****рука****//
byte r1[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B11111,
B00000,
};
byte r2[8] = {
B00000,
B00100,
B01010,
B01010,
B01010,
B01010,
B10011,
B00000,
};
byte r3[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B11100,
B00010,
};
byte r4[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00111,
B01000,
};
byte r5[8] = {
B00000,
B00100,
B01010,
B01010,
B01010,
B01010,
B11001,
B00000,
};
byte r6[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B11111,
};
byte r7[8] = {
B00000,
B00001,
B00000,
B00000,
B00001,
B00000,
B00000,
B11111,
};
byte r8[8] = {
B00010,
B11100,
B00010,
B00010,
B11100,
B00010,
B00010,
B11100,
};
byte r9[8] = {
B01000,
B00111,
B01000,
B01000,
B00111,
B01000,
B01000,
B00111,
};
byte r10[8] = {
B00000,
B10000,
B00000,
B00000,
B10000,
B00000,
B00000,
B11111,
};
//***********//
///////////////
void setup(){
lcd.init();
lcd.backlight();
setTime(17,3,0,7,2,2019);
lcd.createChar(0, p20);
lcd.createChar(1, c1);
lcd.createChar(2, c2);
lcd.createChar(3, c3);
lcd.createChar(4, c4);
lcd.createChar(5, r1);
lcd.createChar(6, r2);
lcd.createChar(7, r3);
lcd.createChar(8, r4);
lcd.createChar(9, r5);
lcd.createChar(10, r6);
lcd.createChar(11, r7);
lcd.createChar(12, r8);
lcd.createChar(13, r9);
lcd.createChar(14, r10);
}
void loop(){
int p =analogRead(A0);
lcd.clear();
if (p>=1000)
{
//////ALL GOOD///////////
lcd.setCursor(0,0);
lcd.write(5);
lcd.setCursor(1,0);
lcd.write(6);
lcd.setCursor(2,0);
lcd.write(7);
lcd.setCursor(3,0);
lcd.print("ALL ");
lcd.setCursor(7,0);
lcd.write(1);
lcd.setCursor(8,0);
lcd.write(2);
lcd.setCursor(9,0);
lcd.print("GOOD");
lcd.setCursor(13,0);
lcd.write(8);
lcd.setCursor(14,0);
lcd.write(9);
lcd.setCursor(15,0);
lcd.write(5);
lcd.setCursor(0,1);
lcd.write(10);
lcd.setCursor(1,1);
lcd.write(11);
lcd.setCursor(2,1);
lcd.write(12);
lcd.setCursor(7,1);
lcd.write(3);
lcd.setCursor(8,1);
lcd.write(4);
lcd.setCursor(13,1);
lcd.write(13);
lcd.setCursor(14,1);
lcd.write(14);
lcd.setCursor(15,1);
lcd.write(10);
delay(1000);
/////////////////////////
}
else {
/////////ЧАСЫ///////////
lcd.clear();
lcd.setCursor(3,0);
lcd.write(0);
lcd.setCursor(4,0);
lcd.print( day() );
lcd.print( "." );
lcd.print( month() );
lcd.print( "." );
lcd.print( year() );
lcd.setCursor(12,0);
lcd.write(0);
lcd.setCursor(4,1);
lcd.write(0);
lcd.setCursor(5, 1);
lcd.print( hour() );
lcd.print( ":" );
lcd.print( minute() );
lcd.setCursor(10,1);
lcd.write(0);
delay(1000);
//////////////////////////
}
}
Ошибка в строке #ХЗ.
недоGeek,
топайте в тему "ПЕСОЧНИЦА. ДЛЯ ВСЕХ НОВИЧКОВ", и не вылазьте из неё пока не научитесь правильно постить свои вопросы.
А я подмогну и перемещу.
То ТС, а вас не смущает, что одновременно может быть создано только восемь символов?