-
Notifications
You must be signed in to change notification settings - Fork 0
/
SevSeg.h
81 lines (62 loc) · 2.39 KB
/
SevSeg.h
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
/* SevSeg Library
Copyright 2014 Dean Reading
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This library allows an Arduino to easily display numbers in decimal format on
a 7-segment display without a separate 7-segment display controller.
Direct any questions or suggestions to [email protected]
See the included readme for instructions.
*/
// If you use current-limiting resistors on your segment pins instead of the
// digit pins, then change the '0' in the line below to a '1'
#define RESISTORS_ON_SEGMENTS 0
#define MAXNUMDIGITS 8 //Increase this number to support larger displays
#ifndef SevSeg_h
#define SevSeg_h
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
// Use defines to link the hardware configurations to the correct numbers
#define COMMON_CATHODE 0
#define COMMON_ANODE 1
#define N_TRANSISTORS 2
#define P_TRANSISTORS 3
#define NP_COMMON_CATHODE 1
#define NP_COMMON_ANODE 0
class SevSeg
{
public:
SevSeg();
void refreshDisplay();
void begin(byte hardwareConfig, byte numDigitsIn, byte digitPinsIn[], byte segmentPinsIn[]);
void setBrightness(int brightnessIn); // A number from 0..100
void setNumber(long numToShow, byte decPlaces);
void setNumber(unsigned long numToShow, byte decPlaces);
void setNumber(int numToShow, byte decPlaces);
void setNumber(unsigned int numToShow, byte decPlaces);
void setNumber(char numToShow, byte decPlaces);
void setNumber(byte numToShow, byte decPlaces);
void setNumber(float numToShow, byte decPlaces);
private:
void setNewNum(long numToShow, byte decPlaces);
void findDigits(long numToShow, byte decPlaces, byte nums[]);
void setDigitCodes(byte nums[], byte decPlaces);
boolean digitOn,digitOff,segmentOn,segmentOff;
byte digitPins[MAXNUMDIGITS];
byte segmentPins[8];
byte numDigits;
byte digitCodes[MAXNUMDIGITS];
int ledOnTime;
const static long powersOf10[10];
};
#endif //SevSeg_h
/// END ///