1- #ifndef _ARDUINO_NV3007_H_
2- #define _ARDUINO_NV3007_H_
1+ #pragma once
32
4- #include < Arduino.h>
5- #include < Print.h>
63#include " ./Arduino_GFX.h"
74#include " ../Arduino_TFT.h"
85
2825
2926#define NV3007_MADCTL 0x36
3027
28+ #define NV3007_MADCTL_MY 0x80
29+ #define NV3007_MADCTL_MX 0x40
30+ #define NV3007_MADCTL_MV 0x20
31+ #define NV3007_MADCTL_ML 0x10
32+ #define NV3007_MADCTL_RGB 0x00
33+
3134static const uint8_t NV3007_init_operations[] = {
3235 BEGIN_WRITE,
3336
@@ -174,13 +177,146 @@ static const uint8_t NV3007_init_operations[] = {
174177
175178 DELAY, 150 };
176179
180+ static const uint8_t NV3007_279_init_operations[] = {
181+ BEGIN_WRITE,
182+
183+ WRITE_C8_D8, 0xff , 0xa5 ,
184+ WRITE_C8_D8, 0x9a , 0x08 ,
185+ WRITE_C8_D8, 0x9b , 0x08 ,
186+ WRITE_C8_D8, 0x9c , 0xb0 ,
187+ WRITE_C8_D8, 0x9d , 0x16 ,
188+ WRITE_C8_D8, 0x9e , 0xc4 ,
189+ WRITE_C8_D16, 0x8f , 0x55 , 0x04 ,
190+ WRITE_C8_D8, 0x84 , 0x90 ,
191+ WRITE_C8_D8, 0x83 , 0x7b ,
192+ WRITE_C8_D8, 0x85 , 0x33 ,
193+ WRITE_C8_D8, 0x60 , 0x00 ,
194+ WRITE_C8_D8, 0x70 , 0x00 ,
195+ WRITE_C8_D8, 0x61 , 0x02 ,
196+ WRITE_C8_D8, 0x71 , 0x02 ,
197+ WRITE_C8_D8, 0x62 , 0x04 ,
198+ WRITE_C8_D8, 0x72 , 0x04 ,
199+ WRITE_C8_D8, 0x6c , 0x29 ,
200+ WRITE_C8_D8, 0x7c , 0x29 ,
201+ WRITE_C8_D8, 0x6d , 0x31 ,
202+ WRITE_C8_D8, 0x7d , 0x31 ,
203+ WRITE_C8_D8, 0x6e , 0x0f ,
204+ WRITE_C8_D8, 0x7e , 0x0f ,
205+ WRITE_C8_D8, 0x66 , 0x21 ,
206+ WRITE_C8_D8, 0x76 , 0x21 ,
207+ WRITE_C8_D8, 0x68 , 0x3A ,
208+ WRITE_C8_D8, 0x78 , 0x3A ,
209+ WRITE_C8_D8, 0x63 , 0x07 ,
210+ WRITE_C8_D8, 0x73 , 0x07 ,
211+ WRITE_C8_D8, 0x64 , 0x05 ,
212+ WRITE_C8_D8, 0x74 , 0x05 ,
213+ WRITE_C8_D8, 0x65 , 0x02 ,
214+ WRITE_C8_D8, 0x75 , 0x02 ,
215+ WRITE_C8_D8, 0x67 , 0x23 ,
216+ WRITE_C8_D8, 0x77 , 0x23 ,
217+ WRITE_C8_D8, 0x69 , 0x08 ,
218+ WRITE_C8_D8, 0x79 , 0x08 ,
219+ WRITE_C8_D8, 0x6a , 0x13 ,
220+ WRITE_C8_D8, 0x7a , 0x13 ,
221+ WRITE_C8_D8, 0x6b , 0x13 ,
222+ WRITE_C8_D8, 0x7b , 0x13 ,
223+ WRITE_C8_D8, 0x6f , 0x00 ,
224+ WRITE_C8_D8, 0x7f , 0x00 ,
225+ WRITE_C8_D8, 0x50 , 0x00 ,
226+ WRITE_C8_D8, 0x52 , 0xd6 ,
227+ WRITE_C8_D8, 0x53 , 0x08 ,
228+ WRITE_C8_D8, 0x54 , 0x08 ,
229+ WRITE_C8_D8, 0x55 , 0x1e ,
230+ WRITE_C8_D8, 0x56 , 0x1c ,
231+
232+ WRITE_COMMAND_8, 0xa0 ,
233+ WRITE_BYTES, 3 , 0x2b , 0x24 , 0x00 ,
234+
235+ WRITE_C8_D8, 0xa1 , 0x87 ,
236+ WRITE_C8_D8, 0xa2 , 0x86 ,
237+ WRITE_C8_D8, 0xa5 , 0x00 ,
238+ WRITE_C8_D8, 0xa6 , 0x00 ,
239+ WRITE_C8_D8, 0xa7 , 0x00 ,
240+ WRITE_C8_D8, 0xa8 , 0x36 ,
241+ WRITE_C8_D8, 0xa9 , 0x7e ,
242+ WRITE_C8_D8, 0xaa , 0x7e ,
243+ WRITE_C8_D8, 0xB9 , 0x85 ,
244+ WRITE_C8_D8, 0xBA , 0x84 ,
245+ WRITE_C8_D8, 0xBB , 0x83 ,
246+ WRITE_C8_D8, 0xBC , 0x82 ,
247+ WRITE_C8_D8, 0xBD , 0x81 ,
248+ WRITE_C8_D8, 0xBE , 0x80 ,
249+ WRITE_C8_D8, 0xBF , 0x01 ,
250+ WRITE_C8_D8, 0xC0 , 0x02 ,
251+ WRITE_C8_D8, 0xc1 , 0x00 ,
252+ WRITE_C8_D8, 0xc2 , 0x00 ,
253+ WRITE_C8_D8, 0xc3 , 0x00 ,
254+ WRITE_C8_D8, 0xc4 , 0x33 ,
255+ WRITE_C8_D8, 0xc5 , 0x7e ,
256+ WRITE_C8_D8, 0xc6 , 0x7e ,
257+ WRITE_C8_D16, 0xC8 , 0x33 , 0x33 ,
258+ WRITE_C8_D8, 0xC9 , 0x68 ,
259+ WRITE_C8_D8, 0xCA , 0x69 ,
260+ WRITE_C8_D8, 0xCB , 0x6a ,
261+ WRITE_C8_D8, 0xCC , 0x6b ,
262+ WRITE_C8_D16, 0xCD , 0x33 , 0x33 ,
263+ WRITE_C8_D8, 0xCE , 0x6c ,
264+ WRITE_C8_D8, 0xCF , 0x6d ,
265+ WRITE_C8_D8, 0xD0 , 0x6e ,
266+ WRITE_C8_D8, 0xD1 , 0x6f ,
267+ WRITE_C8_D16, 0xAB , 0x03 , 0x67 ,
268+ WRITE_C8_D16, 0xAC , 0x03 , 0x6b ,
269+ WRITE_C8_D16, 0xAD , 0x03 , 0x68 ,
270+ WRITE_C8_D16, 0xAE , 0x03 , 0x6c ,
271+ WRITE_C8_D8, 0xb3 , 0x00 ,
272+ WRITE_C8_D8, 0xb4 , 0x00 ,
273+ WRITE_C8_D8, 0xb5 , 0x00 ,
274+ WRITE_C8_D8, 0xB6 , 0x32 ,
275+ WRITE_C8_D8, 0xB7 , 0x7e ,
276+ WRITE_C8_D8, 0xB8 , 0x7e ,
277+ WRITE_C8_D8, 0xe0 , 0x00 ,
278+ WRITE_C8_D16, 0xe1 , 0x03 , 0x0f ,
279+ WRITE_C8_D8, 0xe2 , 0x04 ,
280+ WRITE_C8_D8, 0xe3 , 0x01 ,
281+ WRITE_C8_D8, 0xe4 , 0x0e ,
282+ WRITE_C8_D8, 0xe5 , 0x01 ,
283+ WRITE_C8_D8, 0xe6 , 0x19 ,
284+ WRITE_C8_D8, 0xe7 , 0x10 ,
285+ WRITE_C8_D8, 0xe8 , 0x10 ,
286+ WRITE_C8_D8, 0xea , 0x12 ,
287+ WRITE_C8_D8, 0xeb , 0xd0 ,
288+ WRITE_C8_D8, 0xec , 0x04 ,
289+ WRITE_C8_D8, 0xed , 0x07 ,
290+ WRITE_C8_D8, 0xee , 0x07 ,
291+ WRITE_C8_D8, 0xef , 0x09 ,
292+ WRITE_C8_D8, 0xf0 , 0xd0 ,
293+ WRITE_C8_D8, 0xf1 , 0x0e ,
294+ WRITE_C8_D8, 0xF9 , 0x17 ,
295+
296+ WRITE_COMMAND_8, 0xf2 ,
297+ WRITE_BYTES, 4 , 0x2c , 0x1b , 0x0b , 0x20 ,
298+
299+ WRITE_C8_D8, 0xe9 , 0x29 ,
300+ WRITE_C8_D8, 0xec , 0x04 ,
301+ WRITE_C8_D8, 0x35 , 0x00 ,
302+ WRITE_C8_D16, 0x44 , 0x00 , 0x10 ,
303+ WRITE_C8_D8, 0x46 , 0x10 ,
304+ WRITE_C8_D8, 0xff , 0x00 ,
305+ WRITE_C8_D8, 0x3a , 0x05 ,
306+
307+ WRITE_COMMAND_8, NV3007_SLPOUT,
308+ DELAY, 120 ,
309+ WRITE_COMMAND_8, NV3007_DISPON,
310+ END_WRITE};
311+
177312class Arduino_NV3007 : public Arduino_TFT
178313{
179314public:
180315 Arduino_NV3007 (
181316 Arduino_DataBus *bus, int8_t rst = GFX_NOT_DEFINED, uint8_t r = 0 ,
182317 bool ips = false , int16_t w = NV3007_TFTWIDTH, int16_t h = NV3007_TFTHEIGHT,
183- uint8_t col_offset1 = 0 , uint8_t row_offset1 = 0 , uint8_t col_offset2 = 0 , uint8_t row_offset2 = 0 );
318+ uint8_t col_offset1 = 0 , uint8_t row_offset1 = 0 , uint8_t col_offset2 = 0 , uint8_t row_offset2 = 0 ,
319+ const uint8_t *init_operations = NV3007_init_operations, size_t init_operations_len = sizeof (NV3007_init_operations));
184320
185321 bool begin (int32_t speed = GFX_NOT_DEFINED) override ;
186322 void writeAddrWindow (int16_t x, int16_t y, uint16_t w, uint16_t h) override ;
@@ -193,6 +329,7 @@ class Arduino_NV3007 : public Arduino_TFT
193329 void tftInit () override ;
194330
195331private:
196- };
332+ const uint8_t *_init_operations;
333+ size_t _init_operations_len;
197334
198- # endif
335+ };
0 commit comments