Interfaçage NeoPixel Ring 12, LPRO MECSE, Arnaud A.

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?

UserRevisionLine numberNew 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