小编前几天查资料,怎么使用12864屏幕的用法,突然发觉微博是个好东西,随着自己的成长,学习了很多的知识,没有做笔记的习惯,只是习惯把用到的硬件,传感器,资料写到程序的备注内,但感觉,用到时不是那么方便,同时也算是,记录自己的学习,分享学习经验和过程,一起和大家共勉。

  前段时间,一直在研究51单片机PWM的用法,但由于51单片机内部资源限制,只能输出两路PWM(P1.3和P1.4),而我想用单片机控制RGB三色灯混出不同的颜色,所以,只靠51的两路输出PWM不能达到要求,由于,只是调光,所以对于PWM的精度要求并不高,随即,想到用软件程序来模拟三路PWM的输出,经过一段时间的研究借鉴和编写网上大佬的程序,可以实现三原色的互相混合,程序中又加入了自动调色和手动调色,通电后,默认是自动变色,从绿色起步开始渐变,直至下一个绿色为一个渐变循环;手动调色功能我是用水银开关来实现,当想要手动调色固定一个颜色时,只需把三色灯倾斜,此时即进入手动调色功能,当颜色渐变到想要的颜色时,摆正三色灯即可,把颜色固定下来,不会再变化,如若,又想让它自动变色,只需晃动下三色灯即可,进入自动渐变颜色的模式。可能是自己刚入门把,可能程序有些晦涩和繁杂,但后面都有我很多的备注。

                                                                                                                                                 2017-10-25

                                                                                                                                                                                           by: L H 

先附上几张图片,外表亚克力图案用的是学校激光雕刻机雕刻的,嘻嘻

渐变三色python 渐变三色注塑_单片机

渐变三色python 渐变三色注塑_DIY_02

渐变三色python 渐变三色注塑_初值_03

渐变三色python 渐变三色注塑_DIY_04

 

 

渐变三色python 渐变三色注塑_单片机_05

渐变三色python 渐变三色注塑_单片机_06

渐变三色python 渐变三色注塑_渐变三色python_07

 

 

渐变三色python 渐变三色注塑_DIY_08

渐变三色python 渐变三色注塑_寻址_09

渐变三色python 渐变三色注塑_初值_10

 

 

渐变三色python 渐变三色注塑_单片机_11

 

 

