source: t29-www/physical-computing/TM1638-1_dominik/TM1638-1_dominik.ino @ 1146

Last change on this file since 1146 was 1146, checked in by heribert, 5 years ago

Kleinigkeiten

File size: 1.9 KB
Line 
1
2
3//TM 1638 LED & Key.  "Manuelles" Einlesen der Ziffern mit shiftOut, (von Dominik + Victor)
4
5const int stb = 7;    // Strobe
6const int clk = 9;    // Clock
7const int dio = 8;    // Data
8
9const byte NUMBER_FONT[] = {
10  0b00111111, // 0
11  0b00000110, // 1
12  0b01011011, // 2
13  0b01001111, // 3
14  0b01100110, // 4
15  0b01101101, // 5
16  0b01111101, // 6
17  0b00000111, // 7
18  0b01111111, // 8
19  0b01101111  // 9
20  };
21
22void setup() {
23
24  pinMode(stb, OUTPUT);
25  pinMode(clk, OUTPUT);
26  pinMode(dio, OUTPUT);
27
28  digitalWrite(stb, LOW);
29 
30  shiftOut(dio, clk, LSBFIRST, 0b10001111); //Command-Byte (erstes Byte)
31
32  clearLn();        // loeschen des Displays, ausgelagerte Methode
33 
34  printZi(7,0,0);   // Daten einlesen, ausgelagerte Methode, s.u.
35  printZi(3,0,1);
36  printZi(4,1,0);   // hier wird z.B. die Zahl 734.12 eingegeben und ueber der 3 sowie 1
37  printZi(1,0,1);   // wird die LED eingeschaltet
38  printZi(2,0,0); 
39 
40  digitalWrite(stb, HIGH);        //uebernimmt Daten aus dem Schieberegister zur Anzeige
41}
42
43void loop() {
44
45}
46
47void clearLn() {              // loescht das Display und die LEDs
48  for(int i = 0;i<8;i++){
49    shiftOut(dio, clk, LSBFIRST, 0b00000000);
50    shiftOut(dio, clk, LSBFIRST, 0b10000000);
51  }
52
53}
54 
55void printZi(int number, int point, int led) {    // setzt Ziffer, Punkt und LED über der Ziffer
56  byte byte2 = NUMBER_FONT[number];     // liest Byte der gewuenschten Nummer aus dem Array
57 
58  if (point==1){                        // setzt bei Bedarf das Bit fuer den Dezimalpunkt auf 1
59    bitSet(byte2,7);  // hier wird im NUMBER-FONT das 8. Bit (Array-Index=7) gesetzt, falls an dieser
60  }                   // Stelle ein Dezimalpunkt erscheinen soll
61 
62  shiftOut(dio, clk, LSBFIRST, byte2);   // gibt die Ziffer an das Modul(und evtl. den Punkt)
63  if (led==1){                         
64    shiftOut(dio, clk, LSBFIRST, 0b10000001);    // drittes Byte setzt die LED ueber der Ziffer AN oder AUS
65  }else{
66    shiftOut(dio, clk, LSBFIRST, 0b10000000);
67  }
68}
69
70
Note: See TracBrowser for help on using the repository browser.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License