dujardin stephane
/
duj401_projets
projets de S3 S4 année 21 22
LED2.h@8:cfcf73c16fab, 2021-08-25 (annotated)
- Committer:
- dujardin
- Date:
- Wed Aug 25 09:54:24 2021 +0000
- Revision:
- 8:cfcf73c16fab
- Parent:
- 6:edb27e228558
projets de S3 S4; version de base
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dujardin | 8:cfcf73c16fab | 1 | // Rassurez vous, VOUS n'avez pas a changer ces lignes de commandes |
dujardin | 8:cfcf73c16fab | 2 | |
dujardin | 6:edb27e228558 | 3 | // variables propres Affichage vers led en 16 bandes |
dujardin | 6:edb27e228558 | 4 | int AL ; int AP ; int AT ; // Affichae AL ligne AP pix AT temps |
dujardin | 6:edb27e228558 | 5 | int g1 ; int g2 ; int g3 ; int g4 ; // durée des 4 temps d'allumage |
dujardin | 6:edb27e228558 | 6 | char mm ; |
dujardin | 6:edb27e228558 | 7 | char T[64][16][3]; // Tableau à afficher format R1R2V1V2B1B2 en 4 temps |
dujardin | 6:edb27e228558 | 8 | // variables propres pix vers T en P dans 16 bandes |
dujardin | 6:edb27e228558 | 9 | int PL ; int PP ; int PT ; // position PL ligne AP pix AT temps |
dujardin | 6:edb27e228558 | 10 | int pB ; // pB 0 ou 1 bande |
dujardin | 6:edb27e228558 | 11 | char T0 ; char T1 ; char T2 ; char T3; // recup tab 0 1 2 3 |
dujardin | 6:edb27e228558 | 12 | int ZL ; int ZP ; int ZT ; // position PL ligne AP pix AT temps |
dujardin | 6:edb27e228558 | 13 | |
dujardin | 6:edb27e228558 | 14 | // variables liées à l'acceleromètre |
dujardin | 6:edb27e228558 | 15 | int acx1; int acx2; int acx3 ; int acx4; |
dujardin | 6:edb27e228558 | 16 | int acy1; int acy2; int acy3 ; int acy4; |
dujardin | 6:edb27e228558 | 17 | float xin; float yin; // lecture accelero |
dujardin | 6:edb27e228558 | 18 | |
dujardin | 6:edb27e228558 | 19 | void accel(void) |
dujardin | 6:edb27e228558 | 20 | { |
dujardin | 6:edb27e228558 | 21 | yin = canx.read(); xin= cany.read(); // lire accéléro |
dujardin | 6:edb27e228558 | 22 | acx4 = acx3 ; acx3 = acx2 ; acx2 = acx1 ; |
dujardin | 6:edb27e228558 | 23 | acy4 = acy3 ; acy3 = acy2 ; acy2 = acy1 ; |
dujardin | 6:edb27e228558 | 24 | acx1 = xin * 150-75; |
dujardin | 6:edb27e228558 | 25 | acy1 = yin * 150 - 75 ; // + calculs |
dujardin | 8:cfcf73c16fab | 26 | accx = ( acx1 + acx2 + acx3 + acx4) ; |
dujardin | 8:cfcf73c16fab | 27 | accy = ( acy1 + acy2 + acy3 + acy4) ; |
dujardin | 6:edb27e228558 | 28 | ccx = ( acx1 + acx2 + acx3 + acx4)/4 ; |
dujardin | 6:edb27e228558 | 29 | ccy = ( acy1 + acy2 + acy3 + acy4)/4 ; |
dujardin | 6:edb27e228558 | 30 | } |
dujardin | 6:edb27e228558 | 31 | |
dujardin | 8:cfcf73c16fab | 32 | |
dujardin | 6:edb27e228558 | 33 | void Tr2 () // T reset |
dujardin | 6:edb27e228558 | 34 | {// efface tableau T led faire en x16 |
dujardin | 6:edb27e228558 | 35 | for ( ZL = 0 ; ZL < 16 ; ZL++ ) |
dujardin | 6:edb27e228558 | 36 | { |
dujardin | 6:edb27e228558 | 37 | for ( ZT = 0 ; ZT < 3 ; ZT++ ) |
dujardin | 6:edb27e228558 | 38 | { |
dujardin | 6:edb27e228558 | 39 | for ( ZP = 0 ; ZP < 64 ; ZP++) T[ZP][ZL][ZT] = 0 ; |
dujardin | 6:edb27e228558 | 40 | } |
dujardin | 6:edb27e228558 | 41 | } |
dujardin | 6:edb27e228558 | 42 | } |
dujardin | 6:edb27e228558 | 43 | |
dujardin | 6:edb27e228558 | 44 | |
dujardin | 6:edb27e228558 | 45 | void pix( int X, int Y , char cr , char cv , char cb ) |
dujardin | 6:edb27e228558 | 46 | { // place un pixel RVB dans I en 64/32 max x y 0 normal |
dujardin | 6:edb27e228558 | 47 | |
dujardin | 6:edb27e228558 | 48 | if ( X < 0 ) X = 0; // limites avant usage |
dujardin | 6:edb27e228558 | 49 | if ( Y < 0 ) Y = 0; |
dujardin | 6:edb27e228558 | 50 | if ( X > 63 ) X = 63; |
dujardin | 6:edb27e228558 | 51 | if ( Y > 31 ) Y = 31; |
dujardin | 6:edb27e228558 | 52 | if ( cr > 7 ) cr = 7; // max 7 niveaux de puissance |
dujardin | 6:edb27e228558 | 53 | if ( cv > 7 ) cv = 7; |
dujardin | 6:edb27e228558 | 54 | if ( cb > 7 ) cb = 7; |
dujardin | 6:edb27e228558 | 55 | //calcul position PL et PP dans bande de 64 T[PP][PL][AT] |
dujardin | 6:edb27e228558 | 56 | PP = X ; |
dujardin | 6:edb27e228558 | 57 | pB = 0 ; |
dujardin | 6:edb27e228558 | 58 | PL = Y ; |
dujardin | 6:edb27e228558 | 59 | if (Y > 15 ) {PP = X-1 ; pB = 1 ;} |
dujardin | 6:edb27e228558 | 60 | |
dujardin | 6:edb27e228558 | 61 | |
dujardin | 6:edb27e228558 | 62 | T0= T[PP][PL][0]; T1= T[PP][PL][1]; T2 =T[PP][PL][2] ; |
dujardin | 6:edb27e228558 | 63 | if ( pB ==1 ) |
dujardin | 6:edb27e228558 | 64 | { |
dujardin | 6:edb27e228558 | 65 | T0 = T0 & 62 ; // b0 = 0 |
dujardin | 6:edb27e228558 | 66 | if ( ( cb & 1 ) == 1 ) T0 = T0 + 1; // mis a 1 |
dujardin | 6:edb27e228558 | 67 | T0 = T0 & 59 ; // v0 = 0 |
dujardin | 6:edb27e228558 | 68 | if ( ( cv & 1 ) == 1 ) T0 = T0 + 4; // mis a 1 |
dujardin | 6:edb27e228558 | 69 | T0 = T0 & 47 ; // r0 = 0 |
dujardin | 6:edb27e228558 | 70 | if ( ( cr & 1 ) == 1 ) T0 = T0 + 16; // mis a 1 |
dujardin | 6:edb27e228558 | 71 | T[PP][PL][0] = T0; // retour dedans |
dujardin | 6:edb27e228558 | 72 | |
dujardin | 6:edb27e228558 | 73 | T1 = T1 & 62 ; // b0 = 0 |
dujardin | 6:edb27e228558 | 74 | if ( ( cb & 2 ) == 2 ) T1 = T1 + 1; // mis a 1 |
dujardin | 6:edb27e228558 | 75 | T1 = T1 & 59 ; // v0 = 0 |
dujardin | 6:edb27e228558 | 76 | if ( ( cv & 2 ) == 2 ) T1 = T1 + 4; // mis a 1 |
dujardin | 6:edb27e228558 | 77 | T1 = T1 & 47 ; // r0 = 0 |
dujardin | 6:edb27e228558 | 78 | if ( ( cr & 2 ) == 2 ) T1 = T1 + 16; // mis a 1 |
dujardin | 6:edb27e228558 | 79 | T[PP][PL][1] = T1; // retour dedans |
dujardin | 6:edb27e228558 | 80 | |
dujardin | 6:edb27e228558 | 81 | T2 = T2 & 62 ; // b0 = 0 |
dujardin | 6:edb27e228558 | 82 | if ( ( cb & 4 ) == 4 ) T2 = T2 + 1; // mis a 1 |
dujardin | 6:edb27e228558 | 83 | T2 = T2 & 59 ; // v0 = 0 |
dujardin | 6:edb27e228558 | 84 | if ( ( cv & 4 ) == 4 ) T2 = T2 + 4; // mis a 1 |
dujardin | 6:edb27e228558 | 85 | T2 = T2 & 47 ; // r0 = 0 |
dujardin | 6:edb27e228558 | 86 | if ( ( cr & 4 ) == 4 ) T2 = T2 + 16; // mis a 1 |
dujardin | 6:edb27e228558 | 87 | T[PP][PL][2] = T2; // retour dedans |
dujardin | 6:edb27e228558 | 88 | } |
dujardin | 6:edb27e228558 | 89 | |
dujardin | 6:edb27e228558 | 90 | if ( pB ==0) |
dujardin | 6:edb27e228558 | 91 | { |
dujardin | 6:edb27e228558 | 92 | T0 = T0 & 61 ; // b0 = 0 |
dujardin | 6:edb27e228558 | 93 | if ( ( cb & 1 ) == 1 ) T0 = T0 + 2; // mis a 1 |
dujardin | 6:edb27e228558 | 94 | T0 = T0 & 55 ; // v0 = 0 |
dujardin | 6:edb27e228558 | 95 | if ( ( cv & 1 ) == 1 ) T0 = T0 + 8; // mis a 1 |
dujardin | 6:edb27e228558 | 96 | T0 = T0 & 31 ; // r0 = 0 |
dujardin | 6:edb27e228558 | 97 | if ( ( cr & 1 ) == 1 ) T0 = T0 + 32; // mis a 1 |
dujardin | 6:edb27e228558 | 98 | T[PP][PL][0] = T0; // retour dedans |
dujardin | 6:edb27e228558 | 99 | |
dujardin | 6:edb27e228558 | 100 | T1 = T1 & 61 ; // b0 = 0 |
dujardin | 6:edb27e228558 | 101 | if ( ( cb & 2 ) == 2 ) T1 = T1 + 2; // mis a 1 |
dujardin | 6:edb27e228558 | 102 | T1 = T1 & 55 ; // v0 = 0 |
dujardin | 6:edb27e228558 | 103 | if ( ( cv & 2 ) == 2 ) T1 = T1 + 8; // mis a 1 |
dujardin | 6:edb27e228558 | 104 | T1 = T1 & 31 ; // r0 = 0 |
dujardin | 6:edb27e228558 | 105 | if ( ( cr & 2 ) == 2 ) T1 = T1 + 32; // mis a 1 |
dujardin | 6:edb27e228558 | 106 | T[PP][PL][1] = T1; // retour dedans |
dujardin | 6:edb27e228558 | 107 | |
dujardin | 6:edb27e228558 | 108 | T2 = T2 & 61 ; // b0 = 0 |
dujardin | 6:edb27e228558 | 109 | if ( ( cb & 4 ) == 4 ) T2 = T2 + 2; // mis a 1 |
dujardin | 6:edb27e228558 | 110 | T2 = T2 & 55 ; // v0 = 0 |
dujardin | 6:edb27e228558 | 111 | if ( ( cv & 4 ) == 4 ) T2 = T2 + 8; // mis a 1 |
dujardin | 6:edb27e228558 | 112 | T2 = T2 & 31 ; // r0 = 0 |
dujardin | 6:edb27e228558 | 113 | if ( ( cr & 4 ) == 4 ) T2 = T2 + 32; // mis a 1 |
dujardin | 6:edb27e228558 | 114 | T[PP][PL][2] = T2; // retour dedans |
dujardin | 6:edb27e228558 | 115 | } |
dujardin | 6:edb27e228558 | 116 | } |
dujardin | 6:edb27e228558 | 117 | |
dujardin | 6:edb27e228558 | 118 | void Taffi() |
dujardin | 6:edb27e228558 | 119 | { // variables propres AL AT AP |
dujardin | 6:edb27e228558 | 120 | OE = HIGH; // Disable output |
dujardin | 6:edb27e228558 | 121 | for ( AL = 0 ; AL < 16 ; AL++) |
dujardin | 6:edb27e228558 | 122 | { |
dujardin | 6:edb27e228558 | 123 | ABCD = AL; //adresse ligne dans L |
dujardin | 6:edb27e228558 | 124 | for ( AT = 0 ; AT < 3 ; AT++) |
dujardin | 6:edb27e228558 | 125 | { |
dujardin | 6:edb27e228558 | 126 | for( AP =0 ; AP < 32 ; AP++) // |
dujardin | 6:edb27e228558 | 127 | { |
dujardin | 6:edb27e228558 | 128 | mm = T[AP][AL][AT]; |
dujardin | 6:edb27e228558 | 129 | B1 = mm & 1 ; |
dujardin | 6:edb27e228558 | 130 | B0 = mm & 2 ; |
dujardin | 6:edb27e228558 | 131 | V1 = mm & 4 ; |
dujardin | 6:edb27e228558 | 132 | V0 = mm & 8 ; |
dujardin | 6:edb27e228558 | 133 | R1 = mm & 16 ; |
dujardin | 6:edb27e228558 | 134 | R0 = mm & 32 ; |
dujardin | 6:edb27e228558 | 135 | |
dujardin | 6:edb27e228558 | 136 | CLK = HIGH; // tick (clock bit in) |
dujardin | 6:edb27e228558 | 137 | CLK = LOW; // tock |
dujardin | 6:edb27e228558 | 138 | } |
dujardin | 6:edb27e228558 | 139 | LAT = HIGH; // Latch ligne |
dujardin | 6:edb27e228558 | 140 | LAT = LOW; |
dujardin | 6:edb27e228558 | 141 | OE = LOW; // Enable output |
dujardin | 6:edb27e228558 | 142 | if ( AT == 0 ) wait_us(g1); |
dujardin | 6:edb27e228558 | 143 | if ( AT == 1 ) wait_us(g2); |
dujardin | 6:edb27e228558 | 144 | if ( AT == 2 ) wait_us(g3); // 8*8*8 niveaux rapidement |
dujardin | 6:edb27e228558 | 145 | OE = HIGH; // disable output |
dujardin | 6:edb27e228558 | 146 | } |
dujardin | 6:edb27e228558 | 147 | } |
dujardin | 6:edb27e228558 | 148 | } |
dujardin | 6:edb27e228558 | 149 | |
dujardin | 6:edb27e228558 | 150 | void circle(int px , int py , int r ) |
dujardin | 6:edb27e228558 | 151 | { |
dujardin | 6:edb27e228558 | 152 | int rx = 0; int ry = 0 ; |
dujardin | 6:edb27e228558 | 153 | for ( rx = r ; ry <= rx ; rx-- ) |
dujardin | 6:edb27e228558 | 154 | { |
dujardin | 6:edb27e228558 | 155 | while((rx*rx+ry*ry)<(r*r)) |
dujardin | 6:edb27e228558 | 156 | { |
dujardin | 6:edb27e228558 | 157 | pix ( px+rx , py+ry , br , bv , bb ); |
dujardin | 6:edb27e228558 | 158 | pix ( px+rx , py-ry , br , bv , bb ); |
dujardin | 6:edb27e228558 | 159 | pix ( px-rx , py+ry , br , bv , bb ); |
dujardin | 6:edb27e228558 | 160 | pix ( px-rx , py-ry , br , bv , bb ); |
dujardin | 6:edb27e228558 | 161 | pix ( px+ry , py+rx , br , bv , bb ); |
dujardin | 6:edb27e228558 | 162 | pix ( px-ry , py+rx , br , bv , bb ); |
dujardin | 6:edb27e228558 | 163 | pix ( px+ry , py-rx , br , bv , bb ); |
dujardin | 6:edb27e228558 | 164 | pix ( px-ry , py-rx , br , bv , bb ); |
dujardin | 6:edb27e228558 | 165 | ry++; |
dujardin | 6:edb27e228558 | 166 | } |
dujardin | 6:edb27e228558 | 167 | } |
dujardin | 6:edb27e228558 | 168 | |
dujardin | 6:edb27e228558 | 169 | pix ( px , py , br , bv , bb ); |
dujardin | 6:edb27e228558 | 170 | } |
dujardin | 6:edb27e228558 | 171 |