Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <Adafruit_PWMServoDriver.h>
- Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
- #define MIN_PULSE_WIDTH0 610
- #define MAX_PULSE_WIDTH0 2325
- #define DEFAULT_PULSE_WIDTH 1500
- #define FREQUENCY 50
- #define MIN_ANGLE 0
- #define MAX_ANGLE 90
- int iCounter = 0;
- void setup()
- {
- Serial.begin(115200);
- Serial.println("16 channel Servo test!");
- pwm.begin();
- pwm.setPWMFreq(FREQUENCY);
- // Reset all segments of all digits //
- for(int DigitNum = 0; DigitNum <= 6; DigitNum++){
- for(int ServoNum = 0; ServoNum <= 6; ServoNum++){
- pwm.setPWM(ServoNum, DigitNum, pulseWidth(MIN_ANGLE, MIN_PULSE_WIDTH0, MAX_PULSE_WIDTH0));
- }
- }
- //////////////////////////////////////
- delay(2000);
- }
- int pulseWidth(int angle, int MIN_PULSE_WIDTH, int MAX_PULSE_WIDTH)
- {
- int pulse_wide, analog_value;
- pulse_wide = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
- analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
- return analog_value;
- }
- void SetSegment(int ServoNum, int DigitNum, boolean bState)
- {
- if(!bState){
- pwm.setPWM(ServoNum, DigitNum, pulseWidth(MIN_ANGLE, MIN_PULSE_WIDTH0, MAX_PULSE_WIDTH0));
- }
- else {
- pwm.setPWM(ServoNum, DigitNum, pulseWidth(MAX_ANGLE, MIN_PULSE_WIDTH0, MAX_PULSE_WIDTH0));
- }
- }
- void SetDigit(int DigitNum, int DigitValue) {
- Serial.println(String(DigitValue));
- switch (DigitValue) {
- case 0:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 1);
- SetSegment(5, DigitNum, 1);
- SetSegment(6, DigitNum, 0);
- break;
- case 1:
- SetSegment(0, DigitNum, 0);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 0);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 0);
- SetSegment(6, DigitNum, 0);
- break;
- case 2:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 0);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 1);
- SetSegment(5, DigitNum, 0);
- SetSegment(6, DigitNum, 1);
- break;
- case 3:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 0);
- SetSegment(6, DigitNum, 1);
- break;
- case 4:
- SetSegment(0, DigitNum, 0);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 0);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 1);
- SetSegment(6, DigitNum, 1);
- break;
- case 5:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 0);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 1);
- SetSegment(6, DigitNum, 1);
- break;
- case 6:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 0);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 1);
- SetSegment(5, DigitNum, 1);
- SetSegment(6, DigitNum, 1);
- break;
- case 7:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 0);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 0);
- SetSegment(6, DigitNum, 0);
- break;
- case 8:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 1);
- SetSegment(5, DigitNum, 1);
- SetSegment(6, DigitNum, 1);
- break;
- case 9:
- SetSegment(0, DigitNum, 1);
- SetSegment(1, DigitNum, 1);
- SetSegment(2, DigitNum, 1);
- SetSegment(3, DigitNum, 1);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 1);
- SetSegment(6, DigitNum, 1);
- break;
- default:
- SetSegment(0, DigitNum, 0);
- SetSegment(1, DigitNum, 0);
- SetSegment(2, DigitNum, 0);
- SetSegment(3, DigitNum, 0);
- SetSegment(4, DigitNum, 0);
- SetSegment(5, DigitNum, 0);
- SetSegment(6, DigitNum, 0);
- break;
- }
- }
- void loop() {
- SetDigit(0,iCounter);
- delay(1000);
- iCounter++;
- if(iCounter>=10){
- iCounter = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement