Arnaud Apelbaum / Mbed OS Led_circle

Dependencies:   lcd neoPixelRing12 view2 BSP_DISCO_F746NG view1 button

Committer:
Rhamao
Date:
Thu Jun 04 23:35:29 2020 +0000
Revision:
7:1887c4e4b5de
Creation de la lib pour controler les LEDs par code RGB

Who changed what in which revision?

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