Hoi,
Naar een grote opruiming vond ik nog een mooi groot LCD display. Toen kwamen de herinneringen weer naar boven van LCD smartie. Maar helaas heeft mijn computer geen printer poort meer dus ik dacht dat moet ook wel met een arduino kunnen naar een paar uur zoeken kopiëren en plakken
ben ik op dit script gekomen. Wat erg goed werkt.
Nu zit ik met het volgende probleem. ik wou graag met een IR afstand bediening LCD smartie bedienen.
Dat lukt wel aardig met dit script
Maar ik ben geen programmeur helaas! Het eerste probleem is als LCD smartie data naar de arduino stuurt kan ik op een een of andere manier niet meer data naar de computer zenden. Maar nu het belangrijkste dit script te implementeren in het script van LCD smartie. Dus ik heb op Google zitten te speuren en ik dacht het moet te doen zijn met interrupts. Ik heb het geprobeerd met een serial interrupt en dat werkte wel aardig totdat ik in de interrupt Serial.println("1"); zette dat schijnt niet te kunnen.
Wie kan helpen om het werkend te krijgen want dit is erg leuk voor in mijn toekomstige HTPC!
Naar een grote opruiming vond ik nog een mooi groot LCD display. Toen kwamen de herinneringen weer naar boven van LCD smartie. Maar helaas heeft mijn computer geen printer poort meer dus ik dacht dat moet ook wel met een arduino kunnen naar een paar uur zoeken kopiëren en plakken
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
| //V0.0.1 Werkend met LCD smartie //V0.0.2 LCD Helderheid toegepast #include <LiquidCrystal.h> LiquidCrystal lcd(13, 12, 2, 3, 4, 5, 6, 7, 8, 9); //Backlight on port 11 #define BL 11 void setup() { //Serial.begin(19200); Serial.begin(115200); startup(); } void startup() { analogWrite(BL, 0); // Set maximum brightness lcd.begin(20, 4); lcd.clear(); lcd.print("+--+------------+--+"); lcd.setCursor(0,1); lcd.print("|##|Jan Dootjes.|##|"); lcd.setCursor(0,2); lcd.print("|##|LCD Display!|##|"); lcd.setCursor(0,3); lcd.print("+--+------------+--+"); } byte serial_getch() { int incoming; while (Serial.available()==0) {} // read the incoming byte: incoming = Serial.read(); return (byte) (incoming &0xff); } void loop() { byte rxbyte; byte temp; byte col; byte row; uint8_t location; uint8_t charMap[7]; rxbyte = serial_getch(); if (rxbyte == 254) //Matrix Orbital uses 254 prefix for commands { switch (serial_getch()) { case 66: //backlight on (at previously set brightness) // not implemented break; case 70: //backlight off // not implemented break; case 71: //set cursor position col = (serial_getch() - 1); //get column byte row = (serial_getch()); /* switch (serial_getch()) //get row byte { //line 1 is already set up case 2: temp += 0x40; break; case 3: temp += 0x14; break; case 4: temp += 0x54; break; default: break; } */ //lcd.commandWrite(0b10000000 + temp); lcd.setCursor(col,row-1); break; case 72: //cursor home (reset display position) //lcd.commandWrite(2); lcd.setCursor(0,0); break; case 74: //show underline cursor //lcd.commandWrite(0b00001110); break; case 75: //underline cursor off case 84: //block cursor off //lcd.commandWrite(0b00001100); break; case 76: //move cursor left //lcd.commandWrite(16); break; case 77: //move cursor right //lcd.commandWrite(20); break; case 78: //define custom char //location = 64+serial_getch()*8; location = serial_getch(); for (temp = 0; temp < 8; temp++) { charMap[temp] = serial_getch(); //get each pattern byte } lcd.createChar(location, charMap); break; case 83: //show blinking block cursor //lcd.commandWrite(0b00001111); break; case 86: //GPO OFF //implement later break; case 87: //GPO ON /*temp = serial_getch(); if (temp == 1) { GPO1 = GPO_ON; }*/ break; case 88: //clear display, cursor home //lcd.commandWrite(1); lcd.clear(); lcd.setCursor(0,0); break; case 152: //set and remember (doesn't save value, though) case 153: //set backlight brightness //not implemented analogWrite(BL, 0xFF-serial_getch()); break; //these commands ignored (no parameters) case 35: //read serial number case 36: //read version number case 55: //read module type case 59: //exit flow-control mode case 65: //auto transmit keypresses case 96: //auto-repeat mode off (keypad) case 67: //auto line-wrap on case 68: //auto line-wrap off case 81: //auto scroll on case 82: //auto scroll off case 104: //init horiz bar graph case 109: //init med size digits case 115: //init narrow vert bar graph case 118: //init wide vert bar graph break; default: //all other commands ignored and parameter byte discarded temp = serial_getch(); //dump the command code break; } return; } //END OF COMMAND HANDLER //change accented char to plain, detect and change descenders //NB descenders only work on 5x10 displays. This lookup table works // with my DEM-20845 (Display Elektronik GmbH) LCD using KS0066 chip. switch (rxbyte) { //chars that have direct equivalent in LCD charmap /* case 0x67: //g rxbyte = 0xE7; break; case 0x6A: //j rxbyte = 0xEA; break; case 0x70: //p rxbyte = 0xF0; break; case 0x71: //q rxbyte = 0xF1; break; case 0x79: //y rxbyte = 0xF9; break; */ case 0xE4: //ASCII "a" umlaut rxbyte = 0xE1; break; case 0xF1: //ASCII "n" tilde rxbyte = 0xEE; break; case 0xF6: //ASCII "o" umlaut rxbyte = 0xEF; //was wrong in v0.86 break; case 0xFC: //ASCII "u" umlaut rxbyte = 0xF5; break; //accented -> plain equivalent //and misc symbol translation case 0xA3: //sterling (pounds) rxbyte = 0xED; break; /* case 0xB0: //degrees symbol rxbyte = 0xDF; break; */ case 0xB5: //mu rxbyte = 0xE4; break; case 0xC0: //"A" variants case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: rxbyte = 0x41; break; case 0xC8: //"E" variants case 0xC9: case 0xCA: case 0xCB: rxbyte = 0x45; break; case 0xCC: //"I" variants case 0xCD: case 0xCE: case 0xCF: rxbyte = 0x49; break; case 0xD1: //"N" tilde -> plain "N" rxbyte = 0x43; break; case 0xD2: //"O" variants case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD8: rxbyte = 0x4F; break; case 0xD9: //"U" variants case 0xDA: case 0xDB: case 0xDC: rxbyte = 0x55; break; case 0xDD: //"Y" acute -> "Y" rxbyte = 0x59; break; /* case 0xDF: //beta //mucks up LCDSmartie's degree symbol?? rxbyte = 0xE2; break; */ case 0xE0: //"a" variants except umlaut case 0xE1: case 0xE2: case 0xE3: case 0xE5: rxbyte = 0x61; break; case 0xE7: //"c" cedilla -> "c" rxbyte = 0x63; break; case 0xE8: //"e" variants case 0xE9: case 0xEA: case 0xEB: rxbyte = 0x65; break; case 0xEC: //"i" variants case 0xED: case 0xEE: case 0xEF: rxbyte = 0x69; break; case 0xF2: //"o" variants except umlaut case 0xF3: case 0xF4: case 0xF5: case 0xF8: rxbyte = 0x6F; break; case 0xF7: //division symbol rxbyte = 0xFD; break; case 0xF9: //"u" variants except umlaut case 0xFA: case 0xFB: rxbyte = 0x75; break; default: break; } lcd.print(rxbyte); //otherwise a plain char so we print it to lcd return; } |
Nu zit ik met het volgende probleem. ik wou graag met een IR afstand bediening LCD smartie bedienen.
Dat lukt wel aardig met dit script
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| /* Samsung Afstandbediening codes 0 = -1175099550 1 = -516040152 2 = -1386715550 3 = 657459652 4 = -174484856 5 = 1931099650 6 = 742730860 7 = 1167253836 8 = 1747313982 9 = -1954213656 Volume up = -1752382022 Volume down = 1752382022 up = -1033113532 down = -989874618 left = 1972149634 right = 1400905448 enter = -1963903704 play = 1784778242 pause = -520862424 stop = -932981048 next = -314190012 previous = 1972149634 */ #include <IRremote.h> int RECV_PIN = 0; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(115200); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { long int decCode = results.value; Serial.println(decCode); switch (results.value) { case 1784778242: Serial.println("1"); break; } irrecv.resume(); // Receive the next value } } |
Maar ik ben geen programmeur helaas! Het eerste probleem is als LCD smartie data naar de arduino stuurt kan ik op een een of andere manier niet meer data naar de computer zenden. Maar nu het belangrijkste dit script te implementeren in het script van LCD smartie. Dus ik heb op Google zitten te speuren en ik dacht het moet te doen zijn met interrupts. Ik heb het geprobeerd met een serial interrupt en dat werkte wel aardig totdat ik in de interrupt Serial.println("1"); zette dat schijnt niet te kunnen.
Wie kan helpen om het werkend te krijgen want dit is erg leuk voor in mijn toekomstige HTPC!
[ Voor 0% gewijzigd door RobIII op 05-03-2013 21:02 . Reden: Code tags toegevoegd ]