Interfaçage NeoPixel Ring 12, LPRO MECSE, Arnaud A.
neoPixelRing12.cpp@0:754bf033bd47, 2020-06-17 (annotated)
- Committer:
- Rhamao
- Date:
- Wed Jun 17 16:33:48 2020 +0000
- Revision:
- 0:754bf033bd47
- Child:
- 1:76fb4b762ab1
View1 finie;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhamao | 0:754bf033bd47 | 1 | #include "neoPixelRing12.h" |
Rhamao | 0:754bf033bd47 | 2 | #include "mbed.h" |
Rhamao | 0:754bf033bd47 | 3 | #include "string.h" |
Rhamao | 0:754bf033bd47 | 4 | |
Rhamao | 0:754bf033bd47 | 5 | NeoPixelRing12::NeoPixelRing12(DigitalOut _digitalOutPin):digitalOutPin(_digitalOutPin) |
Rhamao | 0:754bf033bd47 | 6 | { |
Rhamao | 0:754bf033bd47 | 7 | } |
Rhamao | 0:754bf033bd47 | 8 | |
Rhamao | 0:754bf033bd47 | 9 | bool NeoPixelRing12::rst( ) |
Rhamao | 0:754bf033bd47 | 10 | { |
Rhamao | 0:754bf033bd47 | 11 | digitalOutPin=0; |
Rhamao | 0:754bf033bd47 | 12 | wait_us(RST_TIME_IN_US); |
Rhamao | 0:754bf033bd47 | 13 | return true; |
Rhamao | 0:754bf033bd47 | 14 | } |
Rhamao | 0:754bf033bd47 | 15 | |
Rhamao | 0:754bf033bd47 | 16 | bool NeoPixelRing12::rgbToDataStructure(char* rgbCode){ |
Rhamao | 0:754bf033bd47 | 17 | uint8_t i = 0; |
Rhamao | 0:754bf033bd47 | 18 | uint8_t offset = 0; |
Rhamao | 0:754bf033bd47 | 19 | |
Rhamao | 0:754bf033bd47 | 20 | //Red |
Rhamao | 0:754bf033bd47 | 21 | for (i=0; i<6; i++) { |
Rhamao | 0:754bf033bd47 | 22 | if(i==0) |
Rhamao | 0:754bf033bd47 | 23 | offset=11; |
Rhamao | 0:754bf033bd47 | 24 | if(i==1) |
Rhamao | 0:754bf033bd47 | 25 | offset=15; |
Rhamao | 0:754bf033bd47 | 26 | if(i==2) |
Rhamao | 0:754bf033bd47 | 27 | offset=3; |
Rhamao | 0:754bf033bd47 | 28 | if(i==3) |
Rhamao | 0:754bf033bd47 | 29 | offset=7; |
Rhamao | 0:754bf033bd47 | 30 | if(i==4) |
Rhamao | 0:754bf033bd47 | 31 | offset=19; |
Rhamao | 0:754bf033bd47 | 32 | if(i==5) |
Rhamao | 0:754bf033bd47 | 33 | offset=23; |
Rhamao | 0:754bf033bd47 | 34 | switch (rgbCode[i]) { |
Rhamao | 0:754bf033bd47 | 35 | case '0': |
Rhamao | 0:754bf033bd47 | 36 | //////////cout << "0000"; |
Rhamao | 0:754bf033bd47 | 37 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 38 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 39 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 40 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 41 | break; |
Rhamao | 0:754bf033bd47 | 42 | case '1': |
Rhamao | 0:754bf033bd47 | 43 | ////////////////////cout << "0001"; |
Rhamao | 0:754bf033bd47 | 44 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 45 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 46 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 47 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 48 | break; |
Rhamao | 0:754bf033bd47 | 49 | case '2': |
Rhamao | 0:754bf033bd47 | 50 | ////////cout << "0010"; |
Rhamao | 0:754bf033bd47 | 51 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 52 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 53 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 54 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 55 | break; |
Rhamao | 0:754bf033bd47 | 56 | case '3': |
Rhamao | 0:754bf033bd47 | 57 | ////////cout << "0011"; |
Rhamao | 0:754bf033bd47 | 58 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 59 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 60 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 61 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 62 | break; |
Rhamao | 0:754bf033bd47 | 63 | case '4': |
Rhamao | 0:754bf033bd47 | 64 | ////////cout << "0100"; |
Rhamao | 0:754bf033bd47 | 65 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 66 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 67 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 68 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 69 | break; |
Rhamao | 0:754bf033bd47 | 70 | case '5': |
Rhamao | 0:754bf033bd47 | 71 | ////////cout << "0101"; |
Rhamao | 0:754bf033bd47 | 72 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 73 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 74 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 75 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 76 | break; |
Rhamao | 0:754bf033bd47 | 77 | case '6': |
Rhamao | 0:754bf033bd47 | 78 | ////////cout << "0110"; |
Rhamao | 0:754bf033bd47 | 79 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 80 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 81 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 82 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 83 | break; |
Rhamao | 0:754bf033bd47 | 84 | case '7': |
Rhamao | 0:754bf033bd47 | 85 | ////////cout << "0111"; |
Rhamao | 0:754bf033bd47 | 86 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 87 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 88 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 89 | rgbDataStructure[offset-3]=false; |
Rhamao | 0:754bf033bd47 | 90 | break; |
Rhamao | 0:754bf033bd47 | 91 | case '8': |
Rhamao | 0:754bf033bd47 | 92 | ////////cout << "1000"; |
Rhamao | 0:754bf033bd47 | 93 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 94 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 95 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 96 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 97 | break; |
Rhamao | 0:754bf033bd47 | 98 | case '9': |
Rhamao | 0:754bf033bd47 | 99 | ////////cout << "1001"; |
Rhamao | 0:754bf033bd47 | 100 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 101 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 102 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 103 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 104 | break; |
Rhamao | 0:754bf033bd47 | 105 | case 'A': |
Rhamao | 0:754bf033bd47 | 106 | case 'a': |
Rhamao | 0:754bf033bd47 | 107 | ////////cout << "1010"; |
Rhamao | 0:754bf033bd47 | 108 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 109 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 110 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 111 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 112 | break; |
Rhamao | 0:754bf033bd47 | 113 | case 'B': |
Rhamao | 0:754bf033bd47 | 114 | case 'b': |
Rhamao | 0:754bf033bd47 | 115 | ////////cout << "1011"; |
Rhamao | 0:754bf033bd47 | 116 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 117 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 118 | rgbDataStructure[offset-2]=false; |
Rhamao | 0:754bf033bd47 | 119 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 120 | break; |
Rhamao | 0:754bf033bd47 | 121 | case 'C': |
Rhamao | 0:754bf033bd47 | 122 | case 'c': |
Rhamao | 0:754bf033bd47 | 123 | ////////cout << "1100"; |
Rhamao | 0:754bf033bd47 | 124 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 125 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 126 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 127 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 128 | break; |
Rhamao | 0:754bf033bd47 | 129 | case 'D': |
Rhamao | 0:754bf033bd47 | 130 | case 'd': |
Rhamao | 0:754bf033bd47 | 131 | ////////cout << "1101"; |
Rhamao | 0:754bf033bd47 | 132 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 133 | rgbDataStructure[offset-1]=false; |
Rhamao | 0:754bf033bd47 | 134 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 135 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 136 | break; |
Rhamao | 0:754bf033bd47 | 137 | case 'E': |
Rhamao | 0:754bf033bd47 | 138 | case 'e': |
Rhamao | 0:754bf033bd47 | 139 | ////////cout << "1110"; |
Rhamao | 0:754bf033bd47 | 140 | rgbDataStructure[offset]=false; |
Rhamao | 0:754bf033bd47 | 141 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 142 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 143 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 144 | break; |
Rhamao | 0:754bf033bd47 | 145 | case 'F': |
Rhamao | 0:754bf033bd47 | 146 | case 'f': |
Rhamao | 0:754bf033bd47 | 147 | ////////cout << "1111"; |
Rhamao | 0:754bf033bd47 | 148 | rgbDataStructure[offset]=true; |
Rhamao | 0:754bf033bd47 | 149 | rgbDataStructure[offset-1]=true; |
Rhamao | 0:754bf033bd47 | 150 | rgbDataStructure[offset-2]=true; |
Rhamao | 0:754bf033bd47 | 151 | rgbDataStructure[offset-3]=true; |
Rhamao | 0:754bf033bd47 | 152 | break; |
Rhamao | 0:754bf033bd47 | 153 | default: |
Rhamao | 0:754bf033bd47 | 154 | return false; |
Rhamao | 0:754bf033bd47 | 155 | } |
Rhamao | 0:754bf033bd47 | 156 | } |
Rhamao | 0:754bf033bd47 | 157 | return true; |
Rhamao | 0:754bf033bd47 | 158 | } |
Rhamao | 0:754bf033bd47 | 159 | |
Rhamao | 0:754bf033bd47 | 160 | bool NeoPixelRing12::bit(bool value){ |
Rhamao | 0:754bf033bd47 | 161 | if(!value){ |
Rhamao | 0:754bf033bd47 | 162 | digitalOutPin = 1; |
Rhamao | 0:754bf033bd47 | 163 | wait_ns(190); |
Rhamao | 0:754bf033bd47 | 164 | digitalOutPin = 0; |
Rhamao | 0:754bf033bd47 | 165 | wait_ns(740); |
Rhamao | 0:754bf033bd47 | 166 | } |
Rhamao | 0:754bf033bd47 | 167 | else{ |
Rhamao | 0:754bf033bd47 | 168 | digitalOutPin = 1; |
Rhamao | 0:754bf033bd47 | 169 | wait_ns(600); |
Rhamao | 0:754bf033bd47 | 170 | digitalOutPin = 0; |
Rhamao | 0:754bf033bd47 | 171 | wait_ns(600); |
Rhamao | 0:754bf033bd47 | 172 | } |
Rhamao | 0:754bf033bd47 | 173 | return true; |
Rhamao | 0:754bf033bd47 | 174 | } |
Rhamao | 0:754bf033bd47 | 175 | |
Rhamao | 0:754bf033bd47 | 176 | bool NeoPixelRing12::setLights(int nbOfLeds, char* rgbCode){ |
Rhamao | 0:754bf033bd47 | 177 | rgbToDataStructure(rgbCode); |
Rhamao | 0:754bf033bd47 | 178 | for(int i=0; i<nbOfLeds; i++){ |
Rhamao | 0:754bf033bd47 | 179 | for(int y=0; y<24; y++){ |
Rhamao | 0:754bf033bd47 | 180 | bit(rgbDataStructure[y]); |
Rhamao | 0:754bf033bd47 | 181 | } |
Rhamao | 0:754bf033bd47 | 182 | } |
Rhamao | 0:754bf033bd47 | 183 | return true; |
Rhamao | 0:754bf033bd47 | 184 | } |
Rhamao | 0:754bf033bd47 | 185 | |
Rhamao | 0:754bf033bd47 | 186 |