From 532a9e70e1117704e08c404983df4e2daa30f439 Mon Sep 17 00:00:00 2001 From: Baozhu Zuo Date: Sun, 2 Feb 2020 12:50:38 +0800 Subject: [PATCH] Pretty printed the Arduino code with astyle --- HT16K33_driver.cpp | 99 ++-- HT16K33_driver.h | 93 ++-- .../combine_two_displays.ino | 22 +- examples/display_basic/display_basic.ino | 78 ++- examples/display_custom/display_custom.ino | 87 ++-- .../display_scroll_number.ino | 68 ++- .../display_scroll_string.ino | 70 ++- .../display_specific_segments.ino | 122 ++--- .../number_increment/number_increment.ino | 100 ++-- grove_alphanumeric_display.cpp | 484 ++++++++---------- grove_alphanumeric_display.h | 185 ++++--- 11 files changed, 665 insertions(+), 743 deletions(-) diff --git a/HT16K33_driver.cpp b/HT16K33_driver.cpp index a67b72b..0910183 100644 --- a/HT16K33_driver.cpp +++ b/HT16K33_driver.cpp @@ -1,78 +1,73 @@ -/* - * HT16K33_driver.cpp - * A library for Grove - grove_quad_alphanumeric_display - * - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : Jerry Yip - * Create Time: 2018-06 - * Version : 0.1 - * Change Log : - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : downey - * Create Time: 2018-06 - * Version : 1.1 - * Change Log :for digital tube development. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +/* + HT16K33_driver.cpp + A library for Grove - grove_quad_alphanumeric_display + + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : Jerry Yip + Create Time: 2018-06 + Version : 0.1 + Change Log : + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : downey + Create Time: 2018-06 + Version : 1.1 + Change Log :for digital tube development. + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include #include "HT16K33_driver.h" -bool HT16K33::writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t* data) -{ +bool HT16K33::writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t* data) { Wire.beginTransmission(devAddr); Wire.write((uint8_t) regAddr); for (uint8_t i = 0; i < length; i++) { Wire.write((uint8_t) data[i]); } - Wire.endTransmission(); + Wire.endTransmission(); } -void HT16K33::init(uint8_t addr) -{ +void HT16K33::init(uint8_t addr) { _addr = addr; // turn on oscillator - writeBytes(_addr, 0x21, 0, (uint8_t *)NULL); + writeBytes(_addr, 0x21, 0, (uint8_t*)NULL); } /*brightness:0-15*/ -void HT16K33::setBrightness(uint8_t brightness) -{ - writeBytes(_addr, (0xE0 | brightness), 0, (uint8_t *)NULL); +void HT16K33::setBrightness(uint8_t brightness) { + writeBytes(_addr, (0xE0 | brightness), 0, (uint8_t*)NULL); } -void HT16K33::setBlinkRate(blink_type_t blink_type) -{ - writeBytes(_addr, (0x80 | 0x01 | (blink_type << 1)), 0, (uint8_t *)NULL); +void HT16K33::setBlinkRate(blink_type_t blink_type) { + writeBytes(_addr, (0x80 | 0x01 | (blink_type << 1)), 0, (uint8_t*)NULL); } -void HT16K33::clear() -{ - +void HT16K33::clear() { + } diff --git a/HT16K33_driver.h b/HT16K33_driver.h index 63ec506..835f09d 100644 --- a/HT16K33_driver.h +++ b/HT16K33_driver.h @@ -1,40 +1,40 @@ -/* - * HT16K33_driver.h - * A library for Grove - grove_quad_alphanumeric_display - * - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : Jerry Yip - * Create Time: 2018-06 - * Version : 0.1 - * Change Log : - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : downey - * Create Time: 2018-06 - * Version : 1.1 - * Change Log :for digital tube development. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +/* + HT16K33_driver.h + A library for Grove - grove_quad_alphanumeric_display + + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : Jerry Yip + Create Time: 2018-06 + Version : 0.1 + Change Log : + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : downey + Create Time: 2018-06 + Version : 1.1 + Change Log :for digital tube development. + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #ifndef __HT16K33_DRIVER_H_ #define __HT16K33_DRIVER_H_ @@ -46,22 +46,19 @@ -enum orientation_type_t -{ +enum orientation_type_t { DISPLAY_ROTATE_0 = 0, DISPLAY_ROTATE_90, DISPLAY_ROTATE_180, DISPLAY_ROTATE_270, }; -enum action_type_t -{ +enum action_type_t { ACTION_SCROLLING = 0, ACTION_SHIFT, }; -enum blink_type_t -{ +enum blink_type_t { BLINK_OFF = 0, BLINK_2HZ, BLINK_1HZ, @@ -69,20 +66,20 @@ enum blink_type_t class HT16K33 { -public: - HT16K33(){}; + public: + HT16K33() {}; void init(uint8_t addr); void setBlinkRate(blink_type_t blink_type); - + void setBrightness(uint8_t brightness); - + virtual void clear(); bool writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t* data); -protected: + protected: uint8_t _addr; }; diff --git a/examples/combine_two_displays/combine_two_displays.ino b/examples/combine_two_displays/combine_two_displays.ino index f3a6853..821d344 100644 --- a/examples/combine_two_displays/combine_two_displays.ino +++ b/examples/combine_two_displays/combine_two_displays.ino @@ -5,29 +5,28 @@ Seeed_Digital_Tube tube1; Seeed_Digital_Tube tube2; -/** - * NOTICE:Every tubes display has the same default i2c address. - * if you want to combine two(or more)display in one project,you should change the - * i2c address,by soldering the pad of device's backside. - * please refer to our wiki to get more details. +/** + NOTICE:Every tubes display has the same default i2c address. + if you want to combine two(or more)display in one project,you should change the + i2c address,by soldering the pad of device's backside. + please refer to our wiki to get more details. * */ #define I2C_ADDR_AFTER_CHANGE_FOUR 0x75 #define I2C_ADDR_DEFAULT_FOUR 0x71 -void setup() -{ +void setup() { Wire.begin(); // If using four digital tubes, use this configuration. - tube1.setTubeType(TYPE_4,I2C_ADDR_AFTER_CHANGE_FOUR); + tube1.setTubeType(TYPE_4, I2C_ADDR_AFTER_CHANGE_FOUR); tube1.setBrightness(15); tube1.setBlinkRate(BLINK_OFF); // If using four digital tubes, use this configuration. - tube2.setTubeType(TYPE_4,I2C_ADDR_DEFAULT_FOUR); + tube2.setTubeType(TYPE_4, I2C_ADDR_DEFAULT_FOUR); tube2.setBrightness(15); tube2.setBlinkRate(BLINK_OFF); @@ -35,15 +34,14 @@ void setup() } -void loop() -{ +void loop() { tube1.displayNum(1234); delay(100); tube2.displayNum(5678); delay(100); - while(1); + while (1); } diff --git a/examples/display_basic/display_basic.ino b/examples/display_basic/display_basic.ino index 778e619..1b20a69 100644 --- a/examples/display_basic/display_basic.ino +++ b/examples/display_basic/display_basic.ino @@ -1,68 +1,66 @@ /* - * display_basic.ino - * Example for digital tube. - * - * Copyright (c) 2018 Seeed Technology Co., Ltd. - * Website : www.seeed.cc - * Author : downey - * Create Time: sep. 2018 - * Change Log : - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ + display_basic.ino + Example for digital tube. + + Copyright (c) 2018 Seeed Technology Co., Ltd. + Website : www.seeed.cc + Author : downey + Create Time: sep. 2018 + Change Log : + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include #include "grove_alphanumeric_display.h" Seeed_Digital_Tube tube; -void setup() -{ +void setup() { Wire.begin(); // If using four digital tubes, use this configuration. - tube.setTubeType(TYPE_4,TYPE_4_DEFAULT_I2C_ADDR); + tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); // If using two digital tubes, use this configuration. // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); tube.setBrightness(15); tube.setBlinkRate(BLINK_OFF); - + } -void loop() -{ - +void loop() { + tube.displayNum(12); delay(2000); - tube.displayNum(4567,500); + tube.displayNum(4567, 500); delay(2000); - tube.displayString("AB",500); + tube.displayString("AB", 500); delay(2000); - tube.displayString("abcd",500); + tube.displayString("abcd", 500); delay(2000); - + } \ No newline at end of file diff --git a/examples/display_custom/display_custom.ino b/examples/display_custom/display_custom.ino index 9362638..4f6b5bf 100644 --- a/examples/display_custom/display_custom.ino +++ b/examples/display_custom/display_custom.ino @@ -1,33 +1,33 @@ /* - * display_custom.ino - * Example for digital tube. - * - * Copyright (c) 2018 Seeed Technology Co., Ltd. - * Website : www.seeed.cc - * Author : downey - * Create Time: sep. 2018 - * Change Log : - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ + display_custom.ino + Example for digital tube. + + Copyright (c) 2018 Seeed Technology Co., Ltd. + Website : www.seeed.cc + Author : downey + Create Time: sep. 2018 + Change Log : + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include @@ -36,43 +36,40 @@ Seeed_Digital_Tube tube; -void setup() -{ +void setup() { Wire.begin(); - + // If using two digital tubes, use this configuration. // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); // If using four digital tubes, use this configuration. - tube.setTubeType(TYPE_4,TYPE_4_DEFAULT_I2C_ADDR); - + tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); + tube.setBrightness(15); tube.setBlinkRate(BLINK_1HZ); - - + + } -void displayCustom() -{ +void displayCustom() { tube.clearBuf(); - tube.setTubeSingleChar(FIRST_TUBE,'t'); - tube.setTubeSingleChar(SECOND_TUBE,'T'); + tube.setTubeSingleChar(FIRST_TUBE, 't'); + tube.setTubeSingleChar(SECOND_TUBE, 'T'); //if using two digital tubes,there's no third&fourth channel. - tube.setTubeSingleNum(THIRD_TUBE,5); - tube.setTubeSingleNum(FOURTH_TUBE,5); + tube.setTubeSingleNum(THIRD_TUBE, 5); + tube.setTubeSingleNum(FOURTH_TUBE, 5); // The location of point is different between two&four digital tubes. - tube.setPoint(true,false); + tube.setPoint(true, false); tube.display(); } -void loop() -{ +void loop() { displayCustom(); delay(2000); } \ No newline at end of file diff --git a/examples/display_scroll_number/display_scroll_number.ino b/examples/display_scroll_number/display_scroll_number.ino index 45d4a9b..5d845ef 100644 --- a/examples/display_scroll_number/display_scroll_number.ino +++ b/examples/display_scroll_number/display_scroll_number.ino @@ -1,33 +1,33 @@ /* - * display_scroll_number.ino - * Example for digital tube. - * - * Copyright (c) 2018 Seeed Technology Co., Ltd. - * Website : www.seeed.cc - * Author : downey - * Create Time: sep. 2018 - * Change Log : - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ + display_scroll_number.ino + Example for digital tube. + + Copyright (c) 2018 Seeed Technology Co., Ltd. + Website : www.seeed.cc + Author : downey + Create Time: sep. 2018 + Change Log : + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include #include "grove_alphanumeric_display.h" @@ -36,15 +36,14 @@ Seeed_Digital_Tube tube; -void setup() -{ +void setup() { Wire.begin(); // If using two digital tubes, use this configuration. // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); // If using four digital tubes, use this configuration. - tube.setTubeType(TYPE_4,TYPE_4_DEFAULT_I2C_ADDR); + tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); tube.setBrightness(15); tube.setBlinkRate(BLINK_OFF); @@ -52,8 +51,7 @@ void setup() -void loop() -{ - tube.displayNum(1234567,500); +void loop() { + tube.displayNum(1234567, 500); delay(1000); } \ No newline at end of file diff --git a/examples/display_scroll_string/display_scroll_string.ino b/examples/display_scroll_string/display_scroll_string.ino index 4b9aa45..499530a 100644 --- a/examples/display_scroll_string/display_scroll_string.ino +++ b/examples/display_scroll_string/display_scroll_string.ino @@ -1,33 +1,33 @@ /* - * display_scroll_string.ino - * Driver for digital tube. - * - * Copyright (c) 2018 Seeed Technology Co., Ltd. - * Website : www.seeed.cc - * Author : downey - * Create Time: sep. 2018 - * Change Log : - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ + display_scroll_string.ino + Driver for digital tube. + + Copyright (c) 2018 Seeed Technology Co., Ltd. + Website : www.seeed.cc + Author : downey + Create Time: sep. 2018 + Change Log : + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include #include "grove_alphanumeric_display.h" @@ -35,15 +35,14 @@ Seeed_Digital_Tube tube; -void setup() -{ +void setup() { Wire.begin(); - + // If using two digital tubes, use this configuration. // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); // If using four digital tubes, use this configuration. - tube.setTubeType(TYPE_4,TYPE_4_DEFAULT_I2C_ADDR); + tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); tube.setBrightness(15); tube.setBlinkRate(BLINK_OFF); @@ -51,8 +50,7 @@ void setup() -void loop() -{ - tube.displayString("ABCDEFGHIJK",500); +void loop() { + tube.displayString("ABCDEFGHIJK", 500); delay(1000); } \ No newline at end of file diff --git a/examples/display_specific_segments/display_specific_segments.ino b/examples/display_specific_segments/display_specific_segments.ino index f4a8397..960771e 100644 --- a/examples/display_specific_segments/display_specific_segments.ino +++ b/examples/display_specific_segments/display_specific_segments.ino @@ -1,30 +1,30 @@ /* - display_basic.ino - Example for displaying specific segments on a tube. + display_basic.ino + Example for displaying specific segments on a tube. - Author : dagwoodland - Create Time: Sep 2019 + Author : dagwoodland + Create Time: Sep 2019 - The MIT License (MIT) + The MIT License (MIT) - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. */ #include "Wire.h" @@ -35,20 +35,20 @@ int currentSegment = 0; // The frames of tube 2's animation. uint16_t tubeTwoFrames[] = { - SEGMENT_TOP, - SEGMENT_TOP_LEFT, - SEGMENT_TOP_LEFT_DIAGONAL, - SEGMENT_TOP_VERTICAL, - SEGMENT_TOP_RIGHT_DIAGONAL, - SEGMENT_TOP_RIGHT, - SEGMENT_MIDDLE_LEFT, - SEGMENT_MIDDLE_RIGHT, - SEGMENT_BOTTOM_LEFT, - SEGMENT_BOTTOM_LEFT_DIAGONAL, - SEGMENT_BOTTOM_VERTICAL, - SEGMENT_BOTTOM_RIGHT_DIAGONAL, - SEGMENT_BOTTOM_RIGHT, - SEGMENT_BOTTOM + SEGMENT_TOP, + SEGMENT_TOP_LEFT, + SEGMENT_TOP_LEFT_DIAGONAL, + SEGMENT_TOP_VERTICAL, + SEGMENT_TOP_RIGHT_DIAGONAL, + SEGMENT_TOP_RIGHT, + SEGMENT_MIDDLE_LEFT, + SEGMENT_MIDDLE_RIGHT, + SEGMENT_BOTTOM_LEFT, + SEGMENT_BOTTOM_LEFT_DIAGONAL, + SEGMENT_BOTTOM_VERTICAL, + SEGMENT_BOTTOM_RIGHT_DIAGONAL, + SEGMENT_BOTTOM_RIGHT, + SEGMENT_BOTTOM }; // ----------------------------------------------------------- @@ -61,50 +61,50 @@ uint16_t tubeTwoFrames[] = { Seeed_Digital_Tube tube; void setup() { - // Setup wire using default I2C pins. - Wire.begin(); + // Setup wire using default I2C pins. + Wire.begin(); - // If using four digital tubes, use this configuration. - tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); + // If using four digital tubes, use this configuration. + tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); - // If using two digital tubes, use this configuration. - // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); + // If using two digital tubes, use this configuration. + // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); - tube.setBrightness(15); - tube.setBlinkRate(BLINK_OFF); + tube.setBrightness(15); + tube.setBlinkRate(BLINK_OFF); } // Display the top and bottom segments on the first tube. void displayTubeOne() { - // To display specific segments add together their values. - tube.setTubeSegments(FIRST_TUBE, SEGMENT_TOP + SEGMENT_BOTTOM); + // To display specific segments add together their values. + tube.setTubeSegments(FIRST_TUBE, SEGMENT_TOP + SEGMENT_BOTTOM); } // Display an animation going through all 14 segments in turn. void displayTubeTwo() { - // Increment tube 2's animation frame. - currentSegment += 1; + // Increment tube 2's animation frame. + currentSegment += 1; - // Restart the animation if it has finished. - if (currentSegment >= 14) { - currentSegment = 0; - } + // Restart the animation if it has finished. + if (currentSegment >= 14) { + currentSegment = 0; + } - // Display the current frame of tube 2's animation. - tube.setTubeSegments(SECOND_TUBE, tubeTwoFrames[currentSegment]); + // Display the current frame of tube 2's animation. + tube.setTubeSegments(SECOND_TUBE, tubeTwoFrames[currentSegment]); } void loop() { - // Clear the tube's buffer. Using tube.clearBuf() prevents - // the display blinking because the display is not updated - // until tube.display() is called, unlike tube.clear() - tube.clearBuf(); + // Clear the tube's buffer. Using tube.clearBuf() prevents + // the display blinking because the display is not updated + // until tube.display() is called, unlike tube.clear() + tube.clearBuf(); - displayTubeOne(); - displayTubeTwo(); + displayTubeOne(); + displayTubeTwo(); - // Display the new contents of both tube's buffers. - tube.display(); + // Display the new contents of both tube's buffers. + tube.display(); - delay(200); + delay(200); } diff --git a/examples/number_increment/number_increment.ino b/examples/number_increment/number_increment.ino index 17f0c5a..050b98e 100644 --- a/examples/number_increment/number_increment.ino +++ b/examples/number_increment/number_increment.ino @@ -1,33 +1,33 @@ /* - * number_increment.ino - * Driver for digital tube. - * - * Copyright (c) 2018 Seeed Technology Co., Ltd. - * Website : www.seeed.cc - * Author : downey - * Create Time: sep. 2018 - * Change Log : - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ + number_increment.ino + Driver for digital tube. + + Copyright (c) 2018 Seeed Technology Co., Ltd. + Website : www.seeed.cc + Author : downey + Create Time: sep. 2018 + Change Log : + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include #include "grove_alphanumeric_display.h" @@ -36,51 +36,43 @@ Seeed_Digital_Tube tube; char hex_str[10]; -void setup() -{ +void setup() { Wire.begin(); - + // If using two digital tubes, use this configuration. // tube.setTubeType(TYPE_2,TYPE_2_DEFAULT_I2C_ADDR); // If using four digital tubes, use this configuration. - tube.setTubeType(TYPE_4,TYPE_4_DEFAULT_I2C_ADDR); + tube.setTubeType(TYPE_4, TYPE_4_DEFAULT_I2C_ADDR); tube.setBrightness(15); tube.setBlinkRate(BLINK_OFF); - + } -char* numToHexString(unsigned int num) -{ - if(num <= 0xf){ - sprintf(hex_str,"0%x",num); - for(int i=0;i<2;i++) - { - if(hex_str[i] >= 'a' && hex_str[i] <= 'z') - { - hex_str[i] -=0x20; +char* numToHexString(unsigned int num) { + if (num <= 0xf) { + sprintf(hex_str, "0%x", num); + for (int i = 0; i < 2; i++) { + if (hex_str[i] >= 'a' && hex_str[i] <= 'z') { + hex_str[i] -= 0x20; } } return hex_str; } - sprintf(hex_str,"%x",num); - for(int i=0;i<2;i++) - { - if(hex_str[i] >= 'a' && hex_str[i] <= 'z') - { - hex_str[i] -=0x20; + sprintf(hex_str, "%x", num); + for (int i = 0; i < 2; i++) { + if (hex_str[i] >= 'a' && hex_str[i] <= 'z') { + hex_str[i] -= 0x20; } } return hex_str; } -void loop() -{ - for(int i=0;i<0xff;i++) - { - tube.displayString(numToHexString(i),0); +void loop() { + for (int i = 0; i < 0xff; i++) { + tube.displayString(numToHexString(i), 0); delay(100); } } \ No newline at end of file diff --git a/grove_alphanumeric_display.cpp b/grove_alphanumeric_display.cpp index b026372..a614628 100644 --- a/grove_alphanumeric_display.cpp +++ b/grove_alphanumeric_display.cpp @@ -1,46 +1,46 @@ -/* - * grove_alphanumeric_display.cpp - * A library for Grove - grove_alphanumeric_display - * - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : Jerry Yip - * Create Time: 2018-06 - * Version : 0.1 - * Change Log : - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : downey - * Create Time: 2018-06 - * Version : 1.1 - * Change Log :for digital tube development. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +/* + grove_alphanumeric_display.cpp + A library for Grove - grove_alphanumeric_display + + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : Jerry Yip + Create Time: 2018-06 + Version : 0.1 + Change Log : + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : downey + Create Time: 2018-06 + Version : 1.1 + Change Log :for digital tube development. + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #include "grove_alphanumeric_display.h" #include "Wire.h" -uint16_t g_display_font4[]={ +uint16_t g_display_font4[] = { // 0x0000, // display nothing. 0x0080, // 'upper .' 0x2000, // 'lower .' @@ -86,7 +86,7 @@ uint16_t g_display_font4[]={ #define LAST_ITEM 38 -uint16_t g_display_font2[]={ +uint16_t g_display_font2[] = { // 0x0000, // display nothing. 0x4000, // '.' 0x0000, // '/' display nothing. @@ -129,102 +129,92 @@ uint16_t g_display_font2[]={ 0x0000, // ilegal num }; -uint16_t segments4Tubes[] = {0x10,0x4000,0x80,0x40,0x2,0x2000,0x200,0x100,0x400,0x8,0x1000,0x20,0x4,0x800}; -uint16_t segments2Tubes[] = {0x4,0x40,0x20,0x1,0x8,0x10,0x2,0x1000,0x2000,0x100,0x200,0x8000,0x800,0x400}; +uint16_t segments4Tubes[] = {0x10, 0x4000, 0x80, 0x40, 0x2, 0x2000, 0x200, 0x100, 0x400, 0x8, 0x1000, 0x20, 0x4, 0x800}; +uint16_t segments2Tubes[] = {0x4, 0x40, 0x20, 0x1, 0x8, 0x10, 0x2, 0x1000, 0x2000, 0x100, 0x200, 0x8000, 0x800, 0x400}; + +Seeed_Digital_Tube::Seeed_Digital_Tube() { -Seeed_Digital_Tube::Seeed_Digital_Tube() -{ - _ms = 100; } -void Seeed_Digital_Tube::setTubeType(TubeType_t type,uint8_t addr) -{ +void Seeed_Digital_Tube::setTubeType(TubeType_t type, uint8_t addr) { _type = type; (_type == TYPE_2) ? (_tube_cnt = CNT_2) : (_tube_cnt = CNT_4); - (_type == TYPE_2) ? (disp_font_p = g_display_font2) : (disp_font_p = g_display_font4); + (_type == TYPE_2) ? (disp_font_p = g_display_font2) : (disp_font_p = g_display_font4); HT16K33::init(addr); } -bool Seeed_Digital_Tube::isLegalToDisplay(char byte) -{ - if( !((byte >= '.' && byte <= '9') || (byte >= 'A' && byte <= 'Z') || (byte >= 'a' && byte <= 'z') ) ) +bool Seeed_Digital_Tube::isLegalToDisplay(char byte) { + if (!((byte >= '.' && byte <= '9') || (byte >= 'A' && byte <= 'Z') || (byte >= 'a' && byte <= 'z'))) { return false; + } return true; } -/**@brief Display number,If the param-num's len less than 4(or equal to),The tubes display static number,otherwise,it displays scroll number. - * When it displays scroll number,the param interval is scrolling interval(ms) .. - * @param num the number to display. - * @param interval :the interval of scroll number. +/** @brief Display number,If the param-num's len less than 4(or equal to),The tubes display static number,otherwise,it displays scroll number. + When it displays scroll number,the param interval is scrolling interval(ms) .. + @param num the number to display. + @param interval :the interval of scroll number. * */ -void Seeed_Digital_Tube::displayNum(uint32_t num,uint32_t interval) -{ +void Seeed_Digital_Tube::displayNum(uint32_t num, uint32_t interval) { char num_str[15] = {0}; - sprintf(num_str,"%ld",(uint32_t)num); - displayString(num_str,interval); + sprintf(num_str, "%ld", (uint32_t)num); + displayString(num_str, interval); } -void Seeed_Digital_Tube::shiftDisplay(char *origin_disp_buf,char new_item) -{ +void Seeed_Digital_Tube::shiftDisplay(char* origin_disp_buf, char new_item) { char temp[MAX_TUBE_COUNT] = {0}; - memcpy(temp,&origin_disp_buf[1],_tube_cnt - 1); + memcpy(temp, &origin_disp_buf[1], _tube_cnt - 1); - temp[_tube_cnt-1] = new_item; + temp[_tube_cnt - 1] = new_item; - memcpy(origin_disp_buf,temp,_tube_cnt); + memcpy(origin_disp_buf, temp, _tube_cnt); + + for (int i = 0; i < _tube_cnt; i++) { + setTubeBuf((TubeNum)(i + 1), temp[i]); - for(int i =0;i< _tube_cnt;i++) - { - setTubeBuf((TubeNum)(i+1),temp[i]); - } writeBytes(_addr, 0x00, 16, _buffer); delay(_ms); } -/**@brief Display string,If the param-str's len less than 4(or equal to),The tubes display static string,otherwise,it displays scroll string. - * When it displays scroll string,the param interval is scrolling interval(ms) .. - * @param str the str to display. - * @param interval :the interval of scroll string. +/** @brief Display string,If the param-str's len less than 4(or equal to),The tubes display static string,otherwise,it displays scroll string. + When it displays scroll string,the param interval is scrolling interval(ms) .. + @param str the str to display. + @param interval :the interval of scroll string. * */ -void Seeed_Digital_Tube::displayString(char *str,uint32_t interval) -{ +void Seeed_Digital_Tube::displayString(char* str, uint32_t interval) { int len = 0; clearBuf(); - + len = strlen(str); - - if(_tube_cnt >= len) - { - for(int i=0;i= len) { + for (int i = 0; i < len; i++) { //setTubeBuf((TubeNum)(_tube_cnt-len+i+1),disp_font_p[get_char_index(str[i])]); //Convert number to char; - setTubeBuf((TubeNum)(_tube_cnt-len+i+1),str[i]); //Convert number to char; + setTubeBuf((TubeNum)(_tube_cnt - len + i + 1), str[i]); //Convert number to char; } writeBytes(_addr, 0x00, 16, _buffer); delay(_ms); - } - else - { - if(len > 255 ) len = 255; - char origin_disp_buf[MAX_TUBE_COUNT]={0}; + } else { + if (len > 255) { + len = 255; + } + char origin_disp_buf[MAX_TUBE_COUNT] = {0}; - for(int i=0;i>8; + if (first_dot) { + _buffer[10] |= disp_font_p[0]; + _buffer[11] |= disp_font_p[0] >> 8; } //lower dot control - if(second_dot){ + if (second_dot) { _buffer[10] |= disp_font_p[1]; - _buffer[11] |= disp_font_p[1]>>8; + _buffer[11] |= disp_font_p[1] >> 8; } - } - else if (TYPE_2 == _type) - { - if(first_dot) - _buffer[SECOND_TUBE*2] |= disp_font_p[0] >> 8; - - if(second_dot) - - _buffer[FIRST_TUBE*2] |= disp_font_p[0] >> 8; - } - else{} -} - -void Seeed_Digital_Tube::setTubeSegments(TubeNum tube_num,uint16_t segments) -{ - uint16_t value = 0; - - if( TYPE_4 == _type ) - { - for (int i=0; i<16; i++) { - if (bitRead(segments, i) == 1) { - value += segments4Tubes[i]; - } + } else if (TYPE_2 == _type) { + if (first_dot) { + _buffer[SECOND_TUBE * 2] |= disp_font_p[0] >> 8; } - - _buffer[tube_num*2] = value; - _buffer[tube_num*2+1] = value >> 8; - replace_bit12(tube_num,value&0x02,value&0x04); - } - else if (TYPE_2 == _type) - { - for (int i=0; i<16; i++) { - if (bitRead(segments, i) == 1) { - value += segments2Tubes[i]; - } - } - - // Set tube_num to 1 if it's 2, and 2 if it's 1, so that it's compatible with the hardware. - tube_num = (TubeNum) (((int)tube_num+1) & (~(int)tube_num)); - - _buffer[tube_num*2] = value >> 8; - _buffer[tube_num*2+1] = value; - } -} -void Seeed_Digital_Tube::setTubeBuf(TubeNum tube_num,char byte) -{ - uint16_t value = disp_font_p[get_char_index(byte)]; - - if( TYPE_4 == _type ) - { - + if (second_dot) - _buffer[tube_num*2] = value; - _buffer[tube_num*2+1] = value >> 8; - replace_bit12(tube_num,value&0x02,value&0x04); - } - else if (TYPE_2 == _type) - { - if(false == isLegalToDisplay(byte)) { + _buffer[FIRST_TUBE * 2] |= disp_font_p[0] >> 8; + } + } else {} +} + +void Seeed_Digital_Tube::setTubeSegments(TubeNum tube_num, uint16_t segments) { + uint16_t value = 0; + + if (TYPE_4 == _type) { + for (int i = 0; i < 16; i++) { + if (bitRead(segments, i) == 1) { + value += segments4Tubes[i]; + } + } + + _buffer[tube_num * 2] = value; + _buffer[tube_num * 2 + 1] = value >> 8; + replace_bit12(tube_num, value & 0x02, value & 0x04); + } else if (TYPE_2 == _type) { + for (int i = 0; i < 16; i++) { + if (bitRead(segments, i) == 1) { + value += segments2Tubes[i]; + } + } + + // Set tube_num to 1 if it's 2, and 2 if it's 1, so that it's compatible with the hardware. + tube_num = (TubeNum)(((int)tube_num + 1) & (~(int)tube_num)); + + _buffer[tube_num * 2] = value >> 8; + _buffer[tube_num * 2 + 1] = value; + } +} + +void Seeed_Digital_Tube::setTubeBuf(TubeNum tube_num, char byte) { + uint16_t value = disp_font_p[get_char_index(byte)]; + + if (TYPE_4 == _type) { + + + _buffer[tube_num * 2] = value; + _buffer[tube_num * 2 + 1] = value >> 8; + replace_bit12(tube_num, value & 0x02, value & 0x04); + } else if (TYPE_2 == _type) { + if (false == isLegalToDisplay(byte)) { byte = '/'; } //if first,set to 2,if second ,set to 1. To compatible with the hardware. - tube_num = (TubeNum) (((int)tube_num+1) & (~(int)tube_num)); - - if(byte >= 'a' && byte <= 'z') - { + tube_num = (TubeNum)(((int)tube_num + 1) & (~(int)tube_num)); + + if (byte >= 'a' && byte <= 'z') { byte -= 32; } - if((byte >='.' && byte <= '9')) - { - _buffer[tube_num*2] = disp_font_p[byte-'0'+2] >> 8; - _buffer[tube_num*2+1] = disp_font_p[byte-'0'+2]; - } - else - { - _buffer[tube_num*2] = disp_font_p[byte-'A'+10+2] >> 8; - _buffer[tube_num*2+1] = disp_font_p[byte-'A'+10+2]; + if ((byte >= '.' && byte <= '9')) { + _buffer[tube_num * 2] = disp_font_p[byte - '0' + 2] >> 8; + _buffer[tube_num * 2 + 1] = disp_font_p[byte - '0' + 2]; + } else { + _buffer[tube_num * 2] = disp_font_p[byte - 'A' + 10 + 2] >> 8; + _buffer[tube_num * 2 + 1] = disp_font_p[byte - 'A' + 10 + 2]; } } - + } -/**@brief Specify the display char of a digital tube. - * @param tube_num The number of tube ,total 4. - * @param c ,The char to display +/** @brief Specify the display char of a digital tube. + @param tube_num The number of tube ,total 4. + @param c ,The char to display * */ -void Seeed_Digital_Tube::setTubeSingleChar(TubeNum tube_num,char c) -{ - if(!( ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || (c=='.') ) ) - { +void Seeed_Digital_Tube::setTubeSingleChar(TubeNum tube_num, char c) { + if (!(((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || (c == '.'))) { return ; } - if( TYPE_4 == _type ) - { - setTubeBuf(tube_num , c); - } - else if (TYPE_2 == _type) - { - if(tube_num > SECOND_TUBE) + if (TYPE_4 == _type) { + setTubeBuf(tube_num, c); + } else if (TYPE_2 == _type) { + if (tube_num > SECOND_TUBE) { return; + } - setTubeBuf(tube_num ,c); - } - else - { + setTubeBuf(tube_num, c); + } else { } } -/**@brief Specify the display number of a digital tube. - * @param tube_num The number of tube ,total 4. - * @param num ,The number to display +/** @brief Specify the display number of a digital tube. + @param tube_num The number of tube ,total 4. + @param num ,The number to display * */ -void Seeed_Digital_Tube::setTubeSingleNum(TubeNum tube_num,char num) -{ - if( !((num >= 0) && (num <= 9)) ) +void Seeed_Digital_Tube::setTubeSingleNum(TubeNum tube_num, char num) { + if (!((num >= 0) && (num <= 9))) { return ; - if( TYPE_4 == _type ) - { - setTubeBuf(tube_num , num + 0x30); } - else if (TYPE_2 == _type) - { - if(tube_num > SECOND_TUBE) + if (TYPE_4 == _type) { + setTubeBuf(tube_num, num + 0x30); + } else if (TYPE_2 == _type) { + if (tube_num > SECOND_TUBE) { return; + } - setTubeBuf(tube_num ,num + 0x30); + setTubeBuf(tube_num, num + 0x30); + } else { } - else - { - } - + } -void Seeed_Digital_Tube::display_one_tube(TubeNum tube_num,uint16_t value) -{ - _buffer[tube_num*2] = value; - _buffer[tube_num*2+1] = value >> 8; - replace_bit12(tube_num,value&0x02,value&0x04); +void Seeed_Digital_Tube::display_one_tube(TubeNum tube_num, uint16_t value) { + _buffer[tube_num * 2] = value; + _buffer[tube_num * 2 + 1] = value >> 8; + replace_bit12(tube_num, value & 0x02, value & 0x04); writeBytes(_addr, 0x00, 16, _buffer); delay(_ms); } -void Seeed_Digital_Tube::clearBuf() -{ - memset(_buffer,0,sizeof(_buffer)); +void Seeed_Digital_Tube::clearBuf() { + memset(_buffer, 0, sizeof(_buffer)); } -int Seeed_Digital_Tube::get_char_index(char c) -{ - if((c >= '0') && (c <= '9')) - { - return c-0x30+2; - } - else if((c >= 'A') && (c <= 'Z')) - { - return c-0x37+2; - } - else if((c >= 'a') && (c <= 'z')) - { - return c-0x57+2; - } - else - { +int Seeed_Digital_Tube::get_char_index(char c) { + if ((c >= '0') && (c <= '9')) { + return c - 0x30 + 2; + } else if ((c >= 'A') && (c <= 'Z')) { + return c - 0x37 + 2; + } else if ((c >= 'a') && (c <= 'z')) { + return c - 0x57 + 2; + } else { return LAST_ITEM; } } -void Seeed_Digital_Tube::display() -{ +void Seeed_Digital_Tube::display() { writeBytes(_addr, 0x00, 16, _buffer); delay(_ms); } diff --git a/grove_alphanumeric_display.h b/grove_alphanumeric_display.h index b45e6c8..126eb5e 100644 --- a/grove_alphanumeric_display.h +++ b/grove_alphanumeric_display.h @@ -1,40 +1,40 @@ -/* - * grove_alphanumeric_display.h - * A library for Grove - grove_alphanumeric_display - * - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : Jerry Yip - * Create Time: 2018-06 - * Version : 0.1 - * Change Log : - * Copyright (c) 2018 seeed technology inc. - * Website : www.seeed.cc - * Author : downey - * Create Time: 2018-06 - * Version : 1.1 - * Change Log :for digital tube development. - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +/* + grove_alphanumeric_display.h + A library for Grove - grove_alphanumeric_display + + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : Jerry Yip + Create Time: 2018-06 + Version : 0.1 + Change Log : + Copyright (c) 2018 seeed technology inc. + Website : www.seeed.cc + Author : downey + Create Time: 2018-06 + Version : 1.1 + Change Log :for digital tube development. + + The MIT License (MIT) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ #ifndef __GROVE_QUAD_ALPHANUMERIC_DISPLAY_H__ #define __GROVE_QUAD_ALPHANUMERIC_DISPLAY_H__ @@ -47,7 +47,7 @@ #define TYPE_4_DEFAULT_I2C_ADDR 0x71 #define TYPE_2_DEFAULT_I2C_ADDR 0x70 -#define MAX_BIG_BUFFER_SIZE (8*20) +#define MAX_BIG_BUFFER_SIZE (8*20) #define MAX_TUBE_COUNT 4 @@ -83,95 +83,94 @@ #define SEG_BRD 0x1000 #define SEG_BV 0x2000 -typedef enum -{ +typedef enum { FIRST_TUBE = 1, SECOND_TUBE, THIRD_TUBE, FOURTH_TUBE, -}TubeNum; +} TubeNum; -typedef enum{ +typedef enum { TYPE_2, TYPE_4, -}TubeType_t; +} TubeType_t; -typedef enum{ +typedef enum { CNT_2 = 2, CNT_4 = 4, -}TubeCnt_t; +} TubeCnt_t; class Seeed_Digital_Tube : public HT16K33 { -public: + public: Seeed_Digital_Tube(); - void setTubeType(TubeType_t type,uint8_t addr = TYPE_2_DEFAULT_I2C_ADDR); + void setTubeType(TubeType_t type, uint8_t addr = TYPE_2_DEFAULT_I2C_ADDR); void clear(); - /**@brief Display number,If the param-num's len less than count of tubes(2 or 4),The tubes display static number,otherwise,it displays scroll number. - * When it displays scroll number,the param interval is scrolling interval(ms) .. - * @param num the number to display. - * @param interval :the interval of scroll number. + /** @brief Display number,If the param-num's len less than count of tubes(2 or 4),The tubes display static number,otherwise,it displays scroll number. + When it displays scroll number,the param interval is scrolling interval(ms) .. + @param num the number to display. + @param interval :the interval of scroll number. * */ - void displayNum(uint32_t num,uint32_t interval = 0); + void displayNum(uint32_t num, uint32_t interval = 0); - /**@brief Display string,If the param-str's len less than count of tube(2 or 4),The tubes display static string,otherwise,it displays scroll string. - * When it displays scroll string,the param interval is scrolling interval(ms) .. - * @param str the str to display. - * @param interval :the interval of scroll string. + /** @brief Display string,If the param-str's len less than count of tube(2 or 4),The tubes display static string,otherwise,it displays scroll string. + When it displays scroll string,the param interval is scrolling interval(ms) .. + @param str the str to display. + @param interval :the interval of scroll string. * */ - void displayString(char *str,uint32_t interval = 0); - /**@brief Display all part of digital tube. - * + void displayString(char* str, uint32_t interval = 0); + /** @brief Display all part of digital tube. + * */ void fulDisplay(); - - /**@brief Clear _buffer,just clear. - * + + /** @brief Clear _buffer,just clear. + * */ void clearBuf(); - - - /**@brief Display the contents of _buffer. - * + + + /** @brief Display the contents of _buffer. + * */ void display(); - /**@brief Specify the display char of a digital tube. - * @param tube_num The number of tube ,depend on the device you are using (max : 2 or 4). - * @param num ,The number to display + /** @brief Specify the display char of a digital tube. + @param tube_num The number of tube ,depend on the device you are using (max : 2 or 4). + @param num ,The number to display * */ - void setTubeSingleChar(TubeNum tube_num,char c); + void setTubeSingleChar(TubeNum tube_num, char c); - /**@brief Specify the display number of a digital tube. - * @param tube_num The number of tube ,depend on the device you are using ( max : 2 or 4). - * @param num ,The number to display + /** @brief Specify the display number of a digital tube. + @param tube_num The number of tube ,depend on the device you are using ( max : 2 or 4). + @param num ,The number to display * */ - void setTubeSingleNum(TubeNum tube_num,char num); + void setTubeSingleNum(TubeNum tube_num, char num); - /**@brief Set two points status. - * @prarm upper_on if true,the first point light on ,otherwise turn off; - * @prarm lower_on if true,the second point light on ,otherwise turn off; + /** @brief Set two points status. + @prarm upper_on if true,the first point light on ,otherwise turn off; + @prarm lower_on if true,the second point light on ,otherwise turn off; * */ - void setPoint(bool first_dot,bool second_dot); - - /**@brief Set the values of tube_num's segments. - * @param tube_num The number of tube, depending on the device you are using (2 or 4). - * @prarm segments The segments that should be turned on. + void setPoint(bool first_dot, bool second_dot); + + /** @brief Set the values of tube_num's segments. + @param tube_num The number of tube, depending on the device you are using (2 or 4). + @prarm segments The segments that should be turned on. * */ - void setTubeSegments(TubeNum tube_num,uint16_t segments); - -private: - void display_one_tube(TubeNum tube_num,uint16_t value); - void replace_bit12(TubeNum tube_num,bool bit1,bool bit2); - void setTubeBuf(TubeNum tube_num,char byte); + void setTubeSegments(TubeNum tube_num, uint16_t segments); + + private: + void display_one_tube(TubeNum tube_num, uint16_t value); + void replace_bit12(TubeNum tube_num, bool bit1, bool bit2); + void setTubeBuf(TubeNum tube_num, char byte); int get_char_index(char c); - void shiftDisplay(char *origin_disp_buf,char new_item); + void shiftDisplay(char* origin_disp_buf, char new_item); // Low1 High1 Low2 High2 ... Low8 High8 - uint8_t _buffer[16]; + uint8_t _buffer[16]; //uint8_t _big_buffer[MAX_BIG_BUFFER_SIZE]; //uint16_t _cursor_start, _cursor_end, _cursor_steps; uint16_t _ms; @@ -179,10 +178,10 @@ private: //int8_t _offset_x, _offset_y; bool isLegalToDisplay(char byte); - TubeType_t _type; + TubeType_t _type; TubeCnt_t _tube_cnt; - uint16_t *disp_font_p; - + uint16_t* disp_font_p; + }; #endif //__GROVE_LED_MATRIX_DRIVER_HT16K33__ \ No newline at end of file