Files
hexapod-robot/2011-firefly-mega-ssc32/firmware/2012-library/hexapod/Segment.cpp
T

85 lines
1.9 KiB
C++

// 7Segment
#include "Arduino.h"
#include "Segment.h"
byte seven_seg_digits[][8] = {
{ 0,1,1,1,1,1,0,1 }, // = 0
{ 0,1,1,0,0,0,0,0 }, // = 1
{ 0,0,1,1,1,1,1,0 }, // = 2
{ 0,1,1,1,1,0,1,0 }, // = 3
{ 0,1,1,0,0,0,1,1 }, // = 4
{ 0,1,0,1,1,0,1,1 }, // = 5
{ 0,1,0,1,1,1,1,1 }, // = 6
{ 0,1,1,1,0,0,0,0 }, // = 7
{ 0,1,1,1,1,1,1,1 }, // = 8
{ 0,1,1,1,1,0,1,1 }, // = 9
{ 1,1,1,1,0,1,1,1 }, // = A
{ 1,1,0,0,1,1,1,1 }, // = B
{ 1,0,0,1,1,1,0,1 }, // = C
{ 1,1,0,0,1,1,1,1 }, // = D
{ 1,0,0,1,1,1,1,1 }, // = E
{ 1,0,0,1,0,1,1,1 }, // = F
{ 1,1,0,1,1,0,1,1 }, // = S
{ 0,0,0,0,0,0,0,0 }, // = NULL
{ 1,0,0,1,0,1,0,1 } // = R
};
Segment::Segment() {
for (int i=0; i<8; i++)
pinMode(6+i, OUTPUT);
}
/*void Segment::sevenSegWrite(byte digit) {
byte pin = 6;
for (byte segCount = 0; segCount < 8; ++segCount) {
digitalWrite(pin, !seven_seg_digits[digit][segCount]);
++pin;
}
}*/
void Segment::sevenSegWrite(char chr) {
byte pin = 6;
byte digit;
if(chr <= 9) digit = chr;
else if (chr <= 'f') digit = 10 + (chr -'a');
else if (chr == 's') digit = 16;
else if (chr == 'r') digit = 18;
else digit = Cls;
for (byte segCount = 0; segCount < 8; ++segCount) {
digitalWrite(pin, !seven_seg_digits[digit][segCount]);
++pin;
}
}
/*void Segment::BlinksevenSegWrite(byte digit) {
byte pin = 6;
for (byte segCount = 0; segCount < 8; ++segCount) {
digitalWrite(pin, !seven_seg_digits[digit][segCount]);
++pin;
}
delay(100);
sevenSegWrite((byte)17);
}*/
void Segment::BlinksevenSegWrite(char chr) {
byte pin = 6;
byte digit;
if(chr <= 9) digit = chr;
else if (chr <= 'f') digit = 10 + (chr -'a');
else if (chr == 's') digit = 16;
else digit = Cls;
for (byte segCount = 0; segCount < 8; ++segCount) {
digitalWrite(pin, !seven_seg_digits[digit][segCount]);
++pin;
}
delay(100);
sevenSegWrite(Cls);
}