motor dc driver with lcd nextion nx8048t050_011
Dependencies: mbed QEI_hw NVIC_set_all_priorities SoftPWM
NextionLCD.cpp@2:e72b06f87c8b, 2020-07-09 (annotated)
- Committer:
- exarkun
- Date:
- Thu Jul 09 08:30:19 2020 +0000
- Revision:
- 2:e72b06f87c8b
- Parent:
- 1:2fe82be93e80
driver motor with lcd control nextion nx8048t050
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
exarkun | 1:2fe82be93e80 | 1 | #include "NextionLCD.h" |
exarkun | 1:2fe82be93e80 | 2 | #include "mbed.h" |
exarkun | 1:2fe82be93e80 | 3 | |
exarkun | 1:2fe82be93e80 | 4 | |
exarkun | 1:2fe82be93e80 | 5 | /* ***************************************** Public Functions ***************************************** */ |
exarkun | 1:2fe82be93e80 | 6 | |
exarkun | 1:2fe82be93e80 | 7 | NextionLCD::NextionLCD(PinName Tx, PinName Rx) : lcd(Tx, Rx) { |
exarkun | 1:2fe82be93e80 | 8 | lcd.baud(9600); |
exarkun | 1:2fe82be93e80 | 9 | mTouch=false; |
exarkun | 1:2fe82be93e80 | 10 | mRxIdx=0; |
exarkun | 1:2fe82be93e80 | 11 | lcd.printf("rest%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 12 | lcd.printf("rest%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 13 | wait(1.0); |
exarkun | 1:2fe82be93e80 | 14 | lcd.printf("sendxy=1%c%c%c", 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 15 | lcd.attach(this,&NextionLCD::RxInterrupt,Serial::RxIrq); |
exarkun | 1:2fe82be93e80 | 16 | } |
exarkun | 1:2fe82be93e80 | 17 | |
exarkun | 1:2fe82be93e80 | 18 | void NextionLCD::ClrScr(uint16_t color) { |
exarkun | 1:2fe82be93e80 | 19 | lcd.printf("cls %d%c%c%c", color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 20 | } |
exarkun | 1:2fe82be93e80 | 21 | |
exarkun | 1:2fe82be93e80 | 22 | void NextionLCD::DrawString(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint8_t font, uint16_t fontcolor, uint16_t backcolor, uint8_t xcenter, uint8_t ycenter, char *str) { |
exarkun | 1:2fe82be93e80 | 23 | lcd.printf("xstr %d,%d,%d,%d,%d,%d,%d,%d,%d,1,\"%s\"%c%c%c", x, y, w, h, font, fontcolor, backcolor, xcenter, ycenter, str,0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 24 | } |
exarkun | 1:2fe82be93e80 | 25 | |
exarkun | 1:2fe82be93e80 | 26 | void NextionLCD::DrawPixel(uint16_t x, uint16_t y, uint16_t color) { |
exarkun | 1:2fe82be93e80 | 27 | lcd.printf("fill %d,%d,1,1,%d%c%c%c", x, y, color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 28 | } |
exarkun | 1:2fe82be93e80 | 29 | |
exarkun | 1:2fe82be93e80 | 30 | void NextionLCD::DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color) { |
exarkun | 1:2fe82be93e80 | 31 | lcd.printf("line %d,%d,%d,%d,%d%c%c%c", x1, y1, x2, y2, color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 32 | } |
exarkun | 1:2fe82be93e80 | 33 | |
exarkun | 1:2fe82be93e80 | 34 | void NextionLCD::DrawRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) { |
exarkun | 1:2fe82be93e80 | 35 | lcd.printf("draw %d,%d,%d,%d,%d%c%c%c", x, y, x+w, y+h, color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 36 | } |
exarkun | 1:2fe82be93e80 | 37 | |
exarkun | 1:2fe82be93e80 | 38 | void NextionLCD::FillRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) { |
exarkun | 1:2fe82be93e80 | 39 | lcd.printf("fill %d,%d,%d,%d,%d%c%c%c", x, y, w, h, color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 40 | } |
exarkun | 1:2fe82be93e80 | 41 | |
exarkun | 1:2fe82be93e80 | 42 | void NextionLCD::DrawCircle(uint16_t x, uint16_t y, uint16_t r, uint16_t color) { |
exarkun | 1:2fe82be93e80 | 43 | lcd.printf("cir %d,%d,%d,%d%c%c%c", x, y, r, color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 44 | } |
exarkun | 1:2fe82be93e80 | 45 | |
exarkun | 1:2fe82be93e80 | 46 | void NextionLCD::FillCircle(uint16_t x, uint16_t y, uint16_t r, uint16_t color) { |
exarkun | 1:2fe82be93e80 | 47 | lcd.printf("cirs %d,%d,%d,%d%c%c%c", x, y, r, color, 0xff, 0xff, 0xff); |
exarkun | 1:2fe82be93e80 | 48 | } |
exarkun | 1:2fe82be93e80 | 49 | |
exarkun | 1:2fe82be93e80 | 50 | bool NextionLCD::Touch(void) { |
exarkun | 1:2fe82be93e80 | 51 | return mTouch; |
exarkun | 1:2fe82be93e80 | 52 | } |
exarkun | 1:2fe82be93e80 | 53 | |
exarkun | 1:2fe82be93e80 | 54 | int NextionLCD::TouchX(void) { |
exarkun | 1:2fe82be93e80 | 55 | return mTouchX; |
exarkun | 1:2fe82be93e80 | 56 | } |
exarkun | 1:2fe82be93e80 | 57 | |
exarkun | 1:2fe82be93e80 | 58 | int NextionLCD::TouchY(void) { |
exarkun | 1:2fe82be93e80 | 59 | return mTouchY; |
exarkun | 1:2fe82be93e80 | 60 | } |
exarkun | 1:2fe82be93e80 | 61 | |
exarkun | 1:2fe82be93e80 | 62 | |
exarkun | 1:2fe82be93e80 | 63 | |
exarkun | 1:2fe82be93e80 | 64 | /* ***************************************** Private Functions ***************************************** */ |
exarkun | 1:2fe82be93e80 | 65 | |
exarkun | 1:2fe82be93e80 | 66 | |
exarkun | 1:2fe82be93e80 | 67 | |
exarkun | 1:2fe82be93e80 | 68 | |
exarkun | 1:2fe82be93e80 | 69 | /************************* Private Callback Functions *************************/ |
exarkun | 1:2fe82be93e80 | 70 | void NextionLCD::RxInterrupt(void) { |
exarkun | 1:2fe82be93e80 | 71 | char c; |
exarkun | 1:2fe82be93e80 | 72 | |
exarkun | 1:2fe82be93e80 | 73 | if(lcd.readable()) { |
exarkun | 1:2fe82be93e80 | 74 | c = lcd.getc(); |
exarkun | 1:2fe82be93e80 | 75 | mRxMsg[mRxIdx] = c; |
exarkun | 1:2fe82be93e80 | 76 | mRxIdx++; |
exarkun | 1:2fe82be93e80 | 77 | if ((mRxIdx >= 3) && (mRxMsg[mRxIdx-1] == 0xff) && (mRxMsg[mRxIdx-2] == 0xff) && (mRxMsg[mRxIdx-3] == 0xff)) { //valid rx message |
exarkun | 1:2fe82be93e80 | 78 | mRxIdx=0; |
exarkun | 1:2fe82be93e80 | 79 | if(mRxMsg[0] == 0x67) { //Touch coordinate data return |
exarkun | 1:2fe82be93e80 | 80 | mTouchX = (mRxMsg[1]*256) + mRxMsg[2]; |
exarkun | 1:2fe82be93e80 | 81 | mTouchY = (mRxMsg[3]*256) + mRxMsg[4]; |
exarkun | 1:2fe82be93e80 | 82 | if(mRxMsg[5] == 0x01) |
exarkun | 1:2fe82be93e80 | 83 | mTouch = true; |
exarkun | 1:2fe82be93e80 | 84 | else |
exarkun | 1:2fe82be93e80 | 85 | mTouch = false; |
exarkun | 1:2fe82be93e80 | 86 | } |
exarkun | 1:2fe82be93e80 | 87 | } |
exarkun | 1:2fe82be93e80 | 88 | } |
exarkun | 1:2fe82be93e80 | 89 | } |