1 /*
  2 
  3  程序完结于:2017.10.22
  4                           by:LH
  5                                   QQ:1336294189,可技术交流
  6 
  7 功能:三色(R,G,B)可自动渐变,也可手动调至喜欢颜色,保持颜色.
  8 
  9 此程序仅供娱乐制作,不可投入商用!!,初入51,大神看后勿喷,谢谢
 10 
 11 
 12 
 13                                                      
 14         /*
 15                            _ooOoo_
 16                           o8888888o
 17                           88" . "88
 18                           (| -_- |)
 19                           O\  =  /O
 20                        ____/`---'\____
 21                      .'  \\|     |//  `.
 22                     /  \\|||  :  |||//  \
 23                    /  _||||| -:- |||||-  \
 24                    |   | \\\  -  /// |   |
 25                    | \_|  ''\---/''  |   |
 26                    \  .-\__  `-`  ___/-. /
 27                  ___`. .'  /--.--\  `. . __
 28               ."" '<  `.___\_<|>_/___.'  >'"".
 29              | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 30              \  \ `-.   \_ __\ /__ _/   .-` /  /
 31         ======`-.____`-.___\_____/___.-`____.-'======
 32                            `=---='
 33         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 34                  佛祖保佑       永无BUG
 35         */
 36 
 37 
 38 /*
 39 
 40 
 41 
 42        STC15F104W重点介绍:
 43 
 44 (1)    定时器模块:T0(中断标号 interrupt 1)和T2(中断标号 interrupt 12 ),T0工作在方式0时是16位可自动重装初始值的定时计数器,方式2时是8位自动重装的计数器,方式3时是可分解的;T2的工作模式固定在16位自动重装初始值模式,故特别适应到LED行业,该芯片的定时器模块可产生更高精度的定时时间。
 45 (2)    内核:采用Y5超高速CPU内核,比普通1T还快20%,详情见指令集。共111条指令。
 46 (3)    管脚图:
 47                                         |--------|
 48                MCLKO/!INT2/T0/RST/P3.4--|1        8|--P3.3/INT1/RSTOUT_LOW
 49                                    VCC--|2        7|--P3.2/INT0
 50                      !INT3/T0CLKO/P3.5--|3        6|--P3.1/T2
 51                                    GND--|4        5|--P3.0/!INT4/T2CLKO
 52                                         |---------
 53 
 54 (4)   P3.3是RSTOUT_LOW,上电和复位后输出低电平,也可由软件设置低或高电平,该管脚可以作为16位或32位单片机的复位电路使用;P3.4可以输出系统时钟,故可以作为16位或32位单片机的的时钟电路;该芯片还有很强的加密功能,可取代加密芯片,单价只有一块多,故可以推荐给客户。
 55         STC15F104W无串口,具有中继广播方式,可以软件模拟I2C、串口、SPI、利用IO口充放电测量外部电压实现AD功能。
 56          可在下载软件中设置P3.1直通输出P3.0的输入电平,类似15系列串口1的中继广播方式。
 57         STC15W104SW——DIP/SOP16,在性能和价格上都优于STC11F04E,故,可以替代STC11系列和89C4051等芯片,重点推荐给LED行业
 58 
 59 (5)   STC15F104W的外部中断可以用,而且多一个掉电唤醒专用定时器。
 60 */
 61 
 62 
 63   
 64 #include <STC15F2K60S2.H>//STC15F104W  DIP-8型单片机,比STC12C5A60S2 1T 单片机快 20%
 65 #define uchar unsigned char
 66 #define uint unsigned int
 67 unsigned char pwm_data_R,pwm_data_G,pwm_data_B,pwm_r,pwm_g,pwm_b;
 68 sbit PWM_R=P3^4;
 69 sbit PWM_G=P3^2;
 70 sbit PWM_B=P3^3;                      
 71 
 72 sbit k1=P3^5;
 73 
 74 unsigned int count4=0;         //自动变色快慢控制
 75 unsigned int count5=0;        //自动颜色循环值
 76 unsigned int count6=0;        //手动颜色循环值
 77 unsigned int count7=0;        //手动变色快慢控制
 78 unsigned int count8=0;        //手动调节变色色表快慢控制位
 79 unsigned int count9=0;        //手动调节变色色表种类值
 80 unsigned int add=0;             //自动OR手动调节控制位 add=0 自动调色; add=1 受冻调色控制位
 81 unsigned char flag=0;         //按键防抖控制位
 82 unsigned char flag1=0;         //手动调节变色至自动变色的色值时,flag1=1;继续手动调色,则进入 色表 CO[] 颜色设定
 83 
 84 unsigned char CO[][3]=                     {                                 //三基色混色数据表
 85                                                 {220,250,0},//黄色                                  0
 86 //                                                {222,202,85},//香蕉色                              1
 87                                                 {250,149,17},//铬黄                                  2
 88 //                                                {230,139,83},//dougello                              3
 89 //                                                {250,222,129},//froum gold                          4
 90                                                 {250,210,0},//金黄色                              5
 91 //                                                {213,161,102},//黄花色                              6
 92 //                                                {222,164,99},//瓜色                                  7
 93                                                 {232,142,32},//胡萝卜色                              8
 94                                                 {125,41,41},//棕色                                  9
 95 //                                                {250,122,62},//肉色                                  10
 96                                                 {235,225,137},     //黄褐色                         11
 97 //                                                {184,140,140},    //玫瑰红                            12
 98 
 99                                                 {59,87,167},    //钴色                              13
100 //                                                {2,164,154},    //锰蓝色                          14
101                                                 {49,157,196},    //孔雀蓝                          15
102 //                                                {0,195,137},    //土耳其玉色                      16
103 //                                                {63,102,250},    //品蓝                              17
104 //                                                {103,88,200},    //石板蓝                          18
105                                                 {0,250,250},    //青色                              19
106 
107 //                                                {132,201,230},    //天蓝色                          20
108                                                 {7,45,82},    //靛青                                  21
109 //                                                {62,219,203},    //青绿色                          22 
110                                                 {124,250,0},    //黄绿色                          23
111                                                 {0,196,85},    //翠绿色                              24
112 //                                                {185,246,196},    //薄荷绿                          25
113                                                 {156,31,235},    //紫色                              26
114 //                                                {149,46,245},    //湖紫色                          27
115 //                                                {213,109,209},    //淡紫色                          28
116 //                                                {216,156,216}    //梅红色                          29
117 
118                                             };
119 
120 
121 
122 void Init (void)             //中断初始化  //内部时钟 12M晶振
123 {
124       TMOD = 0x00;           //(不可位寻址)设定定时器 T0 工作方式 0(16位自动重装定时器)
125       TH0=(65536-5000)/256;     //装T0高位初值    /定时器周期为500US(频率2K)  (做PWM频率)
126       TL0=(65536-5000)%256;     //装T0低位初值
127            ET0=1;            //(可位寻址)T0的溢出中断允许控制位,ET0=1允许T0中断; ET0=0禁止T0中断;
128            TR0=1;            //(可位寻址)允许定时器T0运行
129            EA=1;           //(可位寻址)开启总中断
130 
131       T2H=(65536-20)/256;  //装T2高位初值
132       T2L=(65536-20)%256;  //装T2低位初值  定时器周期为2US(频率500K)    (做PWM宽度调)
133       AUXR=0X94;           //辅助寄存器开启定时器T2,启动定时器T2,配置T0,T2时钟为 1T模式 (比STC15C5A 1T 模式快 20%)
134       IE2=0X04;              //IE2(不可位寻址):定时器T2\T3\T4中断控制寄存器(控制定时器T2中断允许)    ET2=0:禁止定时器T2产生中断  ET2=1:允许定时器T2产生中断
135           
136 
137 }
138 void timer0(void) interrupt 1  //***********定时器T0中断子函数**************      (做PWM频率)
139 {
140          PWM_R=1;
141          PWM_G=1;
142          PWM_B=1;
143          pwm_r=0;
144          pwm_g=0;
145          pwm_b=0;
146 
147 
148     if(k1==0)
149     {
150         if((k1==0)&&(flag==0))      //短按键识别切换;add=0切换自动变色,add=1长按手动调色,调制理想色时,松手即可
151         {                          
152           add++;
153           flag=1;
154        if(add==2) add=0;
155         }
156     } else flag=0;
157 
158          if(add==0)
159          {            
160                        count4++;              //自动变色快慢
161                      if(count4==80)
162                        {
163                          count4=0;
164                          count5++;
165                          if(count5==3500)     //自动颜色循环值
166                            count5=0;
167                         }
168           }
169 
170          if(add==1)
171          {
172                 if((k1==0)&&(flag==1))
173                   {
174                          count7++;
175                          if(count7==60)      //手动调节变色快慢
176                          {
177                          count7=0;
178                          count6++;
179                            }
180                         if(count6>=3500)
181                         {
182                           count6=3500;        //手动颜色循环值
183                            flag1=1;           //flag1=1,时变换颜色为上面色表中的颜色
184                         }
185                          else flag1=0;      //flag1=0,时自动变换颜色
186 
187                             if(flag1==1)
188                             {
189                               count8++;
190                               if(count8==3000)    //手动调节变色色表快慢控制位
191                               {
192                                 count9++;
193                                  count8=0;
194                                 if(count9==13)     //手动调节变色色表种类值
195                                   {
196                                  count9=0;
197                                  count6=0;
198                                  }
199                               }    
200                            } 
201                      }
202           }
203 } 
204 
205 void timer1(void) interrupt 12  //***********定时器T2中断子函数**************     (做PWM宽度调)
206 {
207 
208 if(pwm_r<pwm_data_R)  pwm_r++;
209    else  PWM_R=0;
210  
211  
212  if(pwm_g<pwm_data_G) pwm_g++;
213      else    PWM_G=0;
214  
215  
216  if(pwm_b<pwm_data_B) pwm_b++;
217    else  PWM_B=0;
218 
219 }
220 
221 void jianbianRGB(unsigned int count3)    //颜色渐变
222 {
223 
224 
225     if(count3>=0&&count3<250)                  //绿变亮             G++
226     {
227       pwm_data_G=count3;
228       pwm_data_R=0;
229       pwm_data_B=0;
230     }
231     else if(count3>=250&&count3<500)               /// R++
232      {
233       pwm_data_R=count3-250;            
234       pwm_data_G=250;
235       pwm_data_B=0;
236 
237     }
238 
239     else if(count3>=500&&count3<750)                //B++
240      {
241            pwm_data_R=250; //max 250
242          pwm_data_G=250;
243          pwm_data_B=count3-500;                    
244       }
245 
246     else if(count3>=750&&count3<1000)                  // G-- 
247      {
248           pwm_data_R=250;                        //max 250
249          pwm_data_G=750-count3;            
250          pwm_data_B=250;
251      }
252       else if(count3>=1000&&count3<1250)               //B--
253        {
254        pwm_data_R=250;
255         pwm_data_G=0;
256       pwm_data_B=1250-count3;                    
257       }
258 
259 
260       else if(count3>=1250&&count3<1500)          /// R--
261        {
262        pwm_data_R=1500-count3;                
263         pwm_data_G=0;
264          pwm_data_B=0;
265        }
266 
267      
268            else if(count3>=1500&&count3<1750)          
269        {
270          pwm_data_R=0;                        
271          pwm_data_G=0;                           
272          pwm_data_B=count3-1500;                                  //B++
273        }
274 
275            else if(count3>=1750&&count3<2000)          
276        {
277          pwm_data_R=0;                        
278          pwm_data_G=count3-1750;                                     //绿变亮             G++
279          pwm_data_B=250;                
280        }
281 
282     else if(count3>=2000&&count3<2250)                         /// R++
283      {
284       pwm_data_R=count3-2000;            
285       pwm_data_G=250;
286       pwm_data_B=250;
287 
288     }
289 
290       else if(count3>=2250&&count3<2500)           
291        {
292         pwm_data_R=2500-count3;                        /// R--
293         pwm_data_G=2500-count3;                     // G-- 
294        pwm_data_B=2500-count3;                         //B--
295       }
296 
297     else if(count3>=2500&&count3<2750)                  
298      {                                             /// R++
299           pwm_data_R=count3-2500;                        //max 250
300          pwm_data_G=0;            
301          pwm_data_B=0;
302      }
303 
304       else if(count3>=2750&&count3<3000)           //B++
305        {
306        pwm_data_R=250;                
307         pwm_data_G=0;
308          pwm_data_B=count3-2750;
309        }
310 
311 
312       else if(count3>=3000&&count3<3250)           //G++
313        {
314        pwm_data_R=250;                
315         pwm_data_G=count3-3000;
316          pwm_data_B=250;
317        }
318 
319       else if(count3>=3250&&count3<3500)           
320        {
321         pwm_data_R=3500-count3;                        /// R--
322         pwm_data_G=3500-count3;                     // G-- 
323        pwm_data_B=3500-count3;                         //B--
324       }
325 }
326 
327 
328 void scankey()
329 {
330      switch(add)
331      {
332      case 0: jianbianRGB(count5);
333              count6=0;
334              break;
335      case 1: if(flag1==0)                      //自动渐变颜色
336             {    
337                 jianbianRGB(count6);
338             }
339                else                           //自定义颜色色表
340                {
341                pwm_data_R=CO[count9][0];
342                pwm_data_G=CO[count9][1];
343                pwm_data_B=CO[count9][2];
344                }
345                count5=0;
346              break;
347     default : jianbianRGB(count5); break; 
348   }
349 
350 }
351 
352 
353 
354 //●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●//
355 void main()
356 {
357 //      P3M1=0X00;       //P3口设置为推挽模式,提高灯的亮度
358 //      P1M0=0X38;
359      PWM_R=0;     //max 250
360      PWM_G=0;
361      PWM_B=0;
362     Init();
363     while(1)          //主循环
364     {
365         scankey();
366 //    PWM_R=1;
367 //   PWM_G=0;
368 //    PWM_B=0;                      
369 
370     }
371 }
372 
373         /*
374                                 MMMMM
375                                   MMMMMM
376                                     MMMMMMM
377                                      MMMMMMMM     .
378                                       MMMMMMMMM
379                                       HMMMMMMMMMM
380                                        MMMMMMMMMMMM  M
381                                        MMMMMMMMMMMMM  M
382                                         MMMMMMMMMMMMM  M
383                                         MMMMMMMMMMMMM:
384                                         oMMMMMMMMMMMMMM
385               .MMMMMMMMMMMMMMo           MMMMMMMMMMMMMMM M
386         MMMMMMMMMMMMMMMMMMMMMMMMMMM      MMMMMMMMMMMMMMMM
387           MMMMMMMMMMMMMMMMMMMMMMMMMMMM.  oMMMMMMMMMMMMMMM.M
388             MMMMMMMMMMMMMMMMMMMMMMMMMMMM  MMMMMMMMMMMMMMMM
389               MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
390                 oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
391                   MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
392                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:                     H
393                      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM                  .         MMM
394                       MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM              M       MMMMMM
395                        .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM          M   MMMMMMMMMM
396                 MM.      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM       M MMMMMMMMMMMM
397                     MM    MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM    .MMMMMMMMMMMMMM
398                       MM  MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
399                         MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
400                .MMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
401                   HMMMMMMMMMMMMMMMMMMMMM.MMMMMMMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
402                      MMMMMMMMMMMMMMM MMM.oMMMMMMM..MMMMMMMMM:MMMMMMMMMMMMMMMMMMMMMMM
403                        MMMMMMMMMMMMMM MM..MMMMMMM...MMMMMMM. MMMMMMMMMMMMMMMMMMMMM
404                          MMMMMMMMMMMMMMM ..MMMMMM...MMMMMM ..MMMMMMMMMMMMMMMMMMM
405                           MMMMMMM:M.MMM.M.. MMMMM M..MMMMM...MMMMMMMMMMMMMMMMMM  MMM
406                             MMMM. .M..MM.M...MMMMMM..MMMMM.. MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .
407                              MMMM..M....M.....:MMM .MMMMMM..MMMMMMM...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
408                               MMM.M.. ...M......MM.MMMMM.......MHM.M  .MMMMMMMMMMMMMMMMMMMMMMMMM
409                          MMMMMMMM..MM. . MMM.....MMMMMM.M.....M ..MM..M MMMMMMMMMMMMMMMMMMM
410                             .MMMMMHMM. ..MMMM. MMM............o..... . .MMMMMMMMMMMMMMM
411                                MMM. M... .........................M..:.MMMMMMMMMMMM
412                                  oMMM............ .................M.M.MMMMMMMMM
413                                     .....MM........................ . MMMMMM
414                                    M.....M.....................o.MM.MMMMMMMM.
415                                     M........................M.. ...MMMMMMMMMMMMMo
416                                       :....MMM..............MMM..oMMMMMMM
417                                        M...MMM.............MMMMMMM
418                                           .............:MMMMMMMM
419                                           M..... MMM.....M
420                                           M M.............
421                                           ................M
422                                        ooM.................MM  MoMMMMMoooM
423                                   MMoooM......................MoooooooH..oMM
424                               MHooooMoM.....................MMooooooM........M
425                             oooooooMoooM......... o........MoooooooM............
426                             Mooooooooooo.......M.........Moooooooo:..............M
427                            MooMoooooooooM...M........:Mooooooooooo:..............M
428                           M..oooooooooooo .........Mooooooooooooooo..............M
429                          M...Mooo:oooooooo.M....ooooooooooooooooooo..M...........M
430                           ...oooooMoooooooM..Mooooooooooooo:oooooooM.M...........M.
431                          M...ooooooMoo:ooooMoooooooooooooHoooooooooH:M. ...........:
432                          M..MoooooooMoooooooooooooooooo:ooooooMooooMoM..............M
433                          M..ooooooooooMooooooooooooooHoooooooMooHooooM...............M
434                          ...ooooooooooooooooooo:MooooooooooooooMoMoooM................
435                         M...oooooooooooooooooooooooooooooooooooooMooMM................M
436                         ...MooooooooooooooooooooooooooooooooooooooooMo ................
437                         ...MooooooooooooooooooooooooooooooooooooooooM M................M
438                        M...ooooooooooooooooooooooooooooooooooooooooM   ................M
439                        ...MoooooooooooooooooooooooooooooooooooooooMM   .:...............
440                        .....MooooooooooooooooooooooooooooooooooooMoo       .............M
441                        M...... ooooooooooooooooooooooooooooooooooooM       M..............M
442                        M........MooooMMM MM MM  MMMMMMMMMooooooooM         M...............M
443                        .........HM     M:  MM :MMMMMM          M           M...............
444                       M..........M     M   MoM M                           M................M
445                       M.........:M  MoH  M M M MooooHoooMM.   M             M...............M
446                       M..........Moooo MMooM    oooooMooooooooM              M..............H
447                       M.........MooooM  Mooo  : ooooooMooooMoooM              M........ . .o.M
448                       H..  .....ooooo   oooo  M MooooooooooooooM               M... MMMMMMMMMMM
449                       MMMMMMMMMMooooM M oooo  .  ooooooMooooooooM              .MMMMMMMMMMMMMMM
450                       MMMMMMMMMMooooH : ooooH    oooooooooooooooo               MMMMMMMMMMMMMMM
451                       MMMMMMMMMMoooo    ooooM    Moooooooooooooooo              .MMMMMMMMMMMMMMM
452                       MMMMMMMMMMoooo    ooooM    MooooooooooooooooM              MMMMMMMMMMMMMMM
453                       MMMMMMMMMMoooM    ooooM     ooooooooooooooooo               MMMMMMMMMMM:M
454                       MMMMMMMMMMoooM   MooooM     oooooooooooMoooooo               MH...........
455                        . ......Mooo.   MooooM     oooooooooooooooooo              M............M
456                       M.M......oooo    MooooM     Moooooooooooooooooo:           .........M.....
457                       M.M.....Moooo    MooooM      ooooooooooooooooooM            .M............
458                       .......MooooH    MooooM      oooooooooMoooooooooo          M..o...M..o....M
459                       .o....HMooooM    MooooH      MooooooooMooooooooooM          .:M...M.......M
460                      M..M.....MoooM    :oooo:    .MooooooooHooMoooooooooM         M M... ..oM.M
461                       M...M.:.Mooo. MMMMooooo   oooooooooooMoooooooooooooM          ....M. M
462                        M:M..o.Moooooooooooooo MooooooooooooooMooooooooooooM          .Mo
463                               MooooooooooooooMooooooooooooMoMoooooooooooooo
464                               Mooooooooooooooo:ooooooooooooooooooooooooooooo
465                               ooooooooooooooooMooooooooooMoooooooooooooooooo
466                               ooooooooooooooooMoooooooooooMooooooooooooooooHo
467                               ooMooooooooooooooMoooooooooooooooooooooooooooMoM
468                              MooMoooooooooooooo.ooooooooooooooooooooooooooo:oM
469                              MoooooooooooooooooooooooooooooooooooooooooooooooM
470                              MoooMooooooooooooooMooooooooooooooooooooooooooooo.
471                              MoooMooooooooooooooMoooooooooooooooooooooooooMooooM
472                              MooooooooooooooooooMoooooooooooooooooooooooooMoooooM
473                              MooooMoooooooooooooMoooooooooooooooooooooooooMoHooooM
474                              ooooooMooooooooooooooooooooooooooooooooooooooooMoMoooM
475                             MooooooooooooooooooooMooooooooooooooooooooooooooMoooooH:
476                             MoooooooMooooooooooooMoooooooooooooooooooooooooooooHoooM
477                             MooooooooMoooooooooooMoooooooooooooooooooooooooMoooMooooM
478                             Moooooooooooooooooooooooooooooooooooooooooooooo.oooMooooo
479                             MoooooooooooooooooooooooooooooooooooooooooooooMoooooooooM
480                              MooooooooooooooooooooMoooooooooooooooooooooooooooooooooM
481                               MooooooooooooooooooooMHooooooooooooooooooooMoooo:ooooo
482                                MMooooooooooooooooooMoMHoooooooooooooooooooooooMooooo
483                                 MMoooooooooooooooMMooo MMooooooooooooooooooooooooooM
484                                 MMMoooooooooooooMooooo  oooooooooooooooooooooMooooo
485                                 MooMMoooooooooMoooMMoM  ooooHooooooooooooooooMooooM
486                                 MooooMooooooMooooMoooM  MoooooMoooooooooooooMooooo
487                                 ooooooMMooooooooMooooM  MoooooooooMooooooooooooooM
488                                 HooooooMoooooooMooooM    HoooooooHooMooooooooooooo
489                                  oooMoooooooooHoooM         MoooooooooMoooooooooM
490                                   HooooooooooooHM             MooooooooMMoooooooM
491                                    MMMMMMMMMMMMMM                Moooooo:MooooHMM
492                                     MMMMMMM: ...                  MMMMMMMMMMMMMM
493                                    M............M                  MMMMMMMMM ....
494                                    M.MM..........                  M.............M
495                                 M ..............MM                 M..............
496                              MMMMM............MMMM                 ..MMMMMMMM ....M
497                            MMMMMMMMMMMMMMMMMMMMMMMM               MMMMMMMMMMMMM...M
498                         .MMMMMMMMMMMMMMMMMMMMMMMMMM               MMMMMMMMMMMMMMMMMM
499                         MMMMMMMMMMMMMMMMMMMMMMMMM                MMMMMMMMMMMMMMMMMMM
500                         :MMMMMMMMMMMMMMMMMMH                     MMMMMMMMMMMMMMMMMMM
501                            By EBEN Jér?me                        MMMMMMMMMMMMMMMMMM
502                                                                  MMMMMMMMMMMMMMM
503                                                                   HMMMMMM
504          
505         */