motor dc driver with lcd nextion nx8048t050_011

Dependencies:   mbed QEI_hw NVIC_set_all_priorities SoftPWM

https://os.mbed.com/media/uploads/exarkun/wp_20180730_002.jpg https://os.mbed.com/media/uploads/exarkun/wp_20180823_003.jpg https://os.mbed.com/media/uploads/exarkun/wp_20180730_007.jpg https://os.mbed.com/media/uploads/exarkun/wp_20171120_004.jpg

https://os.mbed.com/media/uploads/exarkun/wp_20191002_006.jpg https://os.mbed.com/media/uploads/exarkun/wp_20191002_003.jpg https://os.mbed.com/media/uploads/exarkun/wp_20191002_004.jpg https://os.mbed.com/media/uploads/exarkun/wp_20191002_005.jpg https://os.mbed.com/media/uploads/exarkun/wp_20190322_003.jpg https://os.mbed.com/media/uploads/exarkun/wp_20180925_002.jpg https://os.mbed.com/media/uploads/exarkun/wp_20181010_006.jpg https://os.mbed.com/media/uploads/exarkun/wp_20181220_001.jpg

https://os.mbed.com/media/uploads/exarkun/wp_20181220_002.jpg

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?

UserRevisionLine numberNew 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 }