Changes for page Front I/O

Last modified by Kevin Wiki on 2024/07/07 22:48

From version 8.7
edited by Kevin Wiki
on 2024/07/07 22:21
Change comment: There is no comment for this version
To version 8.2
edited by Kevin Wiki
on 2024/07/05 14:00
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -277,188 +277,7 @@
277 277  There are 4 words, each containing 7 data bits. They do not
278 278  
279 279  
280 -= Controlling center LED columns =
281 -
282 -There are a total of 4 banks of addressable LED's 12 each of the total 48.
283 -
284 -
285 -|**Address Range (Binary)**|**Address Range (hex)**|**Size**|**Description**
286 -|0-7|00-07|1 byte|Ethernet indicator and LEDs bank-1
287 -|8-15|08-0F|1 byte|LEDs bank-2
288 -|16-23|10-17|1 byte|LEDs bank-3
289 -|24-31|18-1F|1 byte|LEDs bank-4
290 -
291 -[[attach:Address Ranges-Table 1.csv||target="_blank"]]
292 -
293 -|=**Address Banks**|=**LEDs Controlled**|=**Count**|=**Address Range (hex)**|=**Description**
294 -|=**Bank-1**|1 2 4 6 8 10 12|7|00-07|LED 1 ethernet indicator, even bottom half
295 -|=**Bank-2**|3 5 7 9 11 13|6|08-0F|Odd LED top half
296 -|=**Bank-3**|14 16 18 20 22 23 24|7|10-17|Even LED bottom half
297 -|=**Bank-4**|15 17 19 21|4|18-1F|Odd LED top half
298 -
299 -[[attach:LEDs per bank-Table 1.csv||target="_blank"]]
300 -
301 -
302 -|=Register Banks|=LEDs|=Count
303 -|=Bank 1|1 2 4 6 8 10 12|7
304 -|=Bank 2|3 5 7 9 11 13|6
305 -|=Bank 3|14 16 18 20 22 23 24|7
306 -|=Bank 4|15 17 19 21|4
307 -
308 -Script for writing all permutations to display:
309 -
310 -{{code language="c++"}}
311 -#include "Wire.h" // enable I2C bus
312 -
313 -byte saa1064 = 0x3B; // define the I2C bus address for our SAA1064 (pin 1 to GND) ****
314 -
315 -void setup()
316 -{
317 - Wire.begin(); // start up I2C bus
318 -}
319 -
320 -void write(int value) {
321 - Wire.beginTransmission(saa1064);
322 - Wire.write(1);
323 -
324 - Wire.write(value);
325 - Wire.write(value);
326 - Wire.write(value);
327 - Wire.write(value);
328 -
329 - Wire.endTransmission();
330 -}
331 -
332 -void loop() {
333 - for (int value = 0; value < 127; value++) {
334 - write(value);
335 - delay(300);
336 - }
337 -}
338 -{{/code}}
339 -
340 -Since LED positions don't map sequentially with LED number we can't address them in 10-base form, but we can define each LED in binary and use OR operator to display LEDs we want.
341 -
342 -{{code language="c++"}}
343 -#include "Wire.h" // enable I2C bus
344 -
345 -#define TCAADDR 0x70
346 -byte saa1064 = 0x3B; // define the I2C bus address for our SAA1064
347 -
348 -byte bank1;
349 -byte bank2;
350 -byte bank3;
351 -byte bank4;
352 -
353 -byte activityLED = 0b00000001;
354 -byte leds[23][4] = {
355 - {0b00000010, 0b00000000, 0b00000000, 0b00000000}, // 1
356 - {0b00000000, 0b00000010, 0b00000000, 0b00000000}, // 2
357 - {0b00000100, 0b00000000, 0b00000000, 0b00000000}, // 3
358 - {0b00000000, 0b00000100, 0b00000000, 0b00000000}, // 4
359 - {0b00001000, 0b00000000, 0b00000000, 0b00000000}, // 5
360 - {0b00000000, 0b00001000, 0b00000000, 0b00000000}, // 6
361 - {0b00010000, 0b00000000, 0b00000000, 0b00000000}, // 7
362 - {0b00000000, 0b00010000, 0b00000000, 0b00000000}, // 8
363 - {0b00100000, 0b00000000, 0b00000000, 0b00000000}, // 9
364 - {0b00000000, 0b00100000, 0b00000000, 0b00000000}, // 10
365 - {0b01000000, 0b00000000, 0b00000000, 0b00000000}, // 11
366 - {0b00000000, 0b01000000, 0b00000000, 0b00000000}, // 12
367 - {0b00000000, 0b00000000, 0b00000001, 0b00000000}, // 13
368 - {0b00000000, 0b00000000, 0b00000000, 0b00000001}, // 14
369 - {0b00000000, 0b00000000, 0b00000010, 0b00000000}, // 15
370 - {0b00000000, 0b00000000, 0b00000000, 0b00000010}, // 16
371 - {0b00000000, 0b00000000, 0b00000100, 0b00000000}, // 17
372 - {0b00000000, 0b00000000, 0b00000000, 0b00000100}, // 18
373 - {0b00000000, 0b00000000, 0b00001000, 0b00000000}, // 19
374 - {0b00000000, 0b00000000, 0b00000000, 0b00001000}, // 20
375 - {0b00000000, 0b00000000, 0b00010000, 0b00000000}, // 21
376 - {0b00000000, 0b00000000, 0b00100000, 0b00000000}, // 22
377 - {0b00000000, 0b00000000, 0b01000000, 0b00000000} // 23
378 -};
379 -
380 -void setup()
381 -{
382 - Serial.begin(9600);
383 - Wire.begin(); // start up I2C bus
384 -
385 - Serial.println("setting up ports");
386 -}
387 -
388 -void tcaselect(uint8_t i) {
389 - if (i > 7) return;
390 390  
391 - Wire.beginTransmission(TCAADDR);
392 - Wire.write(1 << i);
393 - Wire.endTransmission();
394 -}
395 -
396 -void selectLeft() { tcaselect(2); }
397 -void selectRight() { tcaselect(1); }
398 -
399 -void write() {
400 - Wire.beginTransmission(saa1064);
401 - Wire.write(1);
402 -
403 - Wire.write(bank1);
404 - Wire.write(bank2);
405 - Wire.write(bank3);
406 - Wire.write(bank4);
407 -
408 - Wire.endTransmission();
409 -}
410 -
411 -void resetBanks() {
412 - bank1 = 0;
413 - bank2 = 0;
414 - bank3 = 0;
415 - bank4 = 0;
416 -}
417 -
418 -void displayNumber(int number) {
419 - bank1 = leds[number - 1][0];
420 - bank2 = leds[number - 1][1];
421 - bank3 = leds[number - 1][2];
422 - bank4 = leds[number - 1][3];
423 -}
424 -
425 -void displayUpToNumber(int number) {
426 - for (int i = 0; i < number; i++) {
427 - bank1 = bank1 | leds[i][0];
428 - bank2 = bank2 | leds[i][1];
429 - bank3 = bank3 | leds[i][2];
430 - bank4 = bank4 | leds[i][3];
431 - }
432 -}
433 -
434 -void computeEthernetActivity() {
435 - bank1 = bank1 | activityLED;
436 -}
437 -
438 -void loop() {
439 - resetBanks();
440 - delay(10);
441 -
442 - displayUpToNumber(15);
443 - computeEthernetActivity();
444 -
445 - selectLeft();
446 - write();
447 - delay(2);
448 -
449 - selectRight();
450 - write();
451 - delay(1000);
452 -}
453 -{{/code}}
454 -
455 -
456 -= Missing pieces, TODO =
457 -
458 -* how to control compute LED in top IO row
459 -* control warning button LED
460 -
461 -
462 462  )))
463 463  
464 464  
Address Ranges-Table 1.csv
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.kevin
Size
... ... @@ -1,1 +1,0 @@
1 -209 bytes
Content
... ... @@ -1,6 +1,0 @@
1 -Address Range (Binary);Address Range (hex);Size;Description
2 -0-7;00-07;1 byte;Ethernet indicator and LEDs bank-1
3 -8-15;08-0F;1 byte;LEDs bank-2
4 -16-23;10-17;1 byte;LEDs bank-3
5 -24-31;18-1F;1 byte;LEDs bank-4
6 -
LEDs per bank-Table 1.csv
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.kevin
Size
... ... @@ -1,1 +1,0 @@
1 -294 bytes
Content
... ... @@ -1,6 +1,0 @@
1 -Address Banks;LEDs Controlled;Count;Address Range (hex);Description
2 -Bank-1;1 2 4 6 8 10 12;7;00-07;LED 1 ethernet indicator, even bottom half
3 -Bank-2;3 5 7 9 11 13;6;08-0F;Odd LED top half
4 -Bank-3;14 16 18 20 22 23 24;7;10-17;Even LED bottom half
5 -Bank-4;15 17 19 21;4;18-1F;Odd LED top half
6 -