набор текста и ввод на дисплей 5110 с помощью ардуино нано
- Войдите на сайт для отправки комментариев
Втр, 06/10/2015 - 23:22
привет всем
нужна помощь
не получается ввести текстовой набор с новой строки
образец как нужно
plug 1:0n
plug:2 0ff
вытирание предедущего текста
timer 1:on
timer 2:on
и т.д.
пробовал зделать с помощью lcdstring(" ");
плохо получается
Какую библиотеку используете?
pcd8544.h
pcd8544.h
Хорошая компактная библиотека.
надеюсь поможет
так как решить проблему
чтобы строка была одна ниже другой
так как решить проблему
чтобы строка была одна ниже другой
дисплей ничего не показывает
только при команде lcdsring работает но пишет строка за строкой
образец
plug 1:0n plu
g 2:off
tim
er 1:off
timer 2 :on
выписка из программы:
display.setcursor(0,0);
lcdstring('plug 1:off");
display.setcursor(0.2);
lcdstring('plug 2:off");
zenek прикрепите весь скетч.
Z
#include
#include
#include
#include
int sec1,sec2,ssec;
int timer_relay1,timer_relay2;
int outcount = 9; // the number of the LED pin
char incomingByte;
int LED1 = 8;//pin 8
int LED2 = 11;//pin 11
int LED3 = 13;//pin 13
int LED4 = 14;//led timer 1 a0
int LED5 = 15;//led timer 2 a1
int RECV_PIN =10;//pin 10 data of remote
int index;//print on lcd
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
IRrecv irrecv(RECV_PIN);
decode_results results;
#define PIN_SCE 7
#define PIN_RESET 6
#define PIN_DC 5
#define PIN_SDIN 4
#define PIN_SCLK 3
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
static const byte ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ?
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ?
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ?
};
void LcdCharacter(char character)
{
LcdWrite(LCD_D, 0x00);
for (int index = 0; index < 5; index++)
{
LcdWrite(LCD_D, ASCII[character - 0x20][index]);
}
LcdWrite(LCD_D, 0x00);
}
void LcdClear(void)
{
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
{
LcdWrite(LCD_D, 0x00);
}
}
void LcdInitialise(void)
{
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_RESET, HIGH);
LcdWrite(LCD_C, 0x21 ); // LCD Extended Commands.
LcdWrite(LCD_C, 0xB1 ); // Set LCD Vop (Contrast).
LcdWrite(LCD_C, 0x04 ); // Set Temp coefficent. //0x04
LcdWrite(LCD_C, 0x14 ); // LCD bias mode 1:48. //0x13
LcdWrite(LCD_C, 0x20 ); // LCD Basic Commands
LcdWrite(LCD_C, 0x0C ); // LCD in normal mode.
}
void LcdString(char *characters)
{
while (*characters)
{
LcdCharacter(*characters++);
}
}
void LcdWrite(byte dc, byte data)
{
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
void setup_lcd(void)
{
LcdInitialise();
LcdClear();
}
void setup()
{
LcdInitialise();
LcdClear();
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(outcount, OUTPUT);
attachInterrupt(0,timer1,FALLING);
//Serial.println("Press 1 to SHEKA 1 IS ON or 2 to SHEKA 2 IS ON...");
digitalWrite(LED2, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
digitalWrite(LED3, LOW); // LED 3 ON KAVUA
analogWrite(outcount,127);//50% duty cycle output
display.setCursor(0,0);
LcdString("PLUG 1:OFF ");
display.setCursor(0,5);
LcdString("PLUG 2:OFF");
}
void timer1()
{
ssec++;
if (ssec>490)
{
ssec=0; sec1++; sec2++;
}
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
if(results.value==0x7A5449FD )//SHEKA1 on CLICK(1)
{
LcdClear();
display.clearDisplay();
digitalWrite(LED1, LOW);
digitalWrite(LED3,HIGH);
display.setCursor(0,0);
LcdString("PLUG 1:ON");
}
if(results.value==0xA32AAB75 )//SHEKA 1 Off CLICK(4)
{
LcdClear();
display.clearDisplay();
digitalWrite(LED1, HIGH);
digitalWrite(LED3,LOW);
LcdString("PLUG 1:OFF");
}
if(results.value==0xAF997319 )//SHEKA 2 on CLICK(2)
{
LcdClear();
display.clearDisplay();
digitalWrite(LED2,LOW);
digitalWrite(LED3,HIGH);
LcdString("PLUG 2:ON");
}
if(results.value==0xB93D81EB )//SHEKA 2 0ff CLICK(5)
{ LcdClear();
display.clearDisplay();
digitalWrite(LED2, HIGH);
digitalWrite(LED3,LOW);
LcdString("PLUG 2:OFF");
}
if(results.value==0x3FDFC741 )//LHZAN 3,ALL IS ON CLICK(3)
{ LcdClear();
display.clearDisplay();
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,HIGH);
LcdString("PLUG 1:ON");
LcdString("PLUG 2:ON");
}
if(results.value==0x5562777D)//LHZAN 6 OFF,ALL IS OFF CLICK(6)
{
LcdClear();
display.clearDisplay();
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3, LOW);
LcdString("PLUG 1:OFF ");
LcdString("PLUG 2:OFF");
}
if(results.value==0x19A79CFA)//afalat timer1
{ LcdClear();
display.clearDisplay();
timer_relay1 = 0xff; sec1=0;
digitalWrite(LED3, HIGH);
digitalWrite(LED4,LOW);
digitalWrite(LED1, LOW);
LcdString("TIMER 1 IS ON TO 1 MINUTE");
}
if(results.value==0x363F2CD1)//afalat timer2
{
LcdClear();
timer_relay2 = 0xff; sec2=0;
digitalWrite(LED3, HIGH);
digitalWrite(LED5,LOW);
digitalWrite(LED2, LOW);
LcdString("TIMER 2 IS ON TO 2 MINUTES");
}
irrecv.resume(); // Receive the next v); // alue
}
off_relay();
delay(100);
}
void off_relay()
{
if (timer_relay1==0xff)
{
if (sec1>=60){// 1 minutes for timer 1
digitalWrite(LED3,LOW);
digitalWrite(LED4,HIGH);
digitalWrite(LED1,HIGH);
timer_relay1=0;
LcdClear();
LcdString("TIMER 1:IS OFF");
}
}
if (timer_relay2==0xff)
{
if (sec2>=120){// 2 minutes for timer 2
digitalWrite(LED3,LOW);
digitalWrite(LED5,HIGH);
digitalWrite(LED2,HIGH);
timer_relay2=0;
LcdClear();
LcdString("TIMER 2:IS OFF");
}
}
}
библиотека
#include<spi.h>
#include<adafruit_gfx.h>
#include<adafruit_pcd8544.h>
#include<irremote.>
резетки управляемые пультом телевизора с таймером и дисплеем 5110 показывающим работу резеток
спасибо но не выводит на дисплей вообще
только через команду lcdsting работает
счас посмотрю.
конечно не работает
Вы мне не ту библиотеку сказали.
Попробуйте так.
Насколько помню, параметры в setCursor в пикселях, а нужно в знакоместах, то есть менять на высоту или ширину шрифта.
Насколько помню, параметры в setCursor в пикселях, а нужно в знакоместах, то есть менять на высоту или ширину шрифта.
Если вам нужно это использовать, вы проверите на своих значениях и поменяв несколько раз параметры в setCursor сразу все поймете.
А если вам это не нужно, то жачем этот ваш пост?
При шрифте 6x8 переход на вторую строку lcd.setCursor(0, 8) итд.
Для затирания предыдущей надписи lcd.setTextColor(1,0) в сетапе.
Думаю ТС-у это и нужно, когда мне было нужно я и разбирался в свое время )
спасибо все сделал с помощью lcdinitialise();функция отвечает за набор строки сначала
cursor не понадобился
спасибо