tag:blogger.com,1999:blog-15526667915245046492024-03-14T07:18:18.510+01:00Arduino créationsJojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-1552666791524504649.post-77508754658904344652016-09-25T11:02:00.000+02:002016-09-29T20:05:05.637+02:00Dialoguer a distance entre deux arduino avec APC220 portée 1km<h2>
<u><span style="color: orange;">Télécommande APC220 portée 1000m</span></u></h2>
Après plusieurs demandes, je met ce petit tuto concernant les module émetteur récepteur APC220. Permettant de communiquer soit entre PC et arduino ou entre deux arduino. Je vais me pencher sur cette dernière config.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-pQc88ADBbRQ/V-eIsE9e5OI/AAAAAAAAA9s/iMpLx04nKLoDRDHO-kA522-b9ua5QxRNgCLcB/s1600/sku_143011_5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://2.bp.blogspot.com/-pQc88ADBbRQ/V-eIsE9e5OI/AAAAAAAAA9s/iMpLx04nKLoDRDHO-kA522-b9ua5QxRNgCLcB/s320/sku_143011_5.jpg" width="320" /></a></div>
<br />
D'après les spécifications technique ce petit module a une portée d'environ 1km en zone dégagée (pas testé)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-d_TdaeLvqgU/V-eJWK1_TEI/AAAAAAAAA9w/a0APBEhDkVwOH235kj_dqymUOntHJNT-ACLcB/s1600/apc220-module-de-communication-sans-fil-pour-arduino-convertisseur-usb-.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://2.bp.blogspot.com/-d_TdaeLvqgU/V-eJWK1_TEI/AAAAAAAAA9w/a0APBEhDkVwOH235kj_dqymUOntHJNT-ACLcB/s320/apc220-module-de-communication-sans-fil-pour-arduino-convertisseur-usb-.jpg" width="320" /></a></div>
Il est possible de configurer le module par le biais d'un petit soft (fréquence, ID, ....), j'y reviendrai plus tard.<br />
<br />
<h4>
<u><span style="color: orange;">Le câblage</span></u></h4>
<br />
Le câblage reste ultra simple !!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-iHN6Iw8Gkg4/V-eNUxex3eI/AAAAAAAAA98/bkcoae3wOx4kvm9aY68SyN-r7ZOVlfxyACLcB/s1600/Schema%2BAPC220.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://4.bp.blogspot.com/-iHN6Iw8Gkg4/V-eNUxex3eI/AAAAAAAAA98/bkcoae3wOx4kvm9aY68SyN-r7ZOVlfxyACLcB/s400/Schema%2BAPC220.jpg" width="400" /></a></div>
<br />
Il n'y a pas de module APC220 dans la bibliothèque Frizing j'ai donc pris un module approchant!<br />
Je n'ai pas mis de led sur le récepteur car dans le sketch en exemple j'utilise celle de la carte. Vous remarquerez également que j'ai branché les bornes RX et TX des APC220 sur les bornes 10 et 11 de l'arduino ceci car j'utilise SoftwareSerial et donc je laisse la port série libre.<br />
<br />
<h4>
<u><span style="color: orange;">Les sketchs</span></u></h4>
Comme je l'ai dit plus haut, j'utilise la librairie SoftwareSerial.<br />
<br />
Le programme reste simple:<br />
<br />
<u><span style="color: orange;">L'émetteur</span></u><br />
<br />
"mySerial.begin(9600);" <br />
<br />
création d'un flag "flag='a'; "<br />
<br />
et envoie vers le récepteur<br />
mySerial.print(flag);<br />
<br />
<u><span style="color: orange;">Le récepteur</span></u><br />
<br />
Ouverture du port virtuel<br />
"mySerial.begin(9600);"<br />
<br />
Configuration en mode réception<br />
if(mySerial.available() > 0)<br />
state = mySerial.read();<br />
<br />
Réception du flag <br />
if (state == 'a') {// (ici ce sera state car dans le programme final je force l'état du flag)<br />
digitalWrite(ld,HIGH);<br />
<br />
<h3>
<u><span style="color: orange;"><b> Les codes </b></span></u></h3>
<h4>
<span style="color: orange;">Emetteur</span></h4>
<br />
//EMETTEUR by arduino-creations.blogspot.fr<br />
<br />
#include <SoftwareSerial.h><br />
<br />
SoftwareSerial mySerial(10, 11); // RX, TX<br />
int button_open =4;<br />
int button_close =3; <br />
int mes = 0;<br />
char flag;<br />
<br />
void setup()<br />
{<br />
pinMode(button_open, INPUT_PULLUP); <br />
pinMode(button_close, INPUT_PULLUP);<br />
Serial.begin(9600);<br />
mySerial.begin(9600);<br />
}<br />
<br />
void loop()<br />
{<br />
if( digitalRead(button_open)==LOW)<br />
{<br />
flag='a';<br />
mySerial.print(flag);<br />
}<br />
else<br />
if( digitalRead(button_open)==HIGH)<br />
{<br />
flag='A';<br />
mySerial.print(flag);<br />
}<br />
<br />
if(digitalRead(button_close)==LOW)<br />
{ <br />
flag='b';<br />
mySerial.print(flag);<br />
}<br />
<br />
<br />
delay(20);<br />
}<br />
<br />
<h4>
<span style="color: orange;"><u>Récépteur </u></span></h4>
//RECEPTEUR by arduino-creations.blogspot.fr<br />
<br />
#include <SoftwareSerial.h><br />
<br />
SoftwareSerial mySerial(10, 11); // RX, TX<br />
int ld = 13;<br />
<br />
int state;<br />
int flag=0;<br />
<br />
void setup() {<br />
Serial.begin(9600);<br />
mySerial.begin(9600);<br />
pinMode(ld, OUTPUT);<br />
digitalWrite (ld,LOW);<br />
}<br />
<br />
void loop() {<br />
if(mySerial.available() > 0){<br />
state = mySerial.read();<br />
flag=0;<br />
}<br />
if (state == 'a') {<br />
digitalWrite(ld,HIGH);<br />
Serial.print(state); <br />
if(flag == 0){<br />
flag=1;<br />
}<br />
}<br />
else if (state == 'A'){<br />
digitalWrite(ld,LOW);<br />
Serial.print(state);<br />
if(flag == 0){<br />
flag=1;<br />
}<br />
}<br />
delay(10); <br />
<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com4tag:blogger.com,1999:blog-1552666791524504649.post-35606722399090909332015-11-04T23:20:00.001+01:002017-01-31T10:44:19.159+01:00Fraiseuses CNC et graveurs laser sur mesure<br />
<br />
<h2>
<u><span style="color: orange;">Réalisations de fraiseuses CNC et graveurs laser sur mesure</span></u></h2>
<b><span style="font-weight: normal;">Après avoir eu plusieurs demandes de réalisations de machine CNC et graveur laser, </span></b><span style="font-weight: normal;">j'ai décidé de proposer mes services pour la fabrication de machines sur mesure. </span><br />
<span style="font-weight: normal;">Je précise que ça n'a rien a voir avec les machines qui s’achètent a l'étranger !! </span><br />
<span style="font-weight: normal;">Il est évident que cela ne m'empêchera pas de continuer a vous aider en cas de besoins.</span><br />
<h3>
<u><span style="color: orange;"><span style="font-weight: normal;">Quelques machines réalisées</span></span></u></h3>
<u><span style="color: orange;"></span></u><br />
<span style="font-weight: normal;"></span><br />
<a href="http://1.bp.blogspot.com/-5SFxLNskII0/VjX6CN_GhyI/AAAAAAAAAvY/LkuAtcZ6Bp8/s1600/20140919_005744.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://1.bp.blogspot.com/-5SFxLNskII0/VjX6CN_GhyI/AAAAAAAAAvY/LkuAtcZ6Bp8/s320/20140919_005744.jpg" width="179" /></a><a href="http://3.bp.blogspot.com/-z00XljWdkq4/VjX5_p8Xr3I/AAAAAAAAAvI/3_ceXxEaE4o/s1600/20140605_172828.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/-z00XljWdkq4/VjX5_p8Xr3I/AAAAAAAAAvI/3_ceXxEaE4o/s320/20140605_172828.jpg" width="179" /></a><span style="font-weight: normal;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-jybW-iaZk9o/VjX6A-p8HxI/AAAAAAAAAvQ/oR0HO6hwxhg/s1600/a%2Bmachine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://1.bp.blogspot.com/-jybW-iaZk9o/VjX6A-p8HxI/AAAAAAAAAvQ/oR0HO6hwxhg/s200/a%2Bmachine.jpg" width="163" /></a></div>
<span style="font-weight: normal;"></span><br />
<a href="https://1.bp.blogspot.com/-tuH49mCv-Yk/WJBZIHHd7kI/AAAAAAAABAo/05VdVyjt29wT7p-AhSs5scyxbhi1aAgNwCLcB/s1600/Laser8.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="180" src="https://1.bp.blogspot.com/-tuH49mCv-Yk/WJBZIHHd7kI/AAAAAAAABAo/05VdVyjt29wT7p-AhSs5scyxbhi1aAgNwCLcB/s320/Laser8.jpg" width="320" /></a><br />
<h3>
</h3>
<h3>
<a href="https://1.bp.blogspot.com/-MnlUYL1Re20/WJBZ5IgNoGI/AAAAAAAABA0/dyyqhE6GNPcH3ai41rNeAEZ_b3YEgfgmQCLcB/s1600/20170124_225100.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="220" src="https://1.bp.blogspot.com/-MnlUYL1Re20/WJBZ5IgNoGI/AAAAAAAABA0/dyyqhE6GNPcH3ai41rNeAEZ_b3YEgfgmQCLcB/s320/20170124_225100.jpg" width="320" /></a></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<br /></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-3r8JAHO5d10/WJBaxD8FA_I/AAAAAAAABA8/bDM4FXkWrt4A61E_pYu3Aih9Jzx_6AIMACLcB/s1600/Laser7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://2.bp.blogspot.com/-3r8JAHO5d10/WJBaxD8FA_I/AAAAAAAABA8/bDM4FXkWrt4A61E_pYu3Aih9Jzx_6AIMACLcB/s320/Laser7.jpg" width="320" /></a></div>
<h3>
<br /></h3>
<h3>
<br /></h3>
<h3>
<u><span style="color: orange;">Usinage des pièces alu et assemblage précis</span></u></h3>
<span style="font-weight: normal;"></span><br />
<span style="font-weight: normal;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Ni4f32MnxKI/VjXlTVyyZvI/AAAAAAAAAuo/n1FotRDIHtQ/s1600/20151020_203750.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="177" src="https://3.bp.blogspot.com/-Ni4f32MnxKI/VjXlTVyyZvI/AAAAAAAAAuo/n1FotRDIHtQ/s320/20151020_203750.jpg" width="320" /></a></div>
<a href="https://2.bp.blogspot.com/-tYMclz8gSv8/WJBYqugRLwI/AAAAAAAABAk/Op0p36p9uHYmLOhF72PuRYnd7TsRz4UOQCLcB/s1600/20161223_181804.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://2.bp.blogspot.com/-tYMclz8gSv8/WJBYqugRLwI/AAAAAAAABAk/Op0p36p9uHYmLOhF72PuRYnd7TsRz4UOQCLcB/s320/20161223_181804.jpg" width="180" /></a><span style="font-weight: normal;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Kx3p8AS0JOI/VjXljR-mIWI/AAAAAAAAAuw/OdB7xBtE1d0/s1600/20151020_222945.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="179" src="https://3.bp.blogspot.com/-Kx3p8AS0JOI/VjXljR-mIWI/AAAAAAAAAuw/OdB7xBtE1d0/s320/20151020_222945.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /><a href="http://4.bp.blogspot.com/-b0A7Zg-g6vY/VjXltSolT8I/AAAAAAAAAu4/xe53FpVfq70/s1600/20151021_181545.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://4.bp.blogspot.com/-b0A7Zg-g6vY/VjXltSolT8I/AAAAAAAAAu4/xe53FpVfq70/s320/20151021_181545.jpg" width="179" /></a></div>
<br />
<br />
<br />
<h3>
<u><span style="color: orange;">Vidéo d'usinage avec ma machine</span></u></h3>
Caractéristiques de celle-ci:<br />
<ul>
<li>Surface du plateau 900x600</li>
<li>Surface d'usinage 600x400</li>
<li>hauteur Z = 200</li>
<li>Barres rondes en acier carbone X et Y diamètre 20</li>
<li>Barre ronde en acier carbone Z diamètre 16</li>
<li>Vis hélicoïdales 16x4</li>
<li>Moteurs NEMA 23 75mm</li>
<li>Drivers 2M542</li>
<li>Alimentation des moteurs 48V 15A</li>
<li>Broche chinoise 2.2KWrefroidie a l'eau</li>
<li>Vitesse max de la machine 3500mm/mn </li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/s_vi/LuYIoIXvoF8/default.jpg?sqp=CKTh6bEF&rs=AOn4CLBM4_tNAVW69XlgT1sU9DywXnxijQ" frameborder="0" height="266" src="https://www.youtube.com/embed/LuYIoIXvoF8?feature=player_embedded" width="320"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/s_vi/udRrSZVzM4U/default.jpg?sqp=CKTh6bEF&rs=AOn4CLBlogR-F11QJWZlUvmuotqQJdq28A" frameborder="0" height="266" src="https://www.youtube.com/embed/udRrSZVzM4U?feature=player_embedded" width="320"></iframe></div>
<br />
<h3>
<u><span style="color: orange;">Type de machines</span></u> </h3>
<br />
Il existe plusieurs type de machines et d'entrainement. <br />
<ol>
<li>L'entrainement par vis celui-ci nécessite une vis au centrée sous le portique en X donc le plateau martyre est au
dessus de la structure. </li>
<li>L'entrainement par courroies a l'avantage de
pouvoir bénéficier d'un fond creux ce qui permet de poser la machine sur
la surface a usiner comme une porte par exemple.</li>
<li>Portique mobile</li>
<li>Plateau mobile (je déconseille cette solution car la machine nécessite beaucoup plus de place du fait que le plateau avance et recule au delà du châssis)</li>
</ol>
<br />
La
vitesse d'avance en entrainements par courroies est plus rapide qu'avec
des vis mais nécessite 1 moteur supplémentaire. Sur la machine décrite
ci-dessous j'arrive a des vitesses jusqu’à 4500mm/mn contre 900mm/mn
pour une vis de 8x1.5 (vis sur le Z).<br />
<br />
<h3>
<u><span style="color: orange;">Ma dernière réalisation </span></u></h3>
La
dernière machine réalisées (terminée, testée et rodée aujourd'hui) entraînement par courroies, la machine est
posée et bridée sur la planche a usiner. La planche ou de rails alu peuvent être facilement fixées sous la machine.<br />
<br />
Caractéristique:<br />
<ul>
<li>Dimensions 660x590</li>
<li>Surface d'usinage 400x400 (réel 445 x 410)</li>
<li>Hauteur du Z 80 sur plateau fixe plongée maximum 160 (suivant l'utilisation)</li>
<li>Barres rondes X,Y et Z en acier carbone diamètre 12</li>
<li>Entrainement par courroies GT2</li>
<li>Z entrainement par vis 8X1.5</li>
<li>Moteur NEMA 23 de 56mm </li>
<li>Drivers 2M542</li>
<li>Alimentation moteurs 36V / 10A</li>
<li>Broche 400W / 48V sur variateur 12000 tr/mn</li>
<li>Vitesse bridée a 4000mm/mn possible jusqu’à 7000mm/mn</li>
</ul>
<br />
<br />
<br />
A l'arrière le coffret de
commande de dimensions 300x400 dans lequel se trouve l'électronique, la
liaison machine coffret se fait a l'aide d'un seul connecteur.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-W2JqvuU3gqg/Vjp2z7Av-iI/AAAAAAAAAvo/lbIvwsGuHSc/s1600/20151104_211015.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://4.bp.blogspot.com/-W2JqvuU3gqg/Vjp2z7Av-iI/AAAAAAAAAvo/lbIvwsGuHSc/s320/20151104_211015.jpg" width="320" /></a></div>
<br />
<h3>
<u><span style="color: orange;">Pilotage</span></u></h3>
Le pilotage de la machine se fait en USB a l'aide d'un simple PC sous windows, linux ou mac. Pas besoin d'une bête de guerre, un vieux PC 1Ghz fait largement l'affaire. Il suffit d'installer GRBL Controler adapté au système d'exploitation.<br />
<h3>
<u><span style="color: orange;">Les broches</span></u> </h3>
Il y a plusieurs type de broche <br />
<ul>
<li>Les défonceuses que je n'installe pas car pour ma part ce n'est pas adaptée </li>
<li>Les
broches chinoises de puissances diverses la puissance mini que je
conseille est 800W pour 24000 tr/mn. J'ai testé une 400w, une 600W et
une 2.2KW ces machines fonctionnent a merveille, le 2.2KW.</li>
<li>Les broches KRESS que j'ai testé et qui sont de super machine</li>
<li>Les DREMEL elles sont bien pour des petites gravure qui ne nécessite pas de couple.</li>
</ul>
<h3>
</h3>
<h3>
<u><span style="color: orange;">Renseignements</span></u></h3>
Pour plus d'infos, contactez moi via le formulaire de contact et exposez moi votre demande.<br />
<br />
Afin de vous proposer une machine adaptée a vos besoins il me faut le éléments suivants:<br />
<ul>
<li>Surface utile d'usinage</li>
<li>Hauteur du Z</li>
<li>Matière a usiner je précise qu'avec ce type de machine il est impossible d'usiner de l'acier!!!</li>
<li>Type de machine (courroies ou vis) </li>
<li>Puissance de la broche, fournie ou non</li>
</ul>
<br />
<br />
<br />
<ol>
</ol>
<ol>
</ol>
<span id="transmark"></span><br />
<br />
<br />
<br />
<ol><span id="transmark"></span></ol>
<br />
<ol>
</ol>
Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com3tag:blogger.com,1999:blog-1552666791524504649.post-78282304047908423202014-11-11T12:08:00.000+01:002014-12-10T17:54:46.602+01:00Automate pour aquarium<h4>
<u><span style="color: orange;"> Fonctionnement</span></u></h4>
<br />
Le but de ce petit automate permet la gestion de la température, de l'éclairage et affichage d'alarmes de température.<br />
Il est possible d'y ajouter quelques lignes pour le Ph par exemple mais le programme risque de ne plus tenir dans un UNO, il faudra passer par une méga.<br />
Tous les paramètre sont configurables via un clavier analogique de 3 touches et l'affichage se fait sur un LCD 128X64 SPI.<br />
Pour la mesure de température, j'ai opté pour une LM35 afin de ne pas surcharger le programme.<br />
La température varie de +/- 0.5° ( précision de la sonde),l'alarme se déclenche a +/-2° par rapport a la consigne, exemple: si consigne = 20° alarme basse a 18° et alarme haute a 22°<br />
<h4>
<u><span style="color: orange;">L'écran prinipal</span></u></h4>
<br />
L'écran principal n'est pas encore terminé, il reste a faire la mise en page que je ferai dans la foulée<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-ihuR4cFHQJ8/VGHnwA2XCgI/AAAAAAAAAqk/zmRCBKxWeR0/s1600/20141111_113438.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://1.bp.blogspot.com/-ihuR4cFHQJ8/VGHnwA2XCgI/AAAAAAAAAqk/zmRCBKxWeR0/s320/20141111_113438.jpg" width="320" /></a></div>
<br />
On y trouve une horloge analogique (un petit plus visuel lol)<br />
La date<br />
L'heure, la température<br />
La programmation horaire<br />
L'état du chauffage - marche - arrêt - alarme basse - alarme haute<br />
La consigne de température (en cas de coupure de courant, celle-ci est configurée pour revenir a 20° et pas a 0°, cela permet de ne pas descendre trop bas en température)<br />
<h4>
<u><span style="color: orange;">Le menu de programmation</span></u></h4>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-v0OrvSCvMaU/VGHoVwZbrgI/AAAAAAAAAqs/9tKo93m8_gs/s1600/20141111_113319.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://3.bp.blogspot.com/-v0OrvSCvMaU/VGHoVwZbrgI/AAAAAAAAAqs/9tKo93m8_gs/s320/20141111_113319.jpg" width="320" /></a></div>
<br />
<br />
A chaque appui sur la touche menu, les réglages défileront de la manière suivante<br />
<br />
- Le jour - Le mois - l'année - l'heure - les minutes - les secondes- heure de mise en marche - minutes de mise en marche - heure de mise a l' arrêt - minute de mise a l' arrêt - la consigne de température et l'enregistrement.<br />
En cas de coupure de courant, les seuls paramètre enregistré sont la date et l'heure!!!<br />
<br />
A noter: A partir du moment ou vous rentrer dans le menu de programmation, l'horloge s'arrête jusqu'à ce que vous sortez du menu!!!!!<br />
<br />
<h4>
<u><span style="color: orange;">Le programme</span></u></h4>
<br />
<br />
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//<br />
// //<br />
// AUTOMATE POUR AQUARIUM //<br />
// BY JOJO BRICOLO //<br />
// Sonde LM35DZ //<br />
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//<br />
<br />
<br />
<br />
#include <U8glib.h> <br />
#include <Wire.h><br />
#include <Math.h><br />
#include <DS1307new.h><br />
<br />
U8GLIB_ST7920_128X64_4X u8g(2, 5, 4); <br />
<br />
<br />
int angles,anglem,angleh,xs, ys, xm, ym, xh, yh;<br />
float rad;<br />
<br />
uint16_t startAddr = 0x0000; <br />
uint16_t lastAddr; <br />
uint16_t TimeIsSet = 0xaa55;<br />
<br />
#define DDS_LOAD 12 <br />
#define DDS_CLOCK 3<br />
#define DDS_DATA 2<br />
<br />
#define Touche_PIN A0 <br />
int sensorPin = A0; <br />
int sensorValue = 0; <br />
int val_key;<br />
int Select;<br />
int Heure;<br />
int Minute;<br />
int Seconde;<br />
int Jour;<br />
int Mois;<br />
int Annee;<br />
<br />
int heurM = 0;<br />
int minM = 0;<br />
int heurA = 0;<br />
int minA = 0;<br />
<br />
int val1;<br />
int val2;<br />
int val3;<br />
int val4;<br />
<br />
int setTemp = 20; <br />
int Chauff= 12; <br />
int eclairage = 13;<br />
<br />
int tempsensor =A1;<br />
<br />
float ma_tempetf=0.0; <br />
const uint8_t rook_bitmap[] PROGMEM = { // signe degré<br />
0x10, // 00010000 <br />
0x28, // 00101000<br />
0x28, // 00101000<br />
0x10, // 00010000<br />
0x00, // 00000000 <br />
0x00, // 00000000<br />
0x00, // 00000000 <br />
0x00 // 00000000<br />
}; <br />
<br />
void setup () {<br />
<br />
pinMode(Chauff, OUTPUT); // Relai chauffage<br />
pinMode (eclairage,OUTPUT); // Relai eclairage<br />
<br />
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// RAM horloge<br />
TimeIsSet = 0xffff;<br />
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); <br />
RTC.ctrl = 0x00; <br />
<br />
RTC.setCTRL();<br />
<br />
u8g.setFont(u8g_font_5x8); // ecriture de base<br />
<br />
rad = ((2 * 3.1415926536) / 360);<br />
}<br />
////////////////////////// Fonctions Void<br />
<br />
void Principal()<br />
{<br />
sensorValue = analogRead(sensorPin); <br />
val_key = int(sensorValue/100); <br />
<br />
if (Select == 0) <br />
{ <br />
RTC.getTime();<br />
Heure = RTC.hour;<br />
Minute = RTC.minute;<br />
Seconde = RTC.second;<br />
Jour = RTC.day;<br />
Mois = RTC.month;<br />
Annee = RTC.year; <br />
<br />
//Logo By mi<br />
u8g.setFont(u8g_font_timB08);<br />
u8g.drawStr( 50,60, " By Jojo Bricolo");<br />
<br />
//////////////////////////////////// Affichage de l'Heure<br />
<br />
u8g.setFont(u8g_font_timB08);<br />
<br />
u8g.setPrintPos(56,18);<br />
u8g.print(Heure);<br />
u8g.drawStr( 68,18, "h");<br />
if (Minute < 10){ u8g.drawStr( 74, 18, "0");<br />
u8g.setPrintPos( 81, 18);<br />
u8g.print(Minute);}<br />
else<br />
{u8g.setPrintPos( 76, 18);<br />
u8g.print(Minute);} <br />
u8g.drawStr( 90,17, "-");<br />
<br />
////////// Affichage de la date<br />
<br />
u8g.setFont(u8g_font_5x7);<br />
{<br />
u8g.setPrintPos(60,8);<br />
u8g.print(Jour);<br />
}<br />
<br />
switch (RTC.month){<br />
case 1:<br />
u8g.drawStr( 69, 8, "Janv.");<br />
break;<br />
case 2:<br />
u8g.drawStr( 71, 8, "fev.");<br />
break;<br />
case 3:<br />
u8g.drawStr( 72, 8, " mars");<br />
break;<br />
case 4:<br />
u8g.drawStr( 72, 8, " avr. ");<br />
break;<br />
case 5:<br />
u8g.drawStr( 73, 8, " mai ");<br />
break;<br />
case 6:<br />
u8g.drawStr( 72, 8, " juin ");<br />
break;<br />
case 7:<br />
u8g.drawStr( 69, 8, "Juil.");<br />
break;<br />
case 8:<br />
u8g.drawStr( 72, 8, " aout ");<br />
break;<br />
case 9:<br />
u8g.drawStr( 69, 8, " sept.");<br />
break;<br />
case 10:<br />
u8g.drawStr( 72, 8, "oct.");<br />
break;<br />
case 11:<br />
u8g.drawStr( 72, 8, "nov.");<br />
break;<br />
case 12:<br />
u8g.drawStr( 72, 8, "dec.");<br />
break;<br />
}<br />
u8g.setPrintPos(96,8); //Année<br />
u8g.print(Annee);<br />
<br />
/////////////////////////////////////////// Temperature <br />
int reading = analogRead(tempsensor); <br />
float voltage = reading * 5.0 / 1024; <br />
float ma_tempetf = voltage * 100 ;<br />
<br />
/////////////////////////////////////// Affichage Temperature ////<br />
u8g.setFont(u8g_font_timB08);<br />
u8g.setPrintPos( 98, 18);<br />
u8g.print(ma_tempetf);<br />
u8g.drawBitmapP( 120, 11, 1, 8, rook_bitmap);<br />
<br />
///////////////////////// Affichage consigne//////////////<br />
<br />
u8g.setFont(u8g_font_4x6);<br />
u8g.drawStr( 64, 45,"Consigne");<br />
u8g.setPrintPos( 111, 45);<br />
u8g.print(setTemp);<br />
u8g.drawBitmapP( 120, 39, 1, 8, rook_bitmap);<br />
<br />
////////////// Commade chauffage<br />
<br />
u8g.setFont(u8g_font_4x6);<br />
if (ma_tempetf > setTemp)<br />
{ <br />
digitalWrite(Chauff, LOW);<br />
u8g.drawStr( 65, 37,"Chauff Arret");<br />
<br />
}<br />
if (ma_tempetf <= (setTemp-0.5))<br />
{<br />
digitalWrite(Chauff, HIGH);<br />
u8g.drawStr( 65, 37,"Chauff Marche");<br />
}<br />
<br />
/////////////////////// Commande eclairage<br />
val1 = (Heure*100)+Minute;<br />
val2 = (heurM*100)+minM;<br />
val3 = (heurA*100)+minA-1;<br />
<br />
if ((val1 >= val2) && (val1 <= val3))<br />
{ <br />
digitalWrite(eclairage, HIGH);<br />
}<br />
else<br />
<br />
//if ((Heure >= heurA) && (Minute >= minA))<br />
{<br />
digitalWrite(eclairage, LOW);<br />
}<br />
////////////////////// Affichage consignes éclarage<br />
u8g.setFont(u8g_font_4x6);<br />
u8g.drawStr( 56, 27,"Ecl");<br />
u8g.setPrintPos( 71, 27);<br />
u8g.print(heurM);<br />
u8g.drawStr( 80, 27,"h");<br />
u8g.setPrintPos( 85, 27);<br />
u8g.print(minM);<br />
<br />
//u8g.setFont(u8g_font_5x8);<br />
u8g.drawStr( 96, 27,"a");<br />
u8g.setPrintPos( 103, 27);<br />
u8g.print(heurA);<br />
u8g.drawStr( 113, 27,"h");<br />
u8g.setPrintPos( 118, 27);<br />
u8g.print(minA);<br />
<br />
////////////////// Affichage alarme température<br />
<br />
// u8g.setFont(u8g_font_4x6);<br />
<br />
//if (ma_tempetf > (setTemp + 2))<br />
<br />
//u8g.drawStr( 65, 37,"Temp Haute");<br />
<br />
//else <br />
<br />
// if (ma_tempetf < (setTemp - 2))<br />
<br />
//u8g.drawStr( 65, 37,"Temp Basse");<br />
<br />
//else<br />
<br />
//u8g.drawStr( 65, 37," ");<br />
<br />
}<br />
/////////////////////////////// Horloge analogique<br />
angles = (Seconde * 6)-90; <br />
anglem = (Minute * 6)-90; <br />
angleh = ((Heure * 30)-90) + ((anglem/12)+6);<br />
Serial.println (angleh);<br />
<br />
u8g.drawCircle(31,32,21);<br />
u8g.drawCircle(31,32,19);<br />
<br />
u8g.setFont(u8g_font_micro);<br />
u8g.drawStr( 54, 35, "3");<br />
u8g.drawStr( 30, 60, "6");<br />
u8g.drawStr( 5, 35, "9");<br />
u8g.drawStr( 28, 10, "12");<br />
<br />
u8g.drawStr( 40, 16, "."); //1<br />
u8g.drawStr( 47, 24, "."); //2<br />
u8g.drawStr( 50, 33, "."); //3<br />
u8g.drawStr( 47, 42, "."); //4<br />
u8g.drawStr( 41, 50, "."); //5<br />
u8g.drawStr( 31, 53, "."); //6<br />
u8g.drawStr( 21, 50, "."); //7<br />
u8g.drawStr( 14, 42, "."); //8<br />
u8g.drawStr( 11, 33, "."); //9<br />
u8g.drawStr( 14, 24, "."); //10<br />
u8g.drawStr( 21, 16, "."); //11<br />
u8g.drawStr( 31, 14, "."); //12<br />
<br />
xs = 31 + (cos(angles * rad)*18);<br />
ys = 32 + (sin(angles * rad)*18);<br />
u8g.drawLine(31, 32, xs, ys);<br />
<br />
<br />
xm = 31 + (cos(anglem * rad)*16);<br />
ym = 32 + (sin(anglem * rad)*16); <br />
u8g.drawLine(31, 32, xm, ym);<br />
u8g.drawLine(32, 31, xm, ym);<br />
<br />
<br />
xh = 31 + (cos(angleh * rad)*10);<br />
yh = 32 + (sin(angleh * rad)*10); <br />
u8g.drawLine(31, 32, xh, yh);<br />
u8g.drawLine(32, 31, xh, yh);<br />
<br />
////////////////////////////////////// Menu et règlages<br />
<br />
if ((Select > 0) and (Select < 13))<br />
{ <br />
u8g.drawStr(80,8,"REGLAGES"); <br />
<br />
if (Jour < 10) <br />
{ <br />
u8g.drawStr( 73, 15, "0");<br />
u8g.setPrintPos(77,15); <br />
u8g.print(Jour);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos(73,15); <br />
u8g.print(Jour);<br />
}<br />
<br />
u8g.drawStr( 83,15, ":"); <br />
<br />
if (Mois < 10) <br />
{ <br />
u8g.drawStr( 89, 15, "0");<br />
u8g.setPrintPos( 94, 15);<br />
u8g.print(Mois);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos(89,15);<br />
u8g.print(Mois);<br />
}<br />
<br />
u8g.drawStr( 100, 15, ":");<br />
<br />
u8g.setPrintPos( 105, 15);<br />
u8g.print(Annee); <br />
<br />
//xxxxxxxxxxxxxxxxxxxx<br />
<br />
if (Heure < 10)<br />
{ <br />
u8g.drawStr( 78, 25, "0");<br />
u8g.setPrintPos(82,25);<br />
u8g.print(Heure);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos(78,25);<br />
u8g.print(Heure);<br />
}<br />
<br />
u8g.drawStr( 88,25, ":");<br />
<br />
if (Minute < 10)<br />
{ <br />
u8g.drawStr(93, 25, "0");<br />
u8g.setPrintPos( 98, 25);<br />
u8g.print(Minute);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos( 93, 25);<br />
u8g.print(Minute);<br />
} <br />
<br />
u8g.drawStr( 105, 25, ":");<br />
<br />
if (Seconde < 10)<br />
{ <br />
u8g.drawStr(110, 25, "0");<br />
u8g.setPrintPos( 115, 25);<br />
u8g.print(Seconde);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos( 110, 25);<br />
u8g.print(Seconde);<br />
} <br />
<br />
//xxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
<br />
u8g.drawStr(65,35,"Marche"); <br />
{<br />
u8g.setPrintPos( 100, 35);<br />
u8g.print(heurM);<br />
} <br />
<br />
u8g.drawStr( 110, 35, ":");<br />
{<br />
u8g.setPrintPos( 115, 35);<br />
u8g.print(minM);<br />
} <br />
<br />
u8g.drawStr(65,45,"Arret");<br />
{<br />
u8g.setPrintPos( 100, 45);<br />
u8g.print(heurA);<br />
} <br />
<br />
u8g.drawStr( 110, 45, ":");<br />
<br />
{<br />
u8g.setPrintPos( 115, 45);<br />
u8g.print(minA);<br />
} <br />
<br />
u8g.drawStr(65,55,"Consigne");<br />
{<br />
u8g.setPrintPos( 105, 55);<br />
u8g.print(setTemp);<br />
} <br />
u8g.drawBitmapP( 113, 50, 1, 8, rook_bitmap);<br />
<br />
}<br />
<br />
val_key = 0; <br />
sensorValue = analogRead(sensorPin); <br />
val_key = int(sensorValue/100); <br />
<br />
////////////////////////////////////////////// Selection des reglages<br />
<br />
switch (val_key) <br />
{<br />
case 7 :<br />
{ <br />
Select = (Select + 1);<br />
delay (200);<br />
}<br />
break;<br />
} <br />
<br />
if (Select == 1) u8g.drawStr(65,62," Reglage jour");<br />
<br />
if (Select == 2) u8g.drawStr(65,62," Reglage mois");<br />
<br />
if (Select == 3) u8g.drawStr(65,62," Reglage annee");<br />
<br />
if (Select == 4) u8g.drawStr(65,62,"Reglage heures");<br />
<br />
if (Select == 5) u8g.drawStr(65,62,"Reglage minutes");<br />
<br />
if (Select == 6) u8g.drawStr(65,62,"Reglage Secondes"); <br />
<br />
if (Select == 7) u8g.drawStr(65,62,"Heure marche"); <br />
<br />
if (Select == 8) u8g.drawStr(65,62,"Minutes marche"); <br />
<br />
if (Select == 9) u8g.drawStr(65,62,"Heure arret"); <br />
<br />
if (Select == 10) u8g.drawStr(65,62,"Minutes arret");<br />
<br />
if (Select == 11) u8g.drawStr(45,62, "Consigne temperature");<br />
<br />
if (Select == 12) u8g.drawStr(65,62, "Enregistrer !");<br />
<br />
if (Select == 13)<br />
{<br />
(Select = 0);<br />
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// Entrée startAddr dans NV-RAM address 0x08 <br />
TimeIsSet = 0xffff;<br />
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); <br />
if (TimeIsSet != 0xaa55)<br />
{<br />
RTC.stopClock(); <br />
RTC.fillByYMD(Annee,Mois,Jour);<br />
RTC.fillByHMS(Heure,Minute,Seconde);<br />
<br />
RTC.setTime();<br />
TimeIsSet = 0xaa55;<br />
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));<br />
RTC.startClock();<br />
}<br />
else<br />
{<br />
RTC.getTime();<br />
} <br />
<br />
}<br />
//////////////// Touches +/- <br />
switch (val_key) <br />
<br />
{ <br />
case 3://-<br />
{ <br />
delay (200); <br />
if (Select == 1) <br />
{<br />
Jour = (Jour - 1);<br />
} <br />
if (Jour < 1) <br />
{<br />
(Jour = 31);<br />
}<br />
if (Select == 2)<br />
{ <br />
Mois = (Mois - 1);<br />
}<br />
if (Mois < 1) <br />
{<br />
(Mois = 12);<br />
} <br />
if (Select == 3)<br />
{<br />
Annee = (Annee - 1);<br />
}<br />
<br />
if (Select == 4) <br />
{<br />
Heure = (Heure - 1);<br />
} <br />
if (Heure < 1) <br />
{<br />
(Heure = 23);<br />
}<br />
if (Select == 5)<br />
{ <br />
Minute = (Minute - 1);<br />
}<br />
if (Minute < 1) <br />
{(<br />
Minute = 59);<br />
} <br />
if (Select == 6)<br />
{<br />
Seconde = (Seconde - 1);<br />
}<br />
if (Seconde < 1) <br />
{<br />
(Seconde = 59);<br />
}<br />
<br />
if (Select == 7)<br />
{<br />
heurM = (heurM - 1);<br />
}<br />
if (heurM < 1) <br />
{<br />
(heurM = 0);<br />
}<br />
if (heurM > 23) <br />
{<br />
(heurM = 0);<br />
}<br />
<br />
if (Select == 8)<br />
{<br />
minM = (minM - 1);<br />
}<br />
if (minM < 1) <br />
{<br />
(minM = 0);<br />
}<br />
if (minM >59) <br />
{<br />
(minM = 0);<br />
}<br />
<br />
if (Select == 9)<br />
{<br />
heurA = (heurA - 1);<br />
}<br />
if (heurA < 1) <br />
{<br />
(heurA = 0);<br />
}<br />
if (heurA> 23)<br />
{ <br />
(heurA = 0);<br />
}<br />
<br />
if (Select == 10)<br />
{<br />
minA = (minA - 1);<br />
}<br />
if (minA < 1) <br />
{<br />
(minA = 0);<br />
}<br />
if (minA >59) <br />
{<br />
(minA = 0);<br />
}<br />
<br />
if (Select == 11)<br />
{<br />
setTemp = (setTemp - 1);<br />
}<br />
if (setTemp > 32) <br />
{<br />
(setTemp = 0);<br />
} <br />
}<br />
break;<br />
<br />
case 1: //+<br />
{ <br />
delay (200);<br />
if (Select == 1) <br />
{<br />
Jour = (Jour + 1);<br />
} <br />
if (Jour > 31) <br />
{<br />
(Jour = 1);<br />
}<br />
if (Select == 2)<br />
{ <br />
Mois = (Mois + 1);<br />
}<br />
if (Mois > 12) <br />
{<br />
(Mois = 1);<br />
} <br />
if (Select == 3)<br />
{<br />
Annee = (Annee + 1);<br />
}<br />
<br />
if (Select == 4) <br />
{<br />
Heure = (Heure + 1);<br />
} <br />
if (Heure > 23) <br />
{<br />
(Heure = 0);<br />
}<br />
if (Select == 5)<br />
{ <br />
Minute = (Minute + 1);<br />
}<br />
if (Minute > 59 ) <br />
{<br />
(Minute = 0);<br />
} <br />
if (Select == 6)<br />
{<br />
Seconde = (Seconde + 1);<br />
}<br />
if (Seconde > 59) <br />
{<br />
(Seconde = 0);<br />
}<br />
<br />
if (Select == 7)<br />
{<br />
heurM = (heurM + 1);<br />
}<br />
if (heurM < 1) <br />
{<br />
(heurM = 0);<br />
}<br />
if (heurM> 23)<br />
{ <br />
(heurM = 0);<br />
}<br />
<br />
if (Select == 8)<br />
{<br />
minM = (minM + 1);<br />
}<br />
if (minM < 1) <br />
{<br />
(minM = 0);<br />
}<br />
if (minM >59) <br />
{<br />
(minM = 0);<br />
}<br />
<br />
if (Select == 9)<br />
{<br />
heurA = (heurA + 1);<br />
}<br />
if (heurA < 1) <br />
{<br />
(heurA = 0);<br />
}<br />
if (heurA> 23){ (heurA = 0);}<br />
<br />
if (Select == 10)<br />
{<br />
minA = (minA + 1);<br />
}<br />
if (minA < 1) <br />
{<br />
(minA = 0);<br />
}<br />
if (minA >59) <br />
{<br />
(minA = 0);<br />
}<br />
<br />
if (Select == 11)<br />
{<br />
setTemp = (setTemp + 1);<br />
}<br />
if (setTemp > 32) <br />
{<br />
(setTemp = 0);<br />
}<br />
}<br />
break;<br />
}<br />
}<br />
<br />
void loop() <br />
{ <br />
u8g.firstPage(); <br />
do <br />
Principal(); <br />
while( u8g.nextPage());<br />
<br />
}<br />
<br />
<h4>
<u><span style="color: orange;">Modifications en cours!!</span></u></h4>
Ajout de deux touches supplémentaire pour le réglage de la consigne pour ne pas avoir a rentrer dans le menu de programmation.<br />
<br />
Schéma de câblage en cours<br />
<br />
<br />
<h4>
<u><span style="color: orange;">Version finale </span></u></h4>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NxBpGdZWmhk/VGH6jdNPaHI/AAAAAAAAAq8/oLcUbjPDoA4/s1600/20141111_124043.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-NxBpGdZWmhk/VGH6jdNPaHI/AAAAAAAAAq8/oLcUbjPDoA4/s1600/20141111_124043.jpg" height="180" width="320" /></a></div>
<br />
<br />
<h4>
<u><span style="color: orange;">Les modifications:</span></u></h4>
<ul>
<li>Ajout de deux boutons pour réglage de la consigne sans entrer dans le menu mais le paramétrage en mode programmation reste</li>
<li>Consigne de température après coupure de courant 24° mini </li>
<li>Consigne éclairage après coupure de courant 10h30 a 20h30 </li>
<li>Adjonction d'un relai d'alarme</li>
</ul>
<h4>
<u><span style="color: orange;"> Le programme final (mais peut être modifié si vous avez des idées a me soumettre)</span></u></h4>
<br />
<br />
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//<br />
// //<br />
// AUTOMATE POUR AQUARIUM //<br />
// BY JOJO BRICOLO //<br />
// Sonde LM35DZ //<br />
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//<br />
<br />
<br />
<br />
#include <U8glib.h> <br />
#include <Wire.h><br />
#include <Math.h><br />
#include <DS1307new.h><br />
<br />
U8GLIB_ST7920_128X64_4X u8g(2, 5, 4); <br />
<br />
<br />
int angles,anglem,angleh,xs, ys, xm, ym, xh, yh;<br />
float rad;<br />
<br />
uint16_t startAddr = 0x0000; <br />
uint16_t lastAddr; <br />
uint16_t TimeIsSet = 0xaa55; <br />
//<br />
#define DDS_LOAD 12 <br />
#define DDS_CLOCK 3<br />
#define DDS_DATA 2<br />
<br />
#define Touche_PIN A0 <br />
int sensorPin = A0; <br />
int sensorValue = 0; <br />
int val_key;<br />
int Select;<br />
int Heure;<br />
int Minute;<br />
int Seconde;<br />
int Jour;<br />
int Mois;<br />
int Annee;<br />
<br />
int heurM = 10;<br />
int minM = 30;<br />
int heurA = 20;<br />
int minA = 30;<br />
<br />
int val1;<br />
int val2;<br />
int val3;<br />
int val4;<br />
<br />
int setTemp = 24; <br />
int Chauff = 11; <br />
int eclairage = 12;<br />
int alarme = 13;<br />
<br />
int bplus = 5; <br />
int bmoins = 6; <br />
<br />
int tempsensor =A1;<br />
<br />
float ma_tempetf=0.0; <br />
const uint8_t rook_bitmap[] PROGMEM = { // signe degré<br />
0x10, // 00010000 <br />
0x28, // 00101000<br />
0x28, // 00101000<br />
0x10, // 00010000<br />
0x00, // 00000000 <br />
0x00, // 00000000<br />
0x00, // 00000000 <br />
0x00 // 00000000<br />
}; <br />
<br />
void setup () {<br />
<br />
<br />
pinMode(Chauff, OUTPUT); // Relai chauffage<br />
pinMode (eclairage,OUTPUT); // Relai eclairage<br />
pinMode (alarme,OUTPUT); // Relai alarme<br />
<br />
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// RAM horloge<br />
TimeIsSet = 0xffff;<br />
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); <br />
RTC.ctrl = 0x00; <br />
<br />
RTC.setCTRL();<br />
<br />
<br />
u8g.setFont(u8g_font_5x8); // ecriture de base<br />
<br />
rad = ((2 * 3.1415926536) / 360);<br />
}<br />
////////////////////////// Fonctions Void<br />
<br />
void Principal()<br />
{<br />
sensorValue = analogRead(sensorPin); <br />
val_key = int(sensorValue/100); <br />
<br />
if (Select == 0) <br />
{ <br />
RTC.getTime();<br />
Heure = RTC.hour;<br />
Minute = RTC.minute;<br />
Seconde = RTC.second;<br />
Jour = RTC.day;<br />
Mois = RTC.month;<br />
Annee = RTC.year; <br />
<br />
//Logo By mi<br />
u8g.setFont(u8g_font_timB08);<br />
u8g.drawStr( 50,60, " By Jojo Bricolo");<br />
<br />
//////////////////////////////////// Affichage de l'Heure<br />
<br />
u8g.setFont(u8g_font_timB08);<br />
<br />
u8g.setPrintPos(56,18);<br />
u8g.print(Heure);<br />
u8g.drawStr( 68,18, "h");<br />
if (Minute < 10){ u8g.drawStr( 74, 18, "0");<br />
u8g.setPrintPos( 81, 18);<br />
u8g.print(Minute);}<br />
else<br />
{u8g.setPrintPos( 76, 18);<br />
u8g.print(Minute);} <br />
u8g.drawStr( 90,17, "-");<br />
<br />
////////// Affichage de la date<br />
<br />
u8g.setFont(u8g_font_5x7);<br />
{<br />
u8g.setPrintPos(60,8);<br />
u8g.print(Jour);<br />
}<br />
<br />
switch (RTC.month){<br />
case 1:<br />
u8g.drawStr( 69, 8, "Janv.");<br />
break;<br />
case 2:<br />
u8g.drawStr( 71, 8, "fev.");<br />
break;<br />
case 3:<br />
u8g.drawStr( 72, 8, " mars");<br />
break;<br />
case 4:<br />
u8g.drawStr( 72, 8, " avr. ");<br />
break;<br />
case 5:<br />
u8g.drawStr( 73, 8, " mai ");<br />
break;<br />
case 6:<br />
u8g.drawStr( 72, 8, " juin ");<br />
break;<br />
case 7:<br />
u8g.drawStr( 69, 8, "Juil.");<br />
break;<br />
case 8:<br />
u8g.drawStr( 72, 8, " aout ");<br />
break;<br />
case 9:<br />
u8g.drawStr( 69, 8, " sept.");<br />
break;<br />
case 10:<br />
u8g.drawStr( 72, 8, "oct.");<br />
break;<br />
case 11:<br />
u8g.drawStr( 72, 8, "nov.");<br />
break;<br />
case 12:<br />
u8g.drawStr( 72, 8, "dec.");<br />
break;<br />
}<br />
u8g.setPrintPos(96,8); //Année<br />
u8g.print(Annee);<br />
<br />
/////////////////////////////////////////// Temperature <br />
int reading = analogRead(tempsensor); <br />
float voltage = reading * 5.0 / 1024; <br />
float ma_tempetf = voltage * 100 ;<br />
<br />
/////////////////////////////////////// Affichage Temperature ////<br />
u8g.setFont(u8g_font_timB08);<br />
u8g.setPrintPos( 98, 18);<br />
u8g.print(ma_tempetf);<br />
u8g.drawBitmapP( 120, 11, 1, 8, rook_bitmap);<br />
<br />
//////////////////////////Commande consigne hors menu<br />
<br />
if ((val_key == 0)&&(setTemp ) <=99)<br />
<br />
{<br />
(setTemp ++);<br />
delay(100);<br />
}<br />
<br />
if ((setTemp)==32)<br />
{<br />
(setTemp=0); <br />
}<br />
<br />
if ((val_key == 5)&&(setTemp ) >=1)<br />
{<br />
(setTemp --);<br />
delay(100);<br />
} <br />
<br />
///////////////////////// Affichage consigne///////////////////////////////////////////////////<br />
<br />
u8g.setFont(u8g_font_4x6);<br />
u8g.drawStr( 64, 50,"Consigne");<br />
u8g.setPrintPos( 111, 50);<br />
u8g.print(setTemp);<br />
u8g.drawBitmapP( 120, 44, 1, 8, rook_bitmap);<br />
<br />
////////////// Commade chauffage<br />
<br />
u8g.setFont(u8g_font_4x6);<br />
if (ma_tempetf > setTemp)<br />
{ <br />
digitalWrite(Chauff, LOW);<br />
u8g.drawStr( 65, 35,"Chauff Arret");<br />
<br />
}<br />
if (ma_tempetf <= (setTemp-0.5))<br />
{<br />
digitalWrite(Chauff, HIGH);<br />
u8g.drawStr( 65, 35,"Chauff Marche");<br />
}<br />
<br />
/////////////////////// Commande eclairage<br />
val1 = (Heure*100)+Minute;<br />
val2 = (heurM*100)+minM;<br />
val3 = (heurA*100)+minA-1;<br />
<br />
if ((val1 >= val2) && (val1 <= val3))<br />
{ <br />
digitalWrite(eclairage, HIGH);<br />
}<br />
else<br />
<br />
{<br />
digitalWrite(eclairage, LOW);<br />
}<br />
////////////////////// Affichage consignes éclarage<br />
u8g.setFont(u8g_font_4x6);<br />
u8g.drawStr( 56, 26,"Ecl");<br />
u8g.setPrintPos( 71, 26);<br />
u8g.print(heurM);<br />
u8g.drawStr( 80, 26,"h");<br />
u8g.setPrintPos( 85, 26);<br />
u8g.print(minM);<br />
<br />
//u8g.setFont(u8g_font_5x8);<br />
u8g.drawStr( 96, 26,"a");<br />
u8g.setPrintPos( 103, 26);<br />
u8g.print(heurA);<br />
u8g.drawStr( 113, 26,"h");<br />
u8g.setPrintPos( 118, 26);<br />
u8g.print(minA);<br />
<br />
////////////////// Affichage alarme température<br />
<br />
u8g.setFont(u8g_font_4x6);<br />
<br />
if (ma_tempetf > (setTemp + 2))<br />
{<br />
u8g.drawStr( 59, 43,"Temperature Haute");<br />
digitalWrite (alarme,HIGH);<br />
}<br />
else <br />
<br />
if (ma_tempetf < (setTemp - 2))<br />
{<br />
u8g.drawStr( 59, 43,"Temperature Basse");<br />
digitalWrite (alarme,HIGH);<br />
}<br />
else<br />
{<br />
u8g.drawStr( 59, 43,"Temperature OK");<br />
digitalWrite (alarme,LOW);<br />
}<br />
<br />
}<br />
/////////////////////////////// Horloge analogique<br />
angles = (Seconde * 6)-90; <br />
anglem = (Minute * 6)-90; <br />
angleh = ((Heure * 30)-90) + ((anglem/12)+6);<br />
Serial.println (angleh);<br />
<br />
u8g.drawCircle(31,32,21);<br />
u8g.drawCircle(31,32,19);<br />
<br />
u8g.setFont(u8g_font_micro);<br />
u8g.drawStr( 54, 35, "3");<br />
u8g.drawStr( 30, 60, "6");<br />
u8g.drawStr( 5, 35, "9");<br />
u8g.drawStr( 28, 10, "12");<br />
<br />
u8g.drawStr( 40, 16, "."); //1<br />
u8g.drawStr( 47, 24, "."); //2<br />
u8g.drawStr( 50, 33, "."); //3<br />
u8g.drawStr( 47, 42, "."); //4<br />
u8g.drawStr( 41, 50, "."); //5<br />
u8g.drawStr( 31, 53, "."); //6<br />
u8g.drawStr( 21, 50, "."); //7<br />
u8g.drawStr( 14, 42, "."); //8<br />
u8g.drawStr( 11, 33, "."); //9<br />
u8g.drawStr( 14, 24, "."); //10<br />
u8g.drawStr( 21, 16, "."); //11<br />
u8g.drawStr( 31, 14, "."); //12<br />
<br />
xs = 31 + (cos(angles * rad)*18);<br />
ys = 32 + (sin(angles * rad)*18);<br />
u8g.drawLine(31, 32, xs, ys);<br />
<br />
<br />
xm = 31 + (cos(anglem * rad)*16);<br />
ym = 32 + (sin(anglem * rad)*16); <br />
u8g.drawLine(31, 32, xm, ym);<br />
u8g.drawLine(32, 31, xm, ym);<br />
<br />
<br />
xh = 31 + (cos(angleh * rad)*10);<br />
yh = 32 + (sin(angleh * rad)*10); <br />
u8g.drawLine(31, 32, xh, yh);<br />
u8g.drawLine(32, 31, xh, yh);<br />
<br />
////////////////////////////////////// Menu et règlages<br />
<br />
if ((Select > 0) and (Select < 13))<br />
{ <br />
u8g.drawStr(80,8,"REGLAGES"); <br />
<br />
if (Jour < 10) <br />
{ <br />
u8g.drawStr( 73, 15, "0");<br />
u8g.setPrintPos(77,15); <br />
u8g.print(Jour);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos(73,15); <br />
u8g.print(Jour);<br />
}<br />
<br />
u8g.drawStr( 83,15, ":"); <br />
<br />
if (Mois < 10) <br />
{ <br />
u8g.drawStr( 89, 15, "0");<br />
u8g.setPrintPos( 94, 15);<br />
u8g.print(Mois);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos(89,15);<br />
u8g.print(Mois);<br />
}<br />
<br />
u8g.drawStr( 100, 15, ":");<br />
<br />
u8g.setPrintPos( 105, 15);<br />
u8g.print(Annee); <br />
<br />
//xxxxxxxxxxxxxxxxxxxx<br />
<br />
if (Heure < 10)<br />
{ <br />
u8g.drawStr( 78, 25, "0");<br />
u8g.setPrintPos(82,25);<br />
u8g.print(Heure);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos(78,25);<br />
u8g.print(Heure);<br />
}<br />
<br />
u8g.drawStr( 88,25, ":");<br />
<br />
if (Minute < 10)<br />
{ <br />
u8g.drawStr(93, 25, "0");<br />
u8g.setPrintPos( 98, 25);<br />
u8g.print(Minute);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos( 93, 25);<br />
u8g.print(Minute);<br />
} <br />
<br />
u8g.drawStr( 105, 25, ":");<br />
<br />
if (Seconde < 10)<br />
{ <br />
u8g.drawStr(110, 25, "0");<br />
u8g.setPrintPos( 115, 25);<br />
u8g.print(Seconde);<br />
}<br />
else<br />
{<br />
u8g.setPrintPos( 110, 25);<br />
u8g.print(Seconde);<br />
} <br />
<br />
//xxxxxxxxxxxxxxxxxxxxxxxxxxxx<br />
<br />
u8g.drawStr(65,35,"Marche"); <br />
{<br />
u8g.setPrintPos( 100, 35);<br />
u8g.print(heurM);<br />
} <br />
<br />
u8g.drawStr( 110, 35, ":");<br />
{<br />
u8g.setPrintPos( 115, 35);<br />
u8g.print(minM);<br />
} <br />
<br />
u8g.drawStr(65,45,"Arret");<br />
{<br />
u8g.setPrintPos( 100, 45);<br />
u8g.print(heurA);<br />
} <br />
<br />
u8g.drawStr( 110, 45, ":");<br />
<br />
{<br />
u8g.setPrintPos( 115, 45);<br />
u8g.print(minA);<br />
} <br />
<br />
u8g.drawStr(65,55,"Consigne");<br />
{<br />
u8g.setPrintPos( 105, 55);<br />
u8g.print(setTemp);<br />
} <br />
u8g.drawBitmapP( 113, 50, 1, 8, rook_bitmap);<br />
<br />
}<br />
<br />
val_key = 0; <br />
sensorValue = analogRead(sensorPin); <br />
val_key = int(sensorValue/100); <br />
<br />
////////////////////////////////////////////// Selection des reglages<br />
<br />
switch (val_key) <br />
{<br />
case 7 :<br />
{ <br />
Select = (Select + 1);<br />
delay (200);<br />
}<br />
break;<br />
} <br />
<br />
if (Select == 1) u8g.drawStr(65,62," Reglage jour");<br />
<br />
if (Select == 2) u8g.drawStr(65,62," Reglage mois");<br />
<br />
if (Select == 3) u8g.drawStr(65,62," Reglage annee");<br />
<br />
if (Select == 4) u8g.drawStr(65,62,"Reglage heures");<br />
<br />
if (Select == 5) u8g.drawStr(65,62,"Reglage minutes");<br />
<br />
if (Select == 6) u8g.drawStr(65,62,"Reglage Secondes"); <br />
<br />
if (Select == 7) u8g.drawStr(65,62,"Heure marche"); <br />
<br />
if (Select == 8) u8g.drawStr(65,62,"Minutes marche"); <br />
<br />
if (Select == 9) u8g.drawStr(65,62,"Heure arret"); <br />
<br />
if (Select == 10) u8g.drawStr(65,62,"Minutes arret");<br />
<br />
if (Select == 11) u8g.drawStr(45,62, "Consigne temperature");<br />
<br />
if (Select == 12) u8g.drawStr(65,62, "Enregistrer !");<br />
<br />
if (Select == 13)<br />
{<br />
(Select = 0);<br />
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));// Entrée startAddr dans NV-RAM address 0x08 <br />
TimeIsSet = 0xffff;<br />
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); <br />
if (TimeIsSet != 0xaa55)<br />
{<br />
RTC.stopClock(); <br />
RTC.fillByYMD(Annee,Mois,Jour);<br />
RTC.fillByHMS(Heure,Minute,Seconde);<br />
<br />
RTC.setTime();<br />
TimeIsSet = 0xaa55;<br />
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));<br />
RTC.startClock();<br />
}<br />
else<br />
{<br />
RTC.getTime();<br />
} <br />
<br />
}<br />
//////////////// Touches +/- <br />
switch (val_key) <br />
<br />
{ <br />
case 3://-<br />
{ <br />
delay (200); <br />
if (Select == 1) <br />
{<br />
Jour = (Jour - 1);<br />
} <br />
if (Jour < 1) <br />
{<br />
(Jour = 31);<br />
}<br />
if (Select == 2)<br />
{ <br />
Mois = (Mois - 1);<br />
}<br />
if (Mois < 1) <br />
{<br />
(Mois = 12);<br />
} <br />
if (Select == 3)<br />
{<br />
Annee = (Annee - 1);<br />
}<br />
<br />
if (Select == 4) <br />
{<br />
Heure = (Heure - 1);<br />
} <br />
if (Heure < 1) <br />
{<br />
(Heure = 23);<br />
}<br />
if (Select == 5)<br />
{ <br />
Minute = (Minute - 1);<br />
}<br />
if (Minute < 1) <br />
{(<br />
Minute = 59);<br />
} <br />
if (Select == 6)<br />
{<br />
Seconde = (Seconde - 1);<br />
}<br />
if (Seconde < 1) <br />
{<br />
(Seconde = 59);<br />
}<br />
<br />
if (Select == 7)<br />
{<br />
heurM = (heurM - 1);<br />
}<br />
if (heurM < 1) <br />
{<br />
(heurM = 0);<br />
}<br />
if (heurM > 23) <br />
{<br />
(heurM = 0);<br />
}<br />
<br />
if (Select == 8)<br />
{<br />
minM = (minM - 1);<br />
}<br />
if (minM < 1) <br />
{<br />
(minM = 0);<br />
}<br />
if (minM >59) <br />
{<br />
(minM = 0);<br />
}<br />
<br />
if (Select == 9)<br />
{<br />
heurA = (heurA - 1);<br />
}<br />
if (heurA < 1) <br />
{<br />
(heurA = 0);<br />
}<br />
if (heurA> 23)<br />
{ <br />
(heurA = 0);<br />
}<br />
<br />
if (Select == 10)<br />
{<br />
minA = (minA - 1);<br />
}<br />
if (minA < 1) <br />
{<br />
(minA = 0);<br />
}<br />
if (minA >59) <br />
{<br />
(minA = 0);<br />
}<br />
<br />
if (Select == 11)<br />
{<br />
setTemp = (setTemp - 1);<br />
}<br />
if (setTemp > 32) <br />
{<br />
(setTemp = 0);<br />
} <br />
}<br />
break;<br />
<br />
case 1: //+<br />
{ <br />
delay (200);<br />
if (Select == 1) <br />
{<br />
Jour = (Jour + 1);<br />
} <br />
if (Jour > 31) <br />
{<br />
(Jour = 1);<br />
}<br />
if (Select == 2)<br />
{ <br />
Mois = (Mois + 1);<br />
}<br />
if (Mois > 12) <br />
{<br />
(Mois = 1);<br />
} <br />
if (Select == 3)<br />
{<br />
Annee = (Annee + 1);<br />
}<br />
<br />
if (Select == 4) <br />
{<br />
Heure = (Heure + 1);<br />
} <br />
if (Heure > 23) <br />
{<br />
(Heure = 0);<br />
}<br />
if (Select == 5)<br />
{ <br />
Minute = (Minute + 1);<br />
}<br />
if (Minute > 59 ) <br />
{<br />
(Minute = 0);<br />
} <br />
if (Select == 6)<br />
{<br />
Seconde = (Seconde + 1);<br />
}<br />
if (Seconde > 59) <br />
{<br />
(Seconde = 0);<br />
}<br />
<br />
if (Select == 7)<br />
{<br />
heurM = (heurM + 1);<br />
}<br />
if (heurM < 1) <br />
{<br />
(heurM = 0);<br />
}<br />
if (heurM> 23)<br />
{ <br />
(heurM = 0);<br />
}<br />
<br />
if (Select == 8)<br />
{<br />
minM = (minM + 1);<br />
}<br />
if (minM < 1) <br />
{<br />
(minM = 0);<br />
}<br />
if (minM >59) <br />
{<br />
(minM = 0);<br />
}<br />
<br />
if (Select == 9)<br />
{<br />
heurA = (heurA + 1);<br />
}<br />
if (heurA < 1) <br />
{<br />
(heurA = 0);<br />
}<br />
if (heurA> 23){ (heurA = 0);}<br />
<br />
if (Select == 10)<br />
{<br />
minA = (minA + 1);<br />
}<br />
if (minA < 1) <br />
{<br />
(minA = 0);<br />
}<br />
if (minA >59) <br />
{<br />
(minA = 0);<br />
}<br />
<br />
if (Select == 11)<br />
{<br />
setTemp = (setTemp + 1);<br />
}<br />
if (setTemp > 32) <br />
{<br />
(setTemp = 0);<br />
}<br />
}<br />
break;<br />
}<br />
}<br />
<br />
void loop() <br />
{ <br />
u8g.firstPage(); <br />
do <br />
Principal(); <br />
while( u8g.nextPage());<br />
<br />
}<br />
<br />
<h4>
<u><span style="color: orange;">Le schéma</span></u></h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Go3o1TTtSjs/VGIaEpRZXxI/AAAAAAAAArM/Se3LnoKFF98/s1600/schema.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://3.bp.blogspot.com/-Go3o1TTtSjs/VGIaEpRZXxI/AAAAAAAAArM/Se3LnoKFF98/s400/schema.jpg" width="400" /></a></div>
<br />
<h3>
<u><span style="color: orange;">Le câblage du clavier</span></u></h3>
<h3>
<br /></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-22Ba05rUGrI/VIh6rMen_ZI/AAAAAAAAArc/-NQ7RRwaS08/s1600/keypad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-22Ba05rUGrI/VIh6rMen_ZI/AAAAAAAAArc/-NQ7RRwaS08/s1600/keypad.png" height="320" width="192" /></a></div>
Schéma trouvé sur le net!<br /><h3>
<br /></h3>
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com46tag:blogger.com,1999:blog-1552666791524504649.post-60753651156624018042014-05-04T19:54:00.001+02:002014-05-17T14:32:14.972+02:00Régulation en température d'une vanne 3 voies<br />
Le principe de cette régulation est assez simple, la vanne s'ouvre ou se ferme suivant une consigne de température une fois celle-ci atteinte, elle s'arrête. Le consigne sera donnée par un potentiomètre multi-tours de 10Kohms et la mesure de température se fera a l'aide d'un LM35Z <br />
<br />
Le moteur étant piloté en ouverte et fermeture, j'ai donc mis deux relais.<br />
<br />
Il est prévu un affichage LCD indiquant<br />
<ul>
<li> la température de consigne </li>
<li>la température de sortie </li>
<li>l'état de la vanne (ouverture, fermeture ou arrêt).</li>
<li>le débit en L/min </li>
</ul>
<br />
<h3>
<u><span style="color: orange;">Le schéma</span></u></h3>
Comme toujours, avec arduino rien de compliqué !!!!<br />
<br />
Les transistors sont des BC 547, les résistances pour la base des 1Kohms et les relais sont en 5V.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-C4lt7WFdG6w/U2XYC9OFh9I/AAAAAAAAApI/b-Ex5ISBhEk/s1600/debitmetre_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-C4lt7WFdG6w/U2XYC9OFh9I/AAAAAAAAApI/b-Ex5ISBhEk/s1600/debitmetre_bb.jpg" height="400" width="398" /></a></div>
<br />
Le débitmètre est un modèle a effet hall, une impulsion représente 2,25ml.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Y2V4TMkSTfM/U2XZOy1XQ7I/AAAAAAAAApU/HoSDQXBpSf0/s1600/images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Y2V4TMkSTfM/U2XZOy1XQ7I/AAAAAAAAApU/HoSDQXBpSf0/s1600/images.jpg" /></a></div>
<h4>
<u><span style="color: orange;">Le programme</span></u></h4>
Le programme est assez simple, si on retire la partie gestion de la vanne, cela se résume a une trentaine lignes.<br />
<br />
/*<br />
**<br />
** Debit Meter<br />
**<br />
** http://www.arduino-creations.blogspot.fr<br />
*/<br />
<br />
#include "Debit.h"<br />
#include "LiquidCrystal.h"<br />
<br />
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);<br />
int sensorPin = A0;<br />
int PotPin = A1; // Entree potentiometre 10K<br />
int PotValue = 0; // variable de stockage consigne<br />
int setTemp = 0; // variable de stockage sonde<br />
int Vouv = 11;<br />
int Vfer = 12;<br />
<br />
const byte pinDebitMeter = 2; // Broche d'entrée du detecteur de débit<br />
const byte numInterrupt = 0; // Interruption<br />
const int period = 100; // Periode de base en millisecondes 1000<br />
<br />
const float CoefLitMin = 7.4;<br />
<br />
<br />
// Declaration du débimetre<br />
Debit myDebit(numInterrupt, pinDebitMeter, period);<br />
<br />
<br />
void setup() {<br />
myDebit.begin(); // Initialisation du comptage pour le bébimètre<br />
<br />
lcd.begin(20, 4);<br />
lcd.setCursor(4,1);<br />
lcd.print(" Mitigeur");<br />
lcd.setCursor(0,2);<br />
lcd.print(" Jojo ");<br />
lcd.setCursor(0,3);<br />
lcd.print(" Bricolo "); <br />
delay(4000);<br />
lcd.clear();<br />
}<br />
<br />
void loop() {<br />
<br />
delay(10);<br />
<br />
int reading = analogRead(sensorPin); <br />
float voltage = reading * 4.5 / 1024; <br />
int temp = voltage * 1000 ;<br />
<br />
//Récupération de la valeur du potentiomètre //******************************************************<br />
PotValue = analogRead(PotPin); <br />
<br />
setTemp = PotValue / 10.24; //Parametre consigne de 0 a 99 degres ici je n'utilise pas la fonction MAP car une simple division suffit.<br />
<br />
lcd.setCursor(0,0);<br />
lcd.print("Temperature : ");<br />
delay(10);<br />
lcd.print(temp);<br />
lcd.print("C "); <br />
<br />
// Affichage de la consigne *********************************************<br />
lcd.setCursor(0,1);<br />
lcd.print("Consigne : ");<br />
delay(10);<br />
lcd.print(setTemp);<br />
lcd.print("C "); <br />
<br />
myDebit.operate(); // Comptage<br />
<br />
if ((myDebit.DebiRate25Period()) == 0)<br />
{<br />
lcd.setCursor(0,2);<br />
lcd.print("Debit : ");<br />
<br />
lcd.print("0.00");<br />
lcd.print(" l/min ");<br />
}<br />
else<br />
{<br />
lcd.setCursor(0,2);<br />
lcd.print("Debit : ");<br />
lcd.print(CoefLitMin * myDebit.DebiRate25Period(), 2);<br />
lcd.print(" l/mn ");<br />
}<br />
<br />
<br />
<br />
if (temp < setTemp)<br />
{<br />
digitalWrite (Vouv,HIGH); <br />
digitalWrite (Vfer,LOW);<br />
lcd.setCursor(0,3);<br />
lcd.print("Ouverture vanne ");<br />
}<br />
<br />
else<br />
<br />
if (temp > setTemp)<br />
{<br />
digitalWrite (Vouv,LOW); <br />
digitalWrite (Vfer,HIGH); <br />
lcd.setCursor(0,3);<br />
lcd.print("Fermeture vanne ");<br />
}<br />
else <br />
<br />
if (temp == setTemp)<br />
{<br />
digitalWrite (Vouv,LOW); <br />
digitalWrite (Vfer,LOW);<br />
lcd.setCursor(0,3);<br />
lcd.print("Arret vanne ");<br />
}<br />
<br />
<br />
delay(100);<br />
}<br />
<br />
<br />
<span style="color: red;"><b>ATTENTION !!!! Pour faire fonctionner ce programme, il vous faut la librairie Debit.h que j'ai crée. Si ce montage vous intéresse, je vous envoie celle-ci.</b></span><br />
<br />
<span style="color: red;"><b>Le lien ci-dessous est un essai, merci de me dire si cela fonctionne car avec Blogger, on ne peut pas héberger des fichiers </b></span><br />
<br />
<a href="https://drive.google.com/file/d/0BxkT5m_x316mU01tYk80Y0V4MTQ/edit?usp=sharing" target="_blank">Téléchargement</a><br />
<br />
<br />
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span>Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com27tag:blogger.com,1999:blog-1552666791524504649.post-77625821320324003362014-03-27T22:16:00.000+01:002016-09-25T10:11:55.874+02:00CNC avec Arduino et GRBLJe vous propose de vous donner quelques tuyaux pour la réalisation d'une CNC avec Arduino et GRBL. J'ai déjà réalisé ma CNC, mon graveur laser et mon imprimante 3D e vous mettrait donc quelques photos.<br />
<h3>
<u><span style="color: orange;">La mécanique </span></u></h3>
<br />
Concernant la partie mécanique, je pense que vous avez tous votre idée et surement un budget.<br />
Voici des idées de montage<br />
<br />
Ma première CNC bois, alu et tôle <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-4ZAKgaDP18Q/UzSEFcOAdiI/AAAAAAAAAjw/8Lt0PweFJKE/s1600/20131109_134011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://2.bp.blogspot.com/-4ZAKgaDP18Q/UzSEFcOAdiI/AAAAAAAAAjw/8Lt0PweFJKE/s1600/20131109_134011.jpg" width="150" /></a><a href="http://3.bp.blogspot.com/-HBsVlSegDr8/UzSFUBpyP5I/AAAAAAAAAj4/uI38Fxp-hOU/s1600/20131117_125244.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://3.bp.blogspot.com/-HBsVlSegDr8/UzSFUBpyP5I/AAAAAAAAAj4/uI38Fxp-hOU/s1600/20131117_125244.jpg" width="200" /></a></div>
<br />
<br />
(ne faites pas attention au bordel lol)<br />
<br />
Pour la réalisation de celle-ci, j'ai utilisé des coulisses de tiroirs supportant 35Kgrs, des tiges filetées standard de 8, des moteurs NEMA 23 basiques et des 2M542 et drivers. La broche est une KRESS FME1, malgré une ossature et des guides pas vraiment prévus pour ce genre d'utilisation, j'ai fait des tas de choses comme la structure de mon laser en plexy.<br />
<br />
<h3>
<u><span style="color: orange;">Quelques réalisations avec cette machine</span></u></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ujs1rOtfhDc/UzSGgb-RkOI/AAAAAAAAAkE/VHjAyWy6RTU/s1600/20131125_193019.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://1.bp.blogspot.com/-ujs1rOtfhDc/UzSGgb-RkOI/AAAAAAAAAkE/VHjAyWy6RTU/s1600/20131125_193019.jpg" width="150" /></a><a href="http://1.bp.blogspot.com/-5aNCsEfbm_M/UzSGvqKtluI/AAAAAAAAAkM/NXJQx9n7p6I/s1600/20131202_212633.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://1.bp.blogspot.com/-5aNCsEfbm_M/UzSGvqKtluI/AAAAAAAAAkM/NXJQx9n7p6I/s1600/20131202_212633.jpg" width="150" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Fg5a1h9ANRc/UzSHUjSpdJI/AAAAAAAAAkg/5N4TFyVicws/s1600/20140124_180531.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://4.bp.blogspot.com/-Fg5a1h9ANRc/UzSHUjSpdJI/AAAAAAAAAkg/5N4TFyVicws/s1600/20140124_180531.jpg" width="112" /></a><a href="http://3.bp.blogspot.com/-sot7DDuEO5Q/UzSHlNpRnuI/AAAAAAAAAkk/6I3qJeGhd8A/s1600/20131102_102622.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://3.bp.blogspot.com/-sot7DDuEO5Q/UzSHlNpRnuI/AAAAAAAAAkk/6I3qJeGhd8A/s1600/20131102_102622.jpg" width="150" /></a></div>
<br />
<h3>
<u><span style="color: orange;">Voici quelques détails mécaniques de ma dernière fraiseuse CNC</span></u></h3>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-x-dRzMpr3Ig/UzSIfR4l7YI/AAAAAAAAAk0/yg8Oq_CALLM/s1600/20140131_002019.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://1.bp.blogspot.com/-x-dRzMpr3Ig/UzSIfR4l7YI/AAAAAAAAAk0/yg8Oq_CALLM/s1600/20140131_002019.jpg" width="179" /></a><a href="http://4.bp.blogspot.com/-2UaCLNOfsZ4/UzSLyyZs__I/AAAAAAAAAm8/zLpAztWGyek/s1600/A.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://4.bp.blogspot.com/-2UaCLNOfsZ4/UzSLyyZs__I/AAAAAAAAAm8/zLpAztWGyek/s1600/A.jpg" width="180" /></a></div>
<div style="text-align: left;">
</div>
<br />
<div style="text-align: left;">
<a href="http://1.bp.blogspot.com/-9TvdBpINiy8/UzSJPGeL0BI/AAAAAAAAAk8/aiMzYEKphSM/s1600/20140131_214631.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://1.bp.blogspot.com/-9TvdBpINiy8/UzSJPGeL0BI/AAAAAAAAAk8/aiMzYEKphSM/s1600/20140131_214631.jpg" width="180" /></a></div>
<br />
<a href="http://2.bp.blogspot.com/-Noq7jl764oQ/UzSJd6nMFzI/AAAAAAAAAlE/UD1s8B6W7Yg/s1600/20140131_214627.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><br />
<a href="http://1.bp.blogspot.com/-D6chVPVsvpA/UzSLDe_2EbI/AAAAAAAAAlc/qF9tr01Gx8A/s1600/20140131_234555.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://1.bp.blogspot.com/-D6chVPVsvpA/UzSLDe_2EbI/AAAAAAAAAlc/qF9tr01Gx8A/s1600/20140131_234555.jpg" width="180" /></a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-M6-sQnDt10w/UzSLFlGCykI/AAAAAAAAAls/G-JxZV-GKRI/s1600/20140131_234602.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://2.bp.blogspot.com/-M6-sQnDt10w/UzSLFlGCykI/AAAAAAAAAls/G-JxZV-GKRI/s1600/20140131_234602.jpg" width="180" /></a></div>
<br />
<br />
<a href="http://1.bp.blogspot.com/-RFVQjnp0AR4/UzSJsjAsQ1I/AAAAAAAAAlM/Kc0UUTTws7I/s1600/20140131_214640.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://1.bp.blogspot.com/-RFVQjnp0AR4/UzSJsjAsQ1I/AAAAAAAAAlM/Kc0UUTTws7I/s1600/20140131_214640.jpg" width="179" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-u5MDaJQh-mE/UzSKQedISnI/AAAAAAAAAlU/-zMJeqkrlrU/s1600/20140131_214651.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ypCi84-RfPk/UzSLO1KBUeI/AAAAAAAAAl8/_rmgTZYh8wU/s1600/20140201_144437.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/-ypCi84-RfPk/UzSLO1KBUeI/AAAAAAAAAl8/_rmgTZYh8wU/s1600/20140201_144437.jpg" width="180" /></a></div>
<a href="http://3.bp.blogspot.com/-eNWaHa3bFFM/UzSLKIujSDI/AAAAAAAAAl0/dnK7hCO9W08/s1600/20140201_144429.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/-eNWaHa3bFFM/UzSLKIujSDI/AAAAAAAAAl0/dnK7hCO9W08/s1600/20140201_144429.jpg" width="180" /></a><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-3cnZuotUYV0/UzSLTbLn1cI/AAAAAAAAAmE/2HIFVSuOwCQ/s1600/20140201_144449.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/-3cnZuotUYV0/UzSLTbLn1cI/AAAAAAAAAmE/2HIFVSuOwCQ/s1600/20140201_144449.jpg" width="180" /></a></div>
<a href="http://3.bp.blogspot.com/--Xu_DDbHxxI/UzSLb9FSpsI/AAAAAAAAAmU/9ZPkSmb9mwM/s1600/20140201_171037.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://3.bp.blogspot.com/--Xu_DDbHxxI/UzSLb9FSpsI/AAAAAAAAAmU/9ZPkSmb9mwM/s1600/20140201_171037.jpg" width="180" /></a><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-qy_S1unQaPg/UzSLfVlx9TI/AAAAAAAAAmc/T121mnDi1_g/s1600/20140201_171045.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://1.bp.blogspot.com/-qy_S1unQaPg/UzSLfVlx9TI/AAAAAAAAAmc/T121mnDi1_g/s1600/20140201_171045.jpg" width="180" /></a></div>
<a href="http://3.bp.blogspot.com/-TrGthVvggoE/UzSLo1Xbe5I/AAAAAAAAAms/t2RNWe9oW-4/s1600/20140221_194253.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="180" src="https://3.bp.blogspot.com/-TrGthVvggoE/UzSLo1Xbe5I/AAAAAAAAAms/t2RNWe9oW-4/s1600/20140221_194253.jpg" width="320" /></a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ZfEvrM-CvbU/UzSLkL_OYyI/AAAAAAAAAmk/0R6DsIa4n5I/s1600/20140219_063201.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="180" src="https://4.bp.blogspot.com/-ZfEvrM-CvbU/UzSLkL_OYyI/AAAAAAAAAmk/0R6DsIa4n5I/s1600/20140219_063201.jpg" width="320" /></a></div>
<a href="http://2.bp.blogspot.com/-fbHNQQCDdSA/UzSLu0utXHI/AAAAAAAAAm0/KjYCjdYmm88/s1600/20140307_172647.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="https://2.bp.blogspot.com/-fbHNQQCDdSA/UzSLu0utXHI/AAAAAAAAAm0/KjYCjdYmm88/s1600/20140307_172647.jpg" width="180" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Désolé pour les clopes lol !!!<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
J'éspère que cela va vous donner des idées !!!<br />
<h3>
<u><span style="color: orange;">L'électronique</span></u></h3>
<br />
Le choix concernant cette partie est assez délicat car les drivers doivent supporter la puissance des moteurs, certains drivers ont tendance a sauter des pas lorsque la machine force un peu. <br />
Voici le modèles les plus répandus pour arduino<br />
<br />
Très connu, il est constitué d'un circuit ULN2003 qui ne sert qu'a permettre a Arduino de piloter des sorties jusqu'a 500mA.<br />
Le code permute les deux enroulement l'un après l'autre a une certaine fréquence. On peut réaliser des choses sympa mais ne conviens pas pour une CNC.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-8X5BpzFoBbg/UzSQzrBTdJI/AAAAAAAAAnM/-tLfIXK0ty4/s1600/mRSrOl0EuM2DvXtRG4Vhmgw.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-8X5BpzFoBbg/UzSQzrBTdJI/AAAAAAAAAnM/-tLfIXK0ty4/s1600/mRSrOl0EuM2DvXtRG4Vhmgw.jpg" /></a></div>
<br />
Celui-ci est semblable a celui-ci dessus mais plus puissant donc idem pas top pour une CNC a moins de lui adjoindre un deuxième module.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-pPoTQub6Mi8/UzSR9jR-9xI/AAAAAAAAAnY/6NJu1d3y760/s1600/mu--Jo0_IrY1YZlnbstOGVA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-pPoTQub6Mi8/UzSR9jR-9xI/AAAAAAAAAnY/6NJu1d3y760/s1600/mu--Jo0_IrY1YZlnbstOGVA.jpg" /></a></div>
<br />
<br />
Easy driver est déjà un bon départ pour des petits moteurs jusqu'a 0.7A. Il est composé d'un circuit de puissance et permet de gérer les moteurs pas a pas avec simplement deux fils DIR et STEPS<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-d6bHv2kaVlM/UzSSrLoMntI/AAAAAAAAAng/_jszU64nTEk/s1600/mlpTJ7dypN-75p2ppD9LoQA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-d6bHv2kaVlM/UzSSrLoMntI/AAAAAAAAAng/_jszU64nTEk/s1600/mlpTJ7dypN-75p2ppD9LoQA.jpg" /></a></div>
Le dernier né qu'on retrouve actuellement un peu partout et surtout sur les imprimantes 3D. Il existe également avec un petit dissipateur de température. Malgré sa petite taille, il permet de piloter des moteurs jusqu’à 2A.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kkBAzAs7fiM/UzSTUIBXjgI/AAAAAAAAAnw/SPHz-ViOhcQ/s1600/m4alrAHDUtnGn0ka4gedF1w.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-kkBAzAs7fiM/UzSTUIBXjgI/AAAAAAAAAnw/SPHz-ViOhcQ/s1600/m4alrAHDUtnGn0ka4gedF1w.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-EuZJJu6Q_aQ/UzSS8pG7HVI/AAAAAAAAAno/wfjbysIxYks/s1600/$_14.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
Pour ce dernier driver, il existe des cartes qui sont en fait des supports et adaptation pour carte Arduino MEGA, celle-ci évite simplement le câblage a réaliser entre les drivers et l'Arduino. Sur la photo on voit les drivers enfichés dessus et la MEGA en-dessous.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-MfFJfbuwPy8/UzSUK4iEULI/AAAAAAAAAn4/3VXwfyb5lv8/s1600/mLSh2xKNyYV1yeOrK8LLEWw.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-MfFJfbuwPy8/UzSUK4iEULI/AAAAAAAAAn4/3VXwfyb5lv8/s1600/mLSh2xKNyYV1yeOrK8LLEWw.jpg" /></a></div>
<br />
<h3>
<u><span style="color: orange;">Un exemple de câblage de moteur avec easydriver</span></u></h3>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-mVQj6Uj99fc/UzSgmHAXWPI/AAAAAAAAAoI/FM_i3QbiQCQ/s1600/Moteur+pas+a+pas+unique+.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="https://4.bp.blogspot.com/-mVQj6Uj99fc/UzSgmHAXWPI/AAAAAAAAAoI/FM_i3QbiQCQ/s1600/Moteur+pas+a+pas+unique+.jpg" width="320" /></a></div>
<br />
<br />
<br />
Nous verrons un peu plus tard les programmes de pilotage des moteurs pas a pas avec Arduino.<br />
Allons directement a la partie la plus intéressante de ce sujet.<br />
<br />
<br />
<h3>
<u><span style="color: orange;">Le schéma de câblage</span></u></h3>
Ici, nous ne sommes pas dans le cas d'une imprimante 3D qui gère les différents élements chauffants ainsi que le moteur de l'extrudeur. Une carte UNO suffit donc amplement. pour la gestion de moteurs et fins de courses.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-bl84y-OzaxA/U0hS9bW2blI/AAAAAAAAAoc/HPauZpsSwC0/s1600/CNC+GRBL.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://3.bp.blogspot.com/-bl84y-OzaxA/U0hS9bW2blI/AAAAAAAAAoc/HPauZpsSwC0/s1600/CNC+GRBL.jpg" width="298" /></a></div>
<br />
<br />
J'utilise des drivers A4988 avec des moteurs NEMA 17. Comme vous pouvez le constater, il n'y a pas beaucoup de câblage a réaliser. J'ai réalisé un petit circuit imprimé du style shield qui va s'enficher directement sur la carte UNO.<br />
<br />
<br />
<h3>
<u><span style="color: orange;">Le typon</span></u></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-B9HD6TknIqY/U0hVN-k5yyI/AAAAAAAAAoo/RZN12nENgrI/s1600/composants.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://1.bp.blogspot.com/-B9HD6TknIqY/U0hVN-k5yyI/AAAAAAAAAoo/RZN12nENgrI/s1600/composants.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-RP8luWGKl1E/U0hVWSKPFLI/AAAAAAAAAo0/bAEN1v-U-cI/s1600/face1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://4.bp.blogspot.com/-RP8luWGKl1E/U0hVWSKPFLI/AAAAAAAAAo0/bAEN1v-U-cI/s1600/face1.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-aMSwwMvIEJg/U0hVv1H7ACI/AAAAAAAAAo8/QudK_LZHNaU/s1600/face+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="https://4.bp.blogspot.com/-aMSwwMvIEJg/U0hVv1H7ACI/AAAAAAAAAo8/QudK_LZHNaU/s1600/face+2.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Un petit double face et le tour est joué.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 class="separator" style="clear: both; text-align: left;">
<u><span style="color: orange;">Programme</span></u></h3>
Test de GRBL <br />
<br />
Dans la vidéo ci-dessous, vous pouvez voir le fonctionnement ( ce montage a été réalisé pour un laser donc pas de Z), la led représente le fonctionnement du laser.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/igTJuJ445nk?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<h3>
<u><span style="color: orange;">Des tas de questions et problèmes !!</span></u></h3>
1) Le meilleur compromis pour le pilotage de la CNC avec GRBL est GRBLcontroler, je l'utilise depuis quelques années maintenant et je n'ai jamais eu de problèmes. La version la mieux aboutie est la 3.6.1<br />
<br />
2) Pour configurer la machine, ne pas passer par le mode configuration de GRBLcontroler car souvent les paramètre ne sont pas envoyés dans la mémoire flash de l'arduino. Préférer d'envoyer les paramètres un par un en ligne de commande.<br />
<br />
exemple : $0 = 40 (pas par mm axe x) etc....<br />
<br />
<br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com37tag:blogger.com,1999:blog-1552666791524504649.post-88256933344494352332014-03-26T00:13:00.000+01:002014-05-17T14:25:27.381+02:00Arduino texte défilantJe vous propose aujourd'hui la fabrication d'un texte défilant avec des matrices a leds et des circuits MAX7219.<br />
<br />
<h2>
<u><span style="color: orange;">Le schéma</span></u></h2>
<br />
Je pourrais vous proposer de créer un circuit imprimé mais il existe des modules tout prêts intégrant le circuit MAX7219, l'afficheur et la connectique permettant leurs mise en série et ça ne coute que quelques euros.<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-tIDhi8RvB9M/UzH9ddLY2bI/AAAAAAAAAjM/V2SN55OM8OA/s1600/mE0lhluStMTSb5XA7msh9fw.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-tIDhi8RvB9M/UzH9ddLY2bI/AAAAAAAAAjM/V2SN55OM8OA/s1600/mE0lhluStMTSb5XA7msh9fw.jpg" /></a></div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-_ij54ausmSk/UzH8HIal87I/AAAAAAAAAjE/opmXGhLKUxw/s1600/texte+defilant.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-_ij54ausmSk/UzH8HIal87I/AAAAAAAAAjE/opmXGhLKUxw/s1600/texte+defilant.jpg" height="400" width="297" /></a></div>
Attention, sur la matrice que j'utilise, il n'y a que 5 broches donc commencez le câblage depuis la droite comme sur mon schéma. Le connecteur du bas est celui qui se trouve sous le circuit intégré.<br />
<br />
Je me suis limité a deux afficheurs, mais rien n'empêche d'en mettre plusieurs, il faut simplement les déclarer dans le programme.<br />
<br />
<br />
<br />
<h2>
<u><span style="color: orange;">Le programme</span></u></h2>
Je vous met ici deux programmes, dans le premier le texte enregistrées dans le module Arduino et le second programme permettra d'envoyer des messages via le moniteur série de Arduino.<br />
<br />
<h3>
<u><span style="color: orange;">Textes préprogrammés</span></u></h3>
/*<br />
################################################################################<br />
Texte défilant<br />
<br />
################################################################################<br />
*/<br />
<br />
<br />
<br />
#include <MaxMatrix.h><br />
#include <avr/pgmspace.h><br />
<br />
PROGMEM prog_uchar CH[] = {<br />
3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space<br />
1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !<br />
3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "<br />
5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #<br />
4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $<br />
5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %<br />
5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &<br />
1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '<br />
3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (<br />
3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )<br />
5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *<br />
5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +<br />
2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,<br />
4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -<br />
2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .<br />
4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /<br />
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0<br />
3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1<br />
4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2<br />
4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3<br />
4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4<br />
4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5<br />
4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6<br />
4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7<br />
4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8<br />
4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9<br />
2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :<br />
2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;<br />
3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <<br />
3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =<br />
3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // ><br />
4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?<br />
5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @<br />
4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A<br />
4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B<br />
4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C<br />
4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D<br />
4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E<br />
4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F<br />
4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G<br />
4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H<br />
3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I<br />
4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J<br />
4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K<br />
4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L<br />
5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M<br />
5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N<br />
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O<br />
4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P<br />
4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q<br />
4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R<br />
4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S<br />
5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T<br />
4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U<br />
5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V<br />
5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W<br />
5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X<br />
5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y<br />
4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z<br />
2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [<br />
4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash<br />
2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]<br />
3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // AT<br />
4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _<br />
2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `<br />
4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a<br />
4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b<br />
4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c<br />
4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d<br />
4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e<br />
3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f<br />
4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g<br />
4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h<br />
3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i<br />
4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j<br />
4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k<br />
3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l<br />
5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m<br />
4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n<br />
4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o<br />
4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p<br />
4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q<br />
4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r<br />
4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s<br />
3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t<br />
4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u<br />
5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v<br />
5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w<br />
5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x<br />
4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y<br />
3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z<br />
3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {<br />
1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |<br />
3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }<br />
4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~<br />
};<br />
<br />
int data = 10; <br />
int load = 9; <br />
int clock = 8; <br />
<br />
int maxInUse = 2; //A modifier pour changer le nombre d'afficheur, ici on en a deux<br />
<br />
MaxMatrix m(data, load, clock, maxInUse); <br />
<br />
byte buffer[10];<br />
<br />
// Les lignes de texte vous pouvez en rajoutez mais attention a la limite de la mémoire<br />
char string1[] = " Jojo Bricolo ... ";<br />
char string2[] = " Vous souhaite la bienvenue ";<br />
char string3[] = " sur arduino-creations-blogspot.fr ";<br />
<br />
void setup(){<br />
m.init(); // initialisation du MAX7219<br />
m.setIntensity(10); // Règlage de l'intensité lumineuse de 0 a 15<br />
Serial.begin(9600); // initialisation du prot série<br />
}<br />
<br />
void loop(){<br />
<br />
<br />
<br />
printStringWithShift(string1, 100); // 100 = vitesse de défilement soit 100ms<br />
printStringWithShift(string2, 100);<br />
printStringWithShift(string3, 100);<br />
<br />
}<br />
<br />
void printCharWithShift(char c, int shift_speed){<br />
if (c < 32) return;<br />
c -= 32;<br />
memcpy_P(buffer, CH + 7*c, 7);<br />
m.writeSprite(32, 0, buffer);<br />
m.setColumn(32 + buffer[0], 0);<br />
<br />
for (int i=0; i<buffer[0]+1; i++) <br />
{<br />
delay(shift_speed);<br />
m.shiftLeft(false, false);<br />
}<br />
}<br />
<br />
void printStringWithShift(char* s, int shift_speed){<br />
while (*s != 0){<br />
printCharWithShift(*s, shift_speed);<br />
s++;<br />
}<br />
}<br />
<br />
void printString(char* s)<br />
{<br />
int col = 0;<br />
while (*s != 0)<br />
{<br />
if (*s < 32) continue;<br />
char c = *s - 32;<br />
memcpy_P(buffer, CH + 7*c, 7);<br />
m.writeSprite(col, 0, buffer);<br />
m.setColumn(col + buffer[0], 0);<br />
col += buffer[0] + 1;<br />
s++;<br />
}<br />
}<br />
<br />
<h3>
<u><span style="color: orange;">Textes via le moniteur série</span></u></h3>
/*<br />
Texte moniteur série<br />
*/<br />
<br />
<br />
#include <MaxMatrix.h><br />
#include <avr/pgmspace.h><br />
<br />
PROGMEM prog_uchar CH[] = {<br />
3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space<br />
1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !<br />
3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "<br />
5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #<br />
4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $<br />
5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %<br />
5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &<br />
1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '<br />
3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (<br />
3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )<br />
5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *<br />
5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +<br />
2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,<br />
4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -<br />
2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .<br />
4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /<br />
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0<br />
3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1<br />
4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2<br />
4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3<br />
4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4<br />
4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5<br />
4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6<br />
4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7<br />
4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8<br />
4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9<br />
2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :<br />
2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;<br />
3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <<br />
3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =<br />
3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // ><br />
4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?<br />
5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @<br />
4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A<br />
4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B<br />
4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C<br />
4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D<br />
4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E<br />
4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F<br />
4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G<br />
4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H<br />
3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I<br />
4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J<br />
4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K<br />
4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L<br />
5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M<br />
5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N<br />
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O<br />
4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P<br />
4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q<br />
4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R<br />
4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S<br />
5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T<br />
4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U<br />
5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V<br />
5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W<br />
5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X<br />
5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y<br />
4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z<br />
2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [<br />
4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash<br />
2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]<br />
3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat<br />
4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _<br />
2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `<br />
4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a<br />
4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b<br />
4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c<br />
4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d<br />
4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e<br />
3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f<br />
4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g<br />
4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h<br />
3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i<br />
4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j<br />
4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k<br />
3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l<br />
5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m<br />
4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n<br />
4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o<br />
4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p<br />
4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q<br />
4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r<br />
4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s<br />
3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t<br />
4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u<br />
5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v<br />
5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w<br />
5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x<br />
4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y<br />
3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z<br />
3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {<br />
1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |<br />
3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }<br />
4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~<br />
};<br />
<br />
int data = 10; <br />
int load = 9; <br />
int clock = 8; <br />
<br />
int maxInUse = 2; //nombre de modules<br />
<br />
MaxMatrix m(data, load, clock, maxInUse); <br />
<br />
byte buffer[10];<br />
<br />
void setup(){<br />
m.init(); // module initialize<br />
m.setIntensity(10); // de 0 a 15<br />
Serial.begin(9600); <br />
}<br />
<br />
void loop(){<br />
<br />
<br />
while (Serial.available() > 0){<br />
byte c = Serial.read();<br />
Serial.println(c, DEC);<br />
printCharWithShift(c, 100);<br />
}<br />
delay(100);<br />
m.shiftLeft(false, true);<br />
<br />
}<br />
<br />
void printCharWithShift(char c, int shift_speed){<br />
if (c < 32) return;<br />
c -= 32;<br />
memcpy_P(buffer, CH + 7*c, 7);<br />
m.writeSprite(32, 0, buffer);<br />
m.setColumn(32 + buffer[0], 0);<br />
<br />
for (int i=0; i<buffer[0]+1; i++) <br />
{<br />
delay(shift_speed);<br />
m.shiftLeft(false, false);<br />
}<br />
}<br />
<br />
void printStringWithShift(char* s, int shift_speed){<br />
while (*s != 0){<br />
printCharWithShift(*s, shift_speed);<br />
s++;<br />
}<br />
}<br />
<br />
void printString(char* s)<br />
{<br />
int col = 0;<br />
while (*s != 0)<br />
{<br />
if (*s < 32) continue;<br />
char c = *s - 32;<br />
memcpy_P(buffer, CH + 7*c, 7);<br />
m.writeSprite(col, 0, buffer);<br />
m.setColumn(col + buffer[0], 0);<br />
col += buffer[0] + 1;<br />
s++;<br />
}<br />
}<br />
<br />
<br />
<h3>
<u><span style="color: orange;">En vidéo </span></u></h3>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/s2ypAukUwAc?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<h3>
<u><span style="color: orange;">Saisie directe</span></u></h3>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/M2EJ9xlWevg?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Pas de moquerie svp, dur dur de taper un texte en filmant LOL<br />
<br />
Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!<br />
<br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com19tag:blogger.com,1999:blog-1552666791524504649.post-79672142439446439342014-03-02T23:22:00.001+01:002016-04-14T20:39:04.045+02:00Arduino et les afficheursJe propose des montages avec des afficheurs LCD ou autre, voici une petite explication concernant leur mise en œuvre. Avec les librairies qu'on peut télécharger, c'est très simple, mais il faut parfois en modifier suivant l'afficheur et le brochage.<br />
<br />
<h4>
<u><span style="color: orange;">Afficheur LCD standard</span></u></h4>
On trouve dans le commerce pour quelques euros des afficheur de 1 a 4 lignes et de 4 a 20 caractères par lignes.<br />
<br />
Lorsqu'on utilise un simple afficheur, pas besoin de télécharger la librairie "LiquidCrystal", elle est déjà incluse dans l'IDE Arduino.<br />
<br />
<br />
<u>Le programme comportant un afficheur doit commencer par ces lignes.</u><br />
<br />
<b>#include <LiquidCrystal.h> // librairie pour l'afficheur LCD<br /><br />LiquidCrystal lcd( 7, 8, 9, 10, 11, 12); // définition des broches RS/E/D4/D5/D6/D7</b>, <b>elles seront toujours dans cet ordre coté afficheur, il faut vérifier le doc du constructeur mais en général c'est identique a l'image ci-dessous</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-rzusAJ_VZWQ/UxOrv_XGl2I/AAAAAAAAAho/G3NHEBdLi_E/s1600/LCD.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://3.bp.blogspot.com/-rzusAJ_VZWQ/UxOrv_XGl2I/AAAAAAAAAho/G3NHEBdLi_E/s1600/LCD.jpg" width="337" /></a></div>
<br />
Vous constaterez que lors de la définition des broches, on utilise pas toutes les bornes de l'afficheur, celles-ci seront mise a la masse.<br />
<br />
Après les déclaration, on configure l'afficheur <br />
<br />
<b>void setup() { </b><br />
<b><br /></b>
<b> lcd.begin(20,4); // initialisation de l'afficheur type soit ici 20 caractères et 4 lignes<br /> delay(10); // délai 10 ms pour l'initialisation<br /> lcd.clear(); // rafraichissement de l'afficheur<br /> delay(10); // délai de rafraichissement<br /> }</b><br />
<br />
<u>Viens ensuite l'affichage proprement dit</u><br />
<br />
<b>void loop(void) {</b><br />
<b><br /></b>
<b>lcd.setCursor(0,0); // on positionne le curseur caractère 0 ligne 0 cela aurait également put être 10,3<br /> lcd.print ("Bonjour"); // le texte a afficher on appel l'afficheur "lcd" puis on lui demande d'écrire "print" soit afficheur.écris "Bonjour"</b><br />
<b>}</b><br />
<br />
Si vous écrivez ces quelques lignes de programme ( sans mes commentaires), votre afficheur vous dira bonjour.<br />
<br />
<h2>
<u><span style="color: orange;">Le schéma de base</span></u></h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xOcd_Ndh7jY/UzCHEGTQ9pI/AAAAAAAAAic/jSSmYH_LgKU/s1600/sch%C3%A9ma+affichage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://3.bp.blogspot.com/-xOcd_Ndh7jY/UzCHEGTQ9pI/AAAAAAAAAic/jSSmYH_LgKU/s1600/sch%C3%A9ma+affichage.jpg" width="303" /></a></div>
<br />
<br />
<h3>
<u><span style="color: orange;">Un petit code simple</span></u></h3>
<br />
<br />
<b>#include <LiquidCrystal.h> <br />LiquidCrystal lcd( 1, 2, 3, 4, 5, 6); // définition des broches RS/E/D4/D5/D6/D7</b><br />
<br />
<br />
<b>void setup() { </b><br />
<b><br /></b>
<b> lcd.begin(16,2); // initialisation de l'afficheur type soit ici 16 caractères et 2 lignes<br /> delay(10); // délai 10 ms pour l'initialisation<br /> lcd.clear(); // rafraichissement de l'afficheur<br /> delay(10); // délai de rafraichissement<br /> }</b><br />
<b>void loop() {</b><br />
<b><br /></b>
<b>lcd.setCursor(0,0); // on positionne le curseur caractère 0 ligne 0 <br /> lcd.print
("Bonjour"); </b><br />
<b>lcd.setCursor(0,1);</b><br />
<b>lcd.print("je m appel joel"); </b><br />
<b>}</b><br />
<br />
<h3>
<u><span style="color: orange;">Affichage de l'appui sur un bouton poussoir</span></u></h3>
On garde le même schéma, on rajoute simplement un bouton poussoir<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-dHwuphemLIk/UzCsXddCVGI/AAAAAAAAAi0/KfpnkQS20bA/s1600/schema+affichage+avec+bp_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://1.bp.blogspot.com/-dHwuphemLIk/UzCsXddCVGI/AAAAAAAAAi0/KfpnkQS20bA/s1600/schema+affichage+avec+bp_bb.jpg" width="303" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-st-GawKbQ3M/UzCrnvEtwgI/AAAAAAAAAis/WuadlWfD1ek/s1600/schema+affichage+avec+bp_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
Vous noterez que le BP est raccordé a la masse et non a +, simplement parce que j'utilise la résistance interne de l'arduino.<br />
<br />
<br />
<u><b>Le sketch</b></u><br />
<br />
<br />
<b>#include <LiquidCrystal.h> <br />LiquidCrystal lcd( 1, 2, 3, 4, 5, 6); // définition des broches RS/E/D4/D5/D6/D7</b><br />
<b>int BP = 7; // broche sur laquelle est raccordée le BP </b><br />
<br />
<b>void setup() { </b><br />
<b><br /></b>
<b> lcd.begin(16,2); // initialisation de l'afficheur type soit ici 16 caractères et 2 lignes<br /> delay(10); // délai 10 ms pour l'initialisation<br /> lcd.clear(); // rafraichissement de l'afficheur<br /> delay(10); // délai de rafraichissement</b><br />
<b>pinMode(BP,</b><b>INPUT_PULLUP); // déclaration du Bouton en entrée avec résistance interne</b><br />
<b> }</b><br />
<br />
<b>void loop() {</b><br />
<b><br /></b>
<b>lcd.setCursor(0,0); // on positionne le curseur caractère 0 ligne 0 <br /> lcd.print
("Bonjour"); // on conserve la première ligne</b><br />
<b>lcd.setCursor(0,1);</b><br />
<b>if (digitalRead (BP) == HIGH) // si BP appuyé</b><br />
<b>{</b><br />
<b>lcd.print("Bouton appuye"); // texte affiché</b><br />
<b>}</b><br />
<b>else // ou si BP non appuyé</b><br />
<b>{ </b><br />
<b>lcd.print("Bouton relache");</b><br />
<b>}</b><br />
<b>} </b><br />
<b><br /></b>
A bientôt pour la suite affichage d'une valeur !!!<br />
<br />
<br />
<br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com10tag:blogger.com,1999:blog-1552666791524504649.post-69676329317033808892014-03-02T10:19:00.000+01:002014-05-17T14:26:00.320+02:00Variation de couleur d'un bandeau de leds RGB avec un potentiomètre ou une sonde de températurePetit montage permettant de faire varier la couleur d'une ou plusieurs leds RGB.<br />
<br />
Ce programme a été réalisé a la suite d'une demande faite sur le blog,
j'ai mis deux versions, l'une ou l'on fait varier les couleur a l'aide d'un potentiomètre. Pour la seconde c'est une sonde de température qui fait varier les couleurs, étant donné que je ne fais pas de conversion tension / température, il suffit de remplacer le potentiomètre par la sonde. <br />
<h4>
<u><span style="color: orange;">Le schéma</span></u></h4>
Le schéma est très simple, il vous faut<br />
- un potentiomètre 10 Kohms ou une TMP36<br />
- 3 résistances 1 Kohms<br />
- 3 transistors MOSFET canal N ( BUZ11 par exemple)<br />
<br />
<h4>
<u>Variation avec un potentiomètre </u></h4>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Qt01RLHJfZs/UxLy-xxNVhI/AAAAAAAAAhM/vf7yZEd7DvY/s1600/variation+RGB_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Qt01RLHJfZs/UxLy-xxNVhI/AAAAAAAAAhM/vf7yZEd7DvY/s1600/variation+RGB_bb.jpg" height="225" width="400" /></a></div>
<br />
<h4>
<u>Variation avec une sonde TMP36</u></h4>
Variation avec une TMP36 ou LM35 (c'est la même sonde, la seule chose qui change entre les deux est la précision)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-3pAf1X1yBdI/UxL2_KGvobI/AAAAAAAAAhY/dBkJxiDBoyI/s1600/Thermo+RGB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-3pAf1X1yBdI/UxL2_KGvobI/AAAAAAAAAhY/dBkJxiDBoyI/s1600/Thermo+RGB.jpg" height="235" width="400" /></a></div>
<br />
<br />
<h4>
<u> </u></h4>
On utilise ici 3 sorties PWM qui vont piloter les 3 transistors de puissance.<br />
<br />
<br />
<br />
<br />
<h4>
<u><span style="color: orange;">Le code</span></u></h4>
Le code est également très simple, on fait un découpage de la valeur de l'entrée analogique (0 à 1023)<br />
puis une lui affecte une gamme de couleur.<br />
<br />
<br />
<br />
/* <br />
Variation RGB by Jojo Bricolo<br />
<br />
Voici un lien vers un site qui donne la convertion des couleur en codes<br />
http://www.proftnj.com/RGB3.htm exemple blanc // 255 (rouge),255 (bleu) ,255 (vert)<br />
*/<br />
<br />
// Définition des broches<br />
int ledRouge = 10;<br />
int ledVerte = 9;<br />
int ledBleu = 11;<br />
<br />
// Broche potentiomètre ou TMP36<br />
int Tmpin = A1;<br />
<br />
<br />
<br />
// Variable des leds<br />
byte RougeVal = 0;<br />
byte VertVal = 0;<br />
byte BleuVal = 0;<br />
<br />
<br />
int TmpVal; // Mesure de tension du potentiomètre ou de la TMP36 (pas de conversion pour la sonde, la valeur se situe donc entre 0 et 1023 cela permet plus de possibilité )<br />
<br />
<br />
void setup()<br />
{<br />
pinMode(ledRouge, OUTPUT);<br />
pinMode(ledVerte, OUTPUT);<br />
pinMode(ledBleu, OUTPUT);<br />
<br />
}<br />
<br />
void loop()<br />
<br />
{<br />
TmpVal = analogRead(A1); <br />
<br />
<br />
// Teinte 1 >>>>>>>> Les teintes varient selon les leds<br />
<br />
// Mélange rouge vert<br />
<br />
if (TmpVal > 0 && TmpVal < 170) { // si la valeur de la TMP est supérieur a 0 et inférieur a 170<br />
RougeVal = 255; // Rouge au max<br />
//BleuVal = 0; // bleu a 0 avec possibilité d'en rajouter un peu valeur a donner entre 0 et 255.<br />
analogWrite(ledRouge, RougeVal);<br />
VertVal = map(TmpVal, 0, 170, 0, 255); // variation du vert par la fonction de conversion map on dit donc que 0 a 170 (maxi 1023) est égal a 0 a 255, 255 étant la puissance max de la couleur séléctionnée.<br />
analogWrite(ledVerte, VertVal);<br />
//analogWrite(ledBleu, BleuVal);<br />
}<br />
<br />
// // Teinte 2 <br />
if (TmpVal > 170 && TmpVal < 341) {<br />
VertVal = 255; // vert max<br />
// BleuVal = 0;<br />
analogWrite(ledVerte, VertVal);<br />
RougeVal = map(TmpVal, 341, 170, 0, 255); // variation rouge<br />
analogWrite(ledRouge, RougeVal);<br />
// analogWrite(ledBleu, BleuVal);<br />
}<br />
<br />
// Teinte 3<br />
if (TmpVal > 341 && TmpVal < 511) {<br />
VertVal = 255; // vert max<br />
//RougeVal = 0;<br />
analogWrite(ledVerte, VertVal);<br />
BleuVal = map(TmpVal, 341, 511, 0, 255); //variation du bleu<br />
analogWrite(ledBleu, BleuVal);<br />
//analogWrite(ledRouge, RougeVal);<br />
}<br />
<br />
// Teinte 4 <br />
if (TmpVal > 511 && TmpVal < 681) {<br />
BleuVal = 255;<br />
//RougeVal = 0;<br />
analogWrite(ledBleu, BleuVal);<br />
VertVal = map(TmpVal, 682, 511, 0, 255);<br />
analogWrite(ledVerte, VertVal);<br />
//analogWrite(ledRouge, RougeVal);<br />
}<br />
<br />
// // Teinte 5 <br />
if (TmpVal > 682 && TmpVal < 852) {<br />
BleuVal = 255;<br />
//VertVal = 0;<br />
analogWrite(ledBleu, BleuVal);<br />
RougeVal = map(TmpVal, 682, 852, 0, 255);<br />
analogWrite(ledRouge, RougeVal);<br />
//analogWrite(ledVerte, VertVal);<br />
}<br />
<br />
// // Teinte 6<br />
if (TmpVal > 852 && TmpVal < 1023) {<br />
RougeVal = 255;<br />
// VertVal = 0;<br />
analogWrite(ledRouge, RougeVal);<br />
BleuVal = map(TmpVal, 1023, 852, 0, 255);<br />
analogWrite(ledBleu, BleuVal);<br />
//analogWrite(ledVerte, VertVal);<br />
} <br />
}<br />
<br />
<h4>
<u><span style="color: orange;">En vidéo</span></u></h4>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/pptEzwCwfb8?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span>Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com8tag:blogger.com,1999:blog-1552666791524504649.post-22101672038353925852014-02-12T22:57:00.000+01:002014-05-17T14:27:07.519+02:00Commande de leds RVB en BluetoothJe vous propose ici de piloter des leds RVB avec une tablette ou un téléphone sous Androïde via Bluetooth.<br />
Nous avons vu précédemment un montage pilotant plusieurs leds, ici on va piloter une ou plusieurs leds RVB ou un bandeau de leds.<br />
<br />
<h4>
<u><span style="color: orange;">Le Schéma </span></u></h4>
<br />
Le schéma est assez simple, on utilise ici un ATM328 avec le bootloader UNO, un module bluetooth, quelques composants et 3 transistors MOSFET permettant de driver jusqu'a 4A sans chauffer.<br />
<br />
Comme vous pouvez le voir sur le schéma, il nous faut deux alimentations 1x12V et 1x5V il suffit de mettre un régulateur 7805 sur l'alimentation 12V, je ne l'ai pas mis sur le schéma (peut être un peu de fainéantise lol).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-WuYh3_Ih2vQ/Uvvk_VF0a4I/AAAAAAAAAgs/1V6JkOQuDxY/s1600/Sch%C3%A9ma+blue+rvb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-WuYh3_Ih2vQ/Uvvk_VF0a4I/AAAAAAAAAgs/1V6JkOQuDxY/s1600/Sch%C3%A9ma+blue+rvb.jpg" height="224" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<h4>
<u><span style="color: orange;">Le circuit terminé.</span></u></h4>
Pour gagner de la place, celui-ci est en double face<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-EVQCiM-ppE4/Uvvlv44fMLI/AAAAAAAAAg0/O7s6umbwOBM/s1600/P1010857.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-EVQCiM-ppE4/Uvvlv44fMLI/AAAAAAAAAg0/O7s6umbwOBM/s1600/P1010857.JPG" height="240" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jImVgvhq8SQ/UvvmRPcF3MI/AAAAAAAAAg8/0MLthgNZpeg/s1600/P1010858.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-jImVgvhq8SQ/UvvmRPcF3MI/AAAAAAAAAg8/0MLthgNZpeg/s1600/P1010858.JPG" height="240" width="320" /></a></div>
<br />
Comme vous pouvez le voir sur la face 2, j'ai apporté quelques modifications de dernière minutes, a la base j'étais parti sur le pilotage via un ULN 2803 mais vu le courant que consomme un bandeau de leds, j'ai laissé cette solution de coté et opter pour des transistors MOSFET. J'ai malgré tout laissé le dessin du circuit intégré, cela permet d'utiliser l'une ou l'autre des solution suivant l’utilisation que l'on veut faire du montage.<br />
<br />
<h4>
<u><span style="color: orange;">En vidéo</span></u></h4>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/mQsMnVj-Sf8?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Désolé, on ne voit pas bien les couleurs de la leds. Une petite précision concernant les leds, on a toujours tendance a prendre des leds haute luminosité c'est bien lorsqu'elle sont derrière un diffuseur sinon le mélange RVB ne se voit pas. L'idéal est de prendre des leds RVB diffusantes. Idem pour le bandeau de leds, attention il en existe deux sortes l'une ne permet pas le mélange des couleur (une couleur par led), la seconde est full color (les 3 couleurs sont dans la même led).<br />
<h4>
<u><span style="color: orange;">Le sketch</span></u></h4>
J'ai crée un programme permettant de piloter les leds par couleur<br />
- Rouge<br />
- Vert<br />
- Bleu<br />
- Jaune<br />
- Blanc<br />
- Blanc clair<br />
- Rose<br />
- Variation de couleur automatique<br />
<br />
<br />
/*Commande de leds RVB en Bluetooth via Android<br />
Mode de fonctionnement par couleurs<br />
<br />
Rouge<br />
Bleu<br />
Jaune<br />
Rose<br />
Bleu clair<br />
Blanc<br />
Automatique<br />
By Jojo Bricolo*/<br />
<br />
<br />
int ldr = 9;<br />
int ldv = 10;<br />
int ldb = 11;<br />
#define FADESPEED 10 // Vitesse de transition<br />
<br />
<br />
int state;<br />
int flag=0; <br />
void setup() {<br />
<br />
pinMode (ldr,OUTPUT);<br />
pinMode (ldv,OUTPUT);<br />
pinMode (ldb,OUTPUT);<br />
<br />
Serial.begin(9600);<br />
}<br />
<br />
void loop() {<br />
<br />
<br />
if(Serial.available() > 0){<br />
state = Serial.read();<br />
flag=0;<br />
}<br />
<br />
if (state == 'a') { <br />
digitalWrite (ldr,HIGH);<br />
digitalWrite (ldv,HIGH);<br />
digitalWrite (ldb,HIGH);<br />
<br />
if(flag == 0){<br />
Serial.println("Led Blanc");<br />
flag=1;<br />
}<br />
}<br />
else<br />
if (state == 'z') { <br />
digitalWrite (ldr,HIGH);<br />
digitalWrite (ldv,HIGH);<br />
digitalWrite (ldb,LOW);<br />
<br />
if(flag == 0){<br />
Serial.println("Led Jaune");<br />
flag=1;<br />
}<br />
}<br />
else<br />
if (state == 'e') { <br />
digitalWrite (ldr,HIGH);<br />
digitalWrite (ldv,LOW);<br />
digitalWrite (ldb,HIGH);<br />
<br />
if(flag == 0){<br />
Serial.println("Led Rose");<br />
flag=1;<br />
}<br />
}<br />
else<br />
if (state == 'r') { <br />
digitalWrite (ldr,LOW);<br />
digitalWrite (ldv,HIGH);<br />
digitalWrite (ldb,HIGH);<br />
<br />
if(flag == 0){<br />
Serial.println("Led Bleu clair");<br />
flag=1;<br />
}<br />
}<br />
else<br />
if (state == 't') { <br />
digitalWrite (ldr,LOW);<br />
digitalWrite (ldv,LOW);<br />
digitalWrite (ldb,HIGH);<br />
<br />
if(flag == 0){<br />
Serial.println("Led Bleu");<br />
flag=1;<br />
}<br />
}<br />
<br />
else<br />
if (state == 'y') { <br />
digitalWrite (ldr,LOW);<br />
digitalWrite (ldv,HIGH);<br />
digitalWrite (ldb,LOW);<br />
<br />
if(flag == 0){<br />
Serial.println("Led vert");<br />
flag=1;<br />
}<br />
}<br />
else<br />
if (state == 'u') { <br />
digitalWrite (ldr,HIGH);<br />
digitalWrite (ldv,LOW);<br />
digitalWrite (ldb,LOW);<br />
<br />
if(flag == 0){<br />
Serial.println("Led Rouge");<br />
flag=1;<br />
}<br />
}<br />
else<br />
if (state == 'h') { <br />
digitalWrite (ldr,LOW);<br />
digitalWrite (ldv,LOW);<br />
digitalWrite (ldb,LOW);<br />
<br />
if(flag == 0){<br />
Serial.println("Led : Arret");<br />
flag=1;<br />
}<br />
}<br />
else<br />
<br />
if (state == 'i') { <br />
Serial.println("Led Automatique");<br />
int r, g, b;<br />
for (r = 0; r < 256; r++) {<br />
analogWrite(ldr, r);<br />
delay(FADESPEED);<br />
}<br />
<br />
for (b = 255; b > 0; b--) {<br />
analogWrite(ldb, b);<br />
delay(FADESPEED);<br />
<br />
}<br />
<br />
for (g = 0; g < 256; g++) {<br />
analogWrite(ldv, g);<br />
delay(FADESPEED);<br />
}<br />
<br />
for (r = 255; r > 0; r--) {<br />
analogWrite(ldr, r);<br />
delay(FADESPEED);<br />
}<br />
<br />
for (b = 0; b < 256; b++) {<br />
analogWrite(ldb, b);<br />
delay(FADESPEED);<br />
}<br />
<br />
for (g = 255; g > 0; g--) {<br />
analogWrite(ldv, g);<br />
delay(FADESPEED);<br />
}<br />
<br />
if(flag == 0){<br />
<br />
flag=1;<br />
}<br />
}<br />
<br />
}<br />
<br />
void setColor(int red, int green, int blue)<br />
{<br />
analogWrite(ldr, 255-red);<br />
analogWrite(ldv, 255-green);<br />
analogWrite(ldb, 255-blue);<br />
<br />
}<br />
<br />
<br />
<br />
J'ai utilisé les lettres "a-z-e-r-t-y-u-i" pour les diverse couleurs et "h" pour l'arrêt mais rien ne vous empêche de modifier ces lettres. Petit détail, dans le programme j'utilise la fonction "delay" pour le mode fondue de couleur, cela ralenti la fonction suivante demandée quand ce mode est en cours. Donc si le module en fondu, que vous appuyer sur une couleur fixe le programme attends la fin de la séquence avant de valider la commande demandée.<br />
<br />
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span><br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com3tag:blogger.com,1999:blog-1552666791524504649.post-7253713016194384082014-02-08T22:15:00.000+01:002014-05-17T14:27:45.856+02:00Temporisation LCD de 1s a 99mn 99sVous trouverez ici une temporisation LCD réglable par boutons.<br />
<h4>
<u><span style="color: orange;">Le schéma</span></u></h4>
Très simple comme la plus part des montages a base de arduino.<br />
L'afficheur est un LCD 1x16 ligne.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-2x9yAw3rRNU/UvacrJmvmPI/AAAAAAAAAf0/wO01xcQhcrE/s1600/Tempo+blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-2x9yAw3rRNU/UvacrJmvmPI/AAAAAAAAAf0/wO01xcQhcrE/s1600/Tempo+blog.jpg" height="400" width="382" /></a></div>
<br />
Quoi de plus simple!!!! A la fin de la temporisation, le buzzer vibrera pendant 2 secondes.<br />
<br />
<h4>
<u><span style="color: orange;">Le code</span></u></h4>
/* Temporisation by Jojo Bricolo*/<br />
<br />
#include <LiquidCrystal.h><br />
<br />
int Bpdepart = 7; //Bouton start<br />
int Bpplus = 8; //Bouon +<br />
int Bpmoins = 9; //Bouton -<br />
int Relai = 10; //Base du transistor <br />
int buzzer = 11; //buzzer<br />
<br />
int upRead1 = 0; //variable Bouton +<br />
int upRead2 = 0; //Variable vitesse bouton +<br />
int downRead1 = 0; //variable Bouton -<br />
int downRead2 = 0; //Variable vitesse bouton -<br />
int startRead1 = 0; //variable Bouton start<br />
int startRead2 = 0; <br />
<br />
int timerCount = 0; //variable comptage<br />
int minutesCount = 0; //variable minutes<br />
int secondsCount = 0; //Variable secondes<br />
<br />
<br />
LiquidCrystal lcd(5, 6, 4, 3, 2, 1); // E, RS, D4, D5, D6, D7<br />
<br />
<br />
void setup() {<br />
lcd.print("Tempo");<br />
delay(1000);<br />
lcd.clear();<br />
lcd.print("Appui BP");<br />
pinMode(Relai, OUTPUT);<br />
pinMode(buzzer, OUTPUT);<br />
pinMode(Bpdepart, INPUT);<br />
pinMode(Bpplus, INPUT);<br />
pinMode(Bpmoins, INPUT);<br />
Serial.begin(9600); //open serial port<br />
}<br />
<br />
<br />
void lcdWrite()<br />
{<br />
lcd.setCursor(0, 0); <br />
lcd.print(minutesCount); //Affichage de la valeur des minutes<br />
lcd.setCursor(3, 0); <br />
lcd.print("min"); <br />
lcd.setCursor(0, 1); <br />
lcd.print(secondsCount); //Affichage de la valeur des minutes<br />
lcd.setCursor(3,1); <br />
lcd.print("sec"); <br />
}<br />
<br />
<br />
void loop() {<br />
<br />
//Gestion des boutons<br />
upRead1 = digitalRead(Bpplus);<br />
downRead1 = digitalRead(Bpmoins);<br />
startRead1 = digitalRead(Bpdepart);<br />
<br />
<br />
delay(40);<br />
upRead2 = digitalRead(Bpplus);<br />
downRead2 = digitalRead(Bpmoins);<br />
startRead2 = digitalRead(Bpdepart);<br />
<br />
<br />
delay(100);<br />
<br />
<br />
if(upRead1==upRead2 && upRead1==HIGH)<br />
{<br />
lcd.clear(); <br />
secondsCount = secondsCount+5; //Valeur d'incrémentation, ici de 5 en 5 secondes peut être modifié suivant les besoins<br />
if(secondsCount==60) <br />
{<br />
minutesCount++;<br />
secondsCount=0; <br />
}<br />
lcdWrite(); <br />
}<br />
<br />
<br />
if(downRead1==downRead2 && downRead1==HIGH)<br />
{<br />
lcd.clear(); //clear lcd<br />
secondsCount = secondsCount-5; // Valeur d'incrémentation, ici de 5 en 5 secondes peut être modifié suivant les besoins<br />
if(minutesCount>0) <br />
{<br />
if(secondsCount==-5) <br />
{<br />
secondsCount=55;<br />
minutesCount--;<br />
} <br />
else<br />
{<br />
if(secondsCount<0) <br />
{<br />
secondsCount = 0;<br />
minutesCount = 0;<br />
} <br />
}<br />
}<br />
lcdWrite();<br />
<br />
if(secondsCount<0)<br />
{<br />
secondsCount=0;<br />
lcd.clear();<br />
lcd.print("0");<br />
}<br />
} <br />
<br />
if(startRead1==startRead2 && startRead1==HIGH)<br />
{<br />
<br />
timerCount = (minutesCount*60) + secondsCount;<br />
int timerCount2 = timerCount;<br />
Serial.println(timerCount);<br />
for(int i=timerCount;i>0;i--)<br />
{<br />
lcd.clear();<br />
<br />
if(timerCount2>60)<br />
{<br />
minutesCount = timerCount2/60;<br />
secondsCount = timerCount2%60; <br />
}<br />
else if(secondsCount==60)<br />
{<br />
secondsCount=59; <br />
}<br />
else<br />
{<br />
minutesCount = 0;<br />
secondsCount = timerCount2; <br />
}<br />
<br />
<br />
lcdWrite();<br />
<br />
digitalWrite(Relai, HIGH);<br />
delay(1000);<br />
timerCount2--;<br />
}<br />
<br />
lcd.clear();<br />
lcd.print("Fin");<br />
<br />
digitalWrite(Relai, LOW);<br />
<br />
//turn on piezo buzzer<br />
analogWrite(buzzer, 255);<br />
delay(3000);<br />
<br />
analogWrite(buzzer, 0);<br />
delay(2000);<br />
lcd.clear();<br />
lcd.print("Tempo");<br />
delay(3000);<br />
lcd.clear();<br />
lcd.print("BY JOJO"); // vous pouvez ici mettre votre nom<br />
<br />
<br />
timerCount = 0;<br />
minutesCount = 0;<br />
secondsCount = 0;<br />
}<br />
<br />
}<br />
<br />
<br />
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span><br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com3tag:blogger.com,1999:blog-1552666791524504649.post-62634247657503264712014-02-08T17:15:00.000+01:002016-01-04T12:46:12.627+01:00Thermostat multi sondes et multi sorties a affichage LCD<h2>
</h2>
<h4>
<u><span style="color: orange;">Version afficheur 128X64</span></u></h4>
<br />
<br />
Aujourd’hui, je vous propose la réalisation d'un thermostat a affichage digital utilisant 1 a 10 sondes ds18B20. Cette réalisation servira pour la régulation des diverses température du graveur Laser. Rien n'interdit de l'utiliser pour la gestion du chauffage ou pour avoir plusieurs indications de température.<br />
<br />
<br />
Le schéma est assez simple, j'utilise un afficheur 128x64 avec la librairie GLCD a télécharger <a href="http://code.google.com/p/glcd-arduino/downloads/list" target="_blank">ici</a><br />
L'avantage de l'afficheur 128x64 est qu'on peut mettre des petits dessins, un fichier java permettant de générer un fichier .h a partir d'une image est joint dans la librairie, je vous montrerai un peu plus loin comment l'utiliser.<br />
<h4>
<u><span style="color: orange;">Le schéma </span></u></h4>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ErOTZKzhci4/UvZL1Pa-iSI/AAAAAAAAAfU/Y78goyg1_c4/s1600/schema+thermostat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://1.bp.blogspot.com/-ErOTZKzhci4/UvZL1Pa-iSI/AAAAAAAAAfU/Y78goyg1_c4/s1600/schema+thermostat.jpg" width="308" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Le schéma est assez simple, afin de pouvoir câbler de cette manière, j'ai du modifier l'ordre des broches dans la librairie. Sinon le câblage est éparpillé sur la UNO. L'afficheur est piloté par un K01008 mais d'autres afficheurs peuvent être utilisés avec la même librairie.</div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: red;"> Dans le schéma j'ai oublié de donner la valeur de la résistance se trouvant sur les sondes, il s'agit d'une 4K7.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h4 class="separator" style="clear: both; text-align: left;">
<u><span style="color: orange;">Le code</span></u></h4>
<div class="separator" style="clear: both; text-align: left;">
#include <glcd.h></div>
#include <OneWire.h><br />
#include <DallasTemperature.h><br />
#define ONE_WIRE_BUS_PIN A5 // raccordement des sondes sur la broche A6<br />
OneWire oneWire(ONE_WIRE_BUS_PIN);<br />
DallasTemperature sensors(&oneWire);<br />
DeviceAddress Probe01 = { <br />
0x28, 0x7F, 0x47, 0xFC, 0x04, 0x00, 0x00, 0xE7 }; <br />
DeviceAddress Probe02 = { <br />
0x28, 0x59, 0x92, 0xFC, 0x04, 0x00, 0x00, 0x6F };<br />
DeviceAddress Probe03 = { <br />
0x28, 0x59, 0x92, 0xFC, 0x04, 0x00, 0x00, 0x6F };<br />
// Les adresses des sondes peuvent être trouvées grace a un petit programme arduino<br />
<br />
<br />
#include "fonts/Arial14.h" <br />
#include "fonts/SystemFont5x7.h" <br />
#include "bitmaps/JhIcon.h" <br />
#include "fonts/Arial_bold_14.h" <br />
#include "fonts/Corsiva_12.h"<br />
#include "fonts/Verdana_digits_24.h" <br />
#include "fonts/fixednums7x15.h" <br />
#include "fonts/fixednums8x16.h" <br />
#include "fonts/fixednums15x31.h" <br />
//#include "bitmaps/thermo.h" // image a remplacer, dans la librairie il y a un fichier java permettant de convertir de petites images.<br />
<br />
<br />
#if DISPLAY_HEIGHT < 64<br />
#error ks0108 example requires a display at least 64 pixels tall<br />
#endif<br />
#if DISPLAY_WIDTH < 128<br />
#error ks0108 example requires a display at least 128 pixels wide<br />
#endif<br />
<br />
//unsigned long startMillis;<br />
//unsigned int loops = 0;<br />
//unsigned int iter = 0;<br />
<br />
<br />
int R1 = A0; // relai 1<br />
int R2 = A1;//relai 2<br />
int R3 = A2; //relai 3<br />
<br />
int value_T1 = 0;<br />
int value_T2 = 0;<br />
int value_T3 = 0;<br />
<br />
int consT1 = 23; // consigne de température T1<br />
int consT2 = 24;<br />
int consT3 = 25;<br />
<br />
void setup(){<br />
sensors.setResolution(Probe01,10);<br />
sensors.setResolution(Probe02, 10);<br />
<br />
GLCD.Init(NON_INVERTED); // initialisation de l'afficheur en fond clair pour un fond sombre, il suffit d'enlever le NON_<br />
GLCD.ClearScreen(); <br />
<br />
<br />
pinMode (R1,OUTPUT);<br />
pinMode (R2,OUTPUT);<br />
pinMode (R3,OUTPUT);<br />
}<br />
<br />
<br />
void loop(){ <br />
<br />
GLCD.SelectFont(SystemFont5x7); <br />
GLCD.GotoXY(2, 2);<br />
GLCD.DrawRoundRect(0,0,127,63, 5, BLACK); <br />
<br />
sensors.requestTemperatures();<br />
<br />
GLCD.GotoXY(22, 24);<br />
<br />
GLCD.SelectFont(Corsiva_12);<br />
GLCD.Puts("Temp 1 "); // texte affiché a modifier selon vos envies<br />
printTemperature(Probe01);<br />
<br />
GLCD.GotoXY(22, 36);<br />
GLCD.Puts("Temp 2 "); <br />
printTemperature(Probe02);<br />
delay(1000); <br />
}<br />
<br />
void printTemperature(DeviceAddress deviceAddress)<br />
{<br />
float tempC = sensors.getTempC(deviceAddress);<br />
<br />
if (tempC == -127.00) <br />
{<br />
GLCD.Puts("Erreur "); message d'erreur si une des sondes est déconnectée<br />
} <br />
else<br />
{<br />
<br />
GLCD.PrintNumber(tempC);<br />
GLCD.Puts("C ");<br />
}<br />
<br />
<br />
//xxxxxxxxxxxxxxxxxx temperaturexxxxxxxxxxxxxxx<br />
<br />
int temp1 = sensors.getTempC(Probe01); // déclaration des température associée a la sonde<br />
int temp2 = sensors.getTempC(Probe02);<br />
int temp3 = sensors.getTempC(Probe03);<br />
{<br />
digitalWrite (R2,HIGH);<br />
}<br />
<br />
if ((temp1) >= consT1 + 1)<br />
<div class="separator" style="clear: both; text-align: left;">
// formule a adapter suivant les besoins, ici on dit : si la température de la sonde 1 est égale ou supérieur a la consigne consT1 + 1°, on commande le relais sinon on l'éteint</div>
// cela veut dire que si on donne une consigne de 20°, a 21° le relai s'enclenche et a 19.9° il s'éteint<br />
{<br />
digitalWrite (R1,HIGH); // allumage relai 1<br />
}<br />
else<br />
<br />
{<br />
digitalWrite (R1,LOW);<br />
}<br />
<br />
if ((temp2) >= consT2 + 1) <br />
{<br />
digitalWrite (R2,HIGH);<br />
}<br />
<br />
else<br />
{<br />
digitalWrite (R2,LOW);<br />
}<br />
<br />
if ((temp3) >= consT3 + 1) <br />
{<br />
digitalWrite (R3,HIGH);<br />
}<br />
else<br />
{<br />
digitalWrite (R3,LOW);<br />
}<br />
}<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h4 class="separator" style="clear: both; text-align: left;">
<u><span style="color: orange;">Version 4x20 lignes</span></u></h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-rcAPARhkbbA/UvaK18LTJRI/AAAAAAAAAfk/v5u0GRtsYag/s1600/thermostat+4x20.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="356" src="http://2.bp.blogspot.com/-rcAPARhkbbA/UvaK18LTJRI/AAAAAAAAAfk/v5u0GRtsYag/s1600/thermostat+4x20.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Sur ce schéma, il y a un afficheur 2x16 lignes, cela conviens aussi il suffit de faire les bonnes déclarations dans le sketch. Le câblage entre le 2x16 et le 4x20 lignes est identique.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h4 class="separator" style="clear: both; text-align: left;">
<u><span style="color: orange;">Le code</span></u></h4>
<div class="separator" style="clear: both; text-align: left;">
#include <OneWire.h></div>
#include <DallasTemperature.h><br />
#include <Wire.h><br />
#include <LiquidCrystal.h><br />
LiquidCrystal lcd (5,6,4,3,2,1);<br />
<br />
#define ONE_WIRE_BUS 15<br />
<br />
OneWire oneWire(ONE_WIRE_BUS);<br />
DallasTemperature sensors(&oneWire);<br />
<br />
DeviceAddress Probe01 = { 0x28, 0x13, 0x2A, 0xA8, 0x04, 0x00, 0x00, 0x72 }; <br />
DeviceAddress Probe02 = { 0x28, 0x71, 0x17, 0xA8, 0x04, 0x00, 0x00, 0xB7 }; <br />
DeviceAddress Probe03 = { 0x28, 0x35, 0x98, 0xFC, 0x04, 0x00, 0x00, 0x6C }; <br />
<br />
<br />
void setup() {<br />
<br />
<br />
sensors.begin();<br />
<br />
sensors.setResolution(Probe01, 10);<br />
sensors.setResolution(Probe02, 10);<br />
sensors.setResolution(Probe03, 10);<br />
<br />
<br />
lcd.begin (20,4);<br />
delay (10);<br />
lcd.clear ();<br />
delay (10);<br />
lcd.setCursor (3,1);<br />
lcd.print ("Fraiseuse CNC");<br />
lcd.setCursor (2,2);<br />
lcd.print ("BY JOJO BRICOLO");<br />
delay(4000);<br />
lcd.clear ();<br />
delay (10);<br />
<br />
}<br />
<br />
void loop() {<br />
//lcd.clear ();<br />
//delay (10);<br />
sensors.requestTemperatures();<br />
<br />
lcd.setCursor(0,3); //Start at character 0 on line 0<br />
lcd.print("X");<br />
displayTemperature(Probe01); <br />
<br />
lcd.setCursor(7,3); //Start at character 0 on line 1<br />
lcd.print("Y");<br />
displayTemperature(Probe02); <br />
<br />
lcd.setCursor(14,3); //Start at character 0 on line 2<br />
lcd.print("Z");<br />
displayTemperature(Probe03); <br />
<br />
delay(1000);<br />
<br />
}<br />
<br />
void displayTemperature(DeviceAddress deviceAddress)<br />
{<br />
<br />
float tempC = sensors.getTempC(deviceAddress);<br />
<br />
if (tempC == -127.00) // Measurement failed or no device found<br />
{<br />
lcd.print("Erreur");<br />
} <br />
else<br />
{<br />
//lcd.print("C=");<br />
lcd.print(tempC);<br />
<br />
}<br />
} <br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h4 class="separator" style="clear: both; text-align: left;">
<u><span style="color: orange;">Le sketch pour trouver l'adresse des DS 18B20</span></u></h4>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span>Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com39tag:blogger.com,1999:blog-1552666791524504649.post-58087425638107596552013-12-27T01:20:00.004+01:002014-04-20T21:36:39.115+02:00CNC Laser suiteNouvelle page pour la partie électronique, ce sera plus simple.<br />
<br />
Je rappel que ceux qui souhaitent avoir les divers programmes soit Gcode pour la mécanique ou programme arduino peuvent me les demander en me laissant un message.<br />
<br />
<br />
<h2>
<span style="color: red;">Petit Rappel très important:</span></h2>
N'oubliez pas que le laser est dangereux, ce n'est pas un jouet comme ceux qu'on trouve dans la guerre des étoiles lol.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/--xA4SBUS43U/UrzKGvCOdOI/AAAAAAAAAVA/04VXfoSAB3s/s1600/P1010623.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/--xA4SBUS43U/UrzKGvCOdOI/AAAAAAAAAVA/04VXfoSAB3s/s320/P1010623.JPG" height="240" width="320" /></a></div>
<br />
C'est même marqué dessus alors n'oubliez pas vos lunettes (celles de protection, pas celles de vue) adaptées a la longueur d'onde de votre laser<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-kpcXRsGALzI/UrzKkkz_bqI/AAAAAAAAAVI/KPdokDC6YRs/s1600/P1010801.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-kpcXRsGALzI/UrzKkkz_bqI/AAAAAAAAAVI/KPdokDC6YRs/s320/P1010801.JPG" height="240" width="320" /></a></div>
Bon ça va!!! je suis pas rasé et tout et tout mais ....... je porte les lunettes de protection!!!!!<br />
<br />
<h3>
<span style="color: orange;"><u>Le driver et son paramétrage</u></span></h3>
<br />
Comme je vous l'avait dit, j'ai récupéré une carte chinoise qui beugait, elle sautais des pas en Z. Comme je n'utilise pas l' axe Z en automatique cela ne me dérange pas.<br />
<br />
Pour les raccordement, il suffit de se fier a la doc fournie par le vendeur.<br />
<br />
Le paramétrage des entrées sortie a déjà été traité, je vais donc vous parler des paramètres de vitesse.<br />
Pour commencer, il faut déjà prendre en compte le nombre de pas moteur, en général 200 pas. Le rapport d'avance de la vis par tour exemple, une vis standard de 8 avance de 1.25 mm par tour.<br />
Pour certains drivers notamment celui que j'utilise il suffit de multiplier le nombre de pas par l'avance de la vis.<br />
<br />
Soit dans mon cas pour une vis hélicoïdale de 8 ayant une évolution de 1.5mm par tour le calcul est:<br />
<br />
<span style="font-size: large;">200 / 1.5 = 133.3333</span><br />
<br />
Le calcul finale est:<br />
<span style="font-size: large;">200 pas / 1.5 mm/tour x 2 = 266.6666 pas, on vas donc renseigner la case pas par mm et y mettre le résultat de calcul</span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-YRJHaXrHjaI/UrzCrmjSakI/AAAAAAAAAUY/lV1NflDSS70/s1600/9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-YRJHaXrHjaI/UrzCrmjSakI/AAAAAAAAAUY/lV1NflDSS70/s400/9.JPG" height="320" width="400" /></a></div>
sur cette photo, on a 320 qui correspond a une tige de 8 standard cette case est a renseigner pour chaque axe et a sauvegarder a chaque fois en cliquant sur " Enregistrer l'axe en cours"<br />
<br />
Cette fenêtre étant ouverte, on peut paramétrer la vitesse de manière très simple.<br />
Il suffit de faire monter le curseur a coté du graphique et d'appuyer sur lest flèches hautes et basses du clavier. Le moteur va tourner dans un sens puis dans l'autre faite cette manip jusqu’à ce que le moteur ne tourne plus correctement, cela veut dire que le vitesse demandée est trop rapide pour le moteur. Ne plus toucher au curseur, allez dans la case vitesse et réduisez de 100 la valeur affichée. Quand j'ai testé mes moteur, il grognaient a 900 mm/mn j'ai donc mis 800.<br />
<br />
Voila pour les cartes chinoises qu'on trouve sur Ebay.<br />
<br />
Les autres cartes type M542 qui je précise sont milles fois plus fiable, j'ai remplacé la carte citée ci dessus par des M542, c'est le jour et la nuit.<br />
<br />
La voici en image<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-IaazaWnrl34/UrzFc63u_-I/AAAAAAAAAUs/0YPGav1zKq4/s1600/Free-Shipping-CNC-Stepper-Motor-Driver-2M542-DC24-50V-4-2A-Driver-Board.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-IaazaWnrl34/UrzFc63u_-I/AAAAAAAAAUs/0YPGav1zKq4/s320/Free-Shipping-CNC-Stepper-Motor-Driver-2M542-DC24-50V-4-2A-Driver-Board.jpg" height="271" width="320" /></a></div>
dans ce cas, c'est un driver par moteur et une carte de commande<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-s4PVlN0z6FQ/UrzFrbjtGwI/AAAAAAAAAU0/4wfGWYrOTlI/s1600/5axis-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-s4PVlN0z6FQ/UrzFrbjtGwI/AAAAAAAAAU0/4wfGWYrOTlI/s320/5axis-1.jpg" height="240" width="320" /></a></div>
si je peux donner mon avis, c'est cette option qu'il faudrait prendre même si c'est plus cher.<br />
<br />
Pour paramétrer cette carte, la formule est différente, on divise la valeur des micros pas programmé sur le driver (micro switch) par le rapport de la vis<br />
<br />
Exemple:<br />
Les switch sont sur 16 micro pas soit 3200 pas /révolution de la vis.<br />
<br />
La formule est donc<br />
<br />
<span style="font-size: large;">3200/ 1.25 (pour une vis de 8 standard) = 2560</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;"><span style="font-size: small;">C'est cette valeur qu'il faut mettre dans la case pas ""par mm"" au lieu des 320 <span style="font-size: small;">v<span style="font-size: small;">us sur la photo ci dessus.</span></span></span></span><br />
<span style="font-size: large;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"> </span></span></span></span><br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com4tag:blogger.com,1999:blog-1552666791524504649.post-88747446526858343262013-12-02T23:32:00.000+01:002014-05-17T14:23:48.065+02:00CNC Laser<h2>
</h2>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<span style="color: #f3f3f3;">Je vous présente ma dernière réalisation en cours. Rien a voir avec Arduino malgré que je souhaitait piloter l'ensemble avec une UNO.</span><br />
<span style="color: #f3f3f3;"><br /></span>
<span style="color: #f3f3f3;">Après avoir fabriqué une fraiseuse CNC, j'ai voulu y adapter un Laser pour réaliser de la découpe plus fine en complément de la broche. A force de chercher, j'ai décider de fabriquer une machine complète.</span><br />
<span style="color: #f3f3f3;"><br /></span>
<span style="color: #f3f3f3;">L'ensemble est réalisé en plexi de 10mm</span><br />
<br />
Avant toute chose, le laser est très dangereux pour les yeux, même un
rayon indirect peu faire de gros dégats, il est obligatoire de se
protéger avec des lunettes spécifique. Il faut bien choisir ses lunette
car elles ne sont pas universelles, il y a plusieurs sortes adaptées a
chaque longueur d'onde du laser. Un laser est également dangereux pour la peau, il peut créer des brûlures profondes, en faisant mes tests, je me suis brulé simplement en passant rapidement la main par inadvertance devant le rayon. <br />
2watts c'est peu mais en Laser, ça commence a causer!!!!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-wO_q7rKvUzc/Uqu3zBB6mXI/AAAAAAAAATU/UCc0xVkmT7I/s1600/images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-wO_q7rKvUzc/Uqu3zBB6mXI/AAAAAAAAATU/UCc0xVkmT7I/s1600/images.jpg" /></a></div>
<br />
<br />
Ceux qui souhaitent les Gcodes ou le programme Arduino peuvent me laisser un message et je leur enverrai le tout.<br />
<br />
Dimension de gravure format A4<br />
<h2>
<span style="font-size: large;"><u><span style="color: orange;">En images</span></u></span></h2>
<span style="color: #f3f3f3;"> Le protique déjà monté découpé a la fraiseuse CNC</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-jN7TDyShIb8/Up0GUucAZCI/AAAAAAAAAOk/xH2CiDrtLD8/s1600/P1010599.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-jN7TDyShIb8/Up0GUucAZCI/AAAAAAAAAOk/xH2CiDrtLD8/s320/P1010599.JPG" height="240" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-dLETo88uy18/Up0Gwp7MriI/AAAAAAAAAOs/uKZEjhNSSoo/s1600/P1010606.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
Tout a été réalisé a la fraiseuse y compris les paliers<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-dLETo88uy18/Up0Gwp7MriI/AAAAAAAAAOw/rXhdDpxoQeg/s1600/P1010606.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-dLETo88uy18/Up0Gwp7MriI/AAAAAAAAAOw/rXhdDpxoQeg/s320/P1010606.JPG" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-xHH1j-qy5ko/Up0Hn93ySqI/AAAAAAAAAO8/vJBixWcgmIw/s1600/P1010609.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-xHH1j-qy5ko/Up0Hn93ySqI/AAAAAAAAAO8/vJBixWcgmIw/s320/P1010609.JPG" height="240" width="320" /></a></div>
<br />
Ci dessus la plaque servant a supporter les rails et le Laser<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-VxnUfeRAVLw/Up0IEl_xJqI/AAAAAAAAAPI/li8pLID2VEY/s1600/P1010612.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-VxnUfeRAVLw/Up0IEl_xJqI/AAAAAAAAAPI/li8pLID2VEY/s320/P1010612.JPG" height="240" width="320" /></a></div>
Face avant et arrière avec un palier en place<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-lyU1GWIhqNw/Up0Ic9cr8sI/AAAAAAAAAPQ/qgPqKEMRjzk/s1600/P1010616.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-lyU1GWIhqNw/Up0Ic9cr8sI/AAAAAAAAAPQ/qgPqKEMRjzk/s320/P1010616.JPG" height="240" width="320" /></a></div>
Les coté en cours d'usinage<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-D9zmSBQdeF0/Up0I1d2k4xI/AAAAAAAAAPY/9tgYlY7nVaI/s1600/P1010621.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-D9zmSBQdeF0/Up0I1d2k4xI/AAAAAAAAAPY/9tgYlY7nVaI/s320/P1010621.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ks3chst9i7g/Up0JSL_0y8I/AAAAAAAAAPg/Zkmj5h29zFI/s1600/P1010619.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ks3chst9i7g/Up0JSL_0y8I/AAAAAAAAAPg/Zkmj5h29zFI/s320/P1010619.JPG" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-d1enmcu3EMs/Up0JTOpX0mI/AAAAAAAAAPk/FRWQwJ2Z0Zg/s1600/P1010620.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-d1enmcu3EMs/Up0JTOpX0mI/AAAAAAAAAPk/FRWQwJ2Z0Zg/s320/P1010620.JPG" height="240" width="320" /></a></div>
La partie support est assemblée, il reste la gestion des axes et le laser a installer.<br />
<br />
Pour le fraisage des divers éléments, j'ai utilisé:<br />
<br />
- Draftsight pour la partie dessins a l'échelle - téléchargement:<br />
<a href="http://www.3ds.com/fr/produits-et-services/draftsight/">http://www.3ds.com/fr/produits-et-services/draftsight/</a><br />
- CAMBAM pour la génération des Gcodes - téléchargement: <a href="http://www.cambam.info/downloads/">http://www.cambam.info/downloads/</a><br />
- Mach3 pour la gestion de la graveuse - téléchargement: <a href="http://www.mach3fr.com/V2/mach3/">http://www.mach3fr.com/V2/mach3/</a><br />
<br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>FR</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
<br />
<h2 class="MsoNormal">
<u><span style="color: orange;">Les
moteurs</span></u></h2>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Nous allons passer a la partie translation.</div>
<div class="MsoNormal">
N'ayant besoin que d'une faible puissance, je suis parti sur
la base de deux moteurs pas a pas NEMA 17 (l'axe Y sera quand même assez lourd si motorisation).</div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_MCmx64h1vE/Up9rMe_6zNI/AAAAAAAAAQA/JSF3cy8n7b8/s1600/Nema17_StepperMotor_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_MCmx64h1vE/Up9rMe_6zNI/AAAAAAAAAQA/JSF3cy8n7b8/s320/Nema17_StepperMotor_1.jpg" height="320" width="319" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Ici nous n'avons besoin de motoriser que deux axes X et Y, le Z
se fera en manuel bien que cela ne s'avère pas nécessaire si on utilise un
driver laser analogique. J'aborderai ce sujet plus tard dans la mise en œuvre
du laser.</div>
<div class="MsoNormal">
<br /></div>
<h2 class="MsoNormal">
<u><span style="color: orange;">Le driver</span></u></h2>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
Le driver avait été acheté pour ma fraiseuse a
broche, cette carte a des soucis de fabrication, elle a tendance a perdre des
pas en Z. Etant donné que nous n'avons pas besoin de l'axe Z ça tombe très
bien !!!</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-0BZvfrRjC48/Up9qgpeSsBI/AAAAAAAAAP4/W_6lCbGEA0c/s1600/driver+3+axes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-0BZvfrRjC48/Up9qgpeSsBI/AAAAAAAAAP4/W_6lCbGEA0c/s400/driver+3+axes.jpg" height="240" width="400" /></a></div>
<div class="MsoNormal">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>FR</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]--><span lang="EN-US" style="color: black; font-family: "Tahoma","sans-serif"; font-size: 9.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: SimSun; mso-fareast-language: ZH-CN;"><br /></span></div>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
J'alimente celle-ci en 24V malgré que la doc technique du driver donne
12V pour les NEMA 17, ça ne pose aucun soucis puisque les moteurs pas a pas
sont commandés en courant. Cette tension plus élevée permet de ne pas perdre de
couple a haute vitesse.<br />
<br />
Pour ceux qui se posent la question, il n'existe pas de drivers en USB, il est nécessaire de posséder un ancien PC avec un port parallèle. J'ai essayé de faire fonctionner le driver avec un portable, ça ne fonctionne pas car l'alimentation n'est pas assez puissante.<br />
<br />
<h2>
<span style="color: orange;"><u>Configuration des moteurs</u></span></h2>
J'utilise mach3 pour la gestion de ma fraiseuse donc je vais faire pareil pour le laser. Vous pouvez le télecharger en version gratuite limitée a 500 lignes.<br />
<br />
<a href="http://www.mach3fr.com/V2/mach3/" target="_blank">Téléchargement de mach3</a><br />
<br />
Ouvrez mach3<br />
<br />
Configuration des ES <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-KuB4Dft9kbU/UqLgKUlKTEI/AAAAAAAAAQk/sLJ_4pYA6e4/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-KuB4Dft9kbU/UqLgKUlKTEI/AAAAAAAAAQk/sLJ_4pYA6e4/s640/3.JPG" height="512" width="640" /></a></div>
<br />
Onglet sortie moteur, configurez les sorties suivant les données de votre driver<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_Lee9K0oMDM/UqLjsaHHq6I/AAAAAAAAARM/_zHuuPfrnmI/s1600/5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_Lee9K0oMDM/UqLjsaHHq6I/AAAAAAAAARM/_zHuuPfrnmI/s640/5.JPG" height="512" width="640" /></a></div>
Onglets sorties<br />
<br />
Configurez les sortie de validation toujours suivant votre driver.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-9Qoc_J2eSDo/UqLkTLwotMI/AAAAAAAAARU/thXkBQgHvYI/s1600/6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-9Qoc_J2eSDo/UqLkTLwotMI/AAAAAAAAARU/thXkBQgHvYI/s640/6.JPG" height="512" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Rv51Ch1uyuE/UqLhNvvbkSI/AAAAAAAAAQ4/ommiYC1BvkA/s1600/7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
Allez dans l'onglet configuration des moteurs</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-2gKnNQJ78Uo/UqLfRI4Rr-I/AAAAAAAAAQU/4hxSJH9stN4/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-2gKnNQJ78Uo/UqLfRI4Rr-I/AAAAAAAAAQU/4hxSJH9stN4/s640/1.JPG" height="512" width="640" /></a></div>
<br />
Cette fenêtre s'ouvre<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-LhXDnkrHY-8/UqLinCM1SeI/AAAAAAAAARA/6jFa5yOMX50/s1600/9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-LhXDnkrHY-8/UqLinCM1SeI/AAAAAAAAARA/6jFa5yOMX50/s640/9.JPG" height="512" width="640" /></a></div>
Là il suffit de donner les valeurs suivantes :<br />
-Nombre de pas par tour<br />
-Vitesse d'avance max<br />
-Accélération<br />
<br />
Attention, il faut valider chaque axe indépendamment. <br />
<h2>
<span style="color: orange;"><u>Configuration de mach 3 pour la gravure laser.</u></span></h2>
<br />
<br />
Ouvrez mach3<br />
Allez dans l'onglet configuration puis configuration générale<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-2gKnNQJ78Uo/UqLfRI4Rr-I/AAAAAAAAAQQ/ogn0EqZYW9M/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-2gKnNQJ78Uo/UqLfRI4Rr-I/AAAAAAAAAQQ/ogn0EqZYW9M/s640/1.JPG" height="512" width="640" /></a></div>
<br />
Dans cette page, il faut cocher axe Z sortie 6 pour la valider<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-I96f7J_DSfA/UqLfv5Xa-FI/AAAAAAAAAQY/b3eGmRLcIn4/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-I96f7J_DSfA/UqLfv5Xa-FI/AAAAAAAAAQY/b3eGmRLcIn4/s640/2.JPG" height="512" width="640" /></a></div>
Cliquer OK<br />
<br />
Puis onglet général, configuration des E/S<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-KuB4Dft9kbU/UqLgKUlKTEI/AAAAAAAAAQg/m5WXc5Wnh2A/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-KuB4Dft9kbU/UqLgKUlKTEI/AAAAAAAAAQg/m5WXc5Wnh2A/s640/3.JPG" height="512" width="640" /></a></div>
<br /></div>
Onglet gestion de la broche, cocher la fonction laser<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Ghb2M0e7Lcc/UqLgZx8EN1I/AAAAAAAAAQo/C6f3Krxa1o4/s1600/4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Ghb2M0e7Lcc/UqLgZx8EN1I/AAAAAAAAAQo/C6f3Krxa1o4/s640/4.JPG" height="512" width="640" /></a></div>
Ne pas fermer la fenêtre !!!!!!!!<br />
<br />
Maintenant il faut paramétrer la sortie de commande pour le laser, pour ma part ayant une commande TTL, j'ai validé la sortie relai qui est la broche 9<br />
<br />
Dans la même fenêtre onglet configuration des sorties, validez la sortie 6 et affectez lui la broche voulue, ici la 9.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Rv51Ch1uyuE/UqLhNvvbkSI/AAAAAAAAAQ0/66YfMIYs_Cs/s1600/7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Rv51Ch1uyuE/UqLhNvvbkSI/AAAAAAAAAQ0/66YfMIYs_Cs/s640/7.JPG" height="512" width="640" /></a></div>
<br />
Cliquez sur OK et voila, la commande laser est validée. Elle fonctionne de la manière suivante, dès que Z descend sous zéro le laser s'allume dès qu'elle passe au dessus de zéro il s'éteint.<br />
<br />
<br />
<h2>
<u><span style="color: orange;"><span style="font-size: large;">Le principe de câblage</span></span></u></h2>
<br />
Concernant la carte driver, rien de compliqué, il suffit de câbler selon la doc du fabriquant.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-zjDCOfHt14o/UqTbyLDF-tI/AAAAAAAAAR4/TRBt1DTc8Yw/s1600/C%C3%A2blage+CNC.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-zjDCOfHt14o/UqTbyLDF-tI/AAAAAAAAAR4/TRBt1DTc8Yw/s640/C%C3%A2blage+CNC.jpg" height="438" width="640" /></a></div>
<br />
Le principe est simple, J'ai mis les 3 limites X,Y et Z, sur la 4éme entrée j'y ai mis l'arrêt d'urgence manuel et celui géré par le module Arduino. Ceci n'est pas figé, c'est une esquisse qui donne une idée du câblage. Le schéma est assez complet, les MZ (moteurs Z ne sont pas utilisés dans mon cas).<br />
<br />
<h4>
<u><span style="color: orange;">Que fait Arduino??</span></u></h4>
<ol>
<li> Il gère la température du module Peltier</li>
<li>Il gère la température de Laser</li>
<li>Il gère le courant du Laser par le biais soit d'une sortie ANA qui attaquera le driver, soit une sortie directe en PWM a voir car encore en cours d'étude. Passer par Arduino pour le courant de la diode a l'avantage de donner des limites et éventuellement de pouvoir donner des consignes de puissance suivant les matériaux a usiner. Certains diront que la diode peut être pilotée en linéaire par le driver Oui!! mais celui-ci ne surveille pas les limites et comme les drivers sont presque universels soit pour des courants allant de 0A a quelques ampères, on a vite fait de griller la diode avec une fausse manipulation</li>
<li>Il affiche les températures</li>
<li>Il affiche le courant du Laser</li>
<li>Je vais peut être gérer les limites et les afficher afin de savoir laquelle a beugué car avec mach3 on ne sait pas quelle limite a décroché. Il ne fait pas de distinction, pour lui c'est un AU.</li>
</ol>
<br />
Le matériel utilisé pour la partie contrôle avec Arduino.<br />
<br />
<ol>
<li> 1 carte SEEDUINO MEGA (j'ai opté pour celle-ci parce que c'est une MEGA qui a la taille d'une UNO!!!)</li>
<li>1 afficheur 128x64 (j'ai pris un module avec rétro éclairage RVB</li>
<li>2 Sondes DS18B20</li>
<li>potentiomètre 10K ohms</li>
<li>3 Relais 5V a définir une fois terminé</li>
</ol>
La câblage en vrac pour les essais<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-gQGakjY6NO0/UqeXCv1F6HI/AAAAAAAAASI/MJnIAhGM2dA/s1600/P1010691.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-gQGakjY6NO0/UqeXCv1F6HI/AAAAAAAAASI/MJnIAhGM2dA/s400/P1010691.JPG" height="300" width="400" /> </a> </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
L' affichage de la consigne de courant dans la diode, du courant consommé , de la température du Laser et de la température du module peltier (coté dissipateur).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ah3LFMIxgUQ/UqeXzOIFwBI/AAAAAAAAASQ/C3YhsnUFh04/s1600/P1010692.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-ah3LFMIxgUQ/UqeXzOIFwBI/AAAAAAAAASQ/C3YhsnUFh04/s400/P1010692.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Concernant la consigne, une valeur maximum est a configurer a la programmation cette valeur sera donnée en fonction de la diode.<br />
<br />
J'ai généré une alarme température<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-vgJ2zmFJp2M/UqeYgNNvgmI/AAAAAAAAASY/A0XjrDkvJ2o/s1600/P1010693.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-vgJ2zmFJp2M/UqeYgNNvgmI/AAAAAAAAASY/A0XjrDkvJ2o/s400/P1010693.JPG" height="300" width="400" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-fw_eiFo6DO4/UqeZK0oBDrI/AAAAAAAAASg/TGyF3wVN6mg/s1600/P1010695.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-fw_eiFo6DO4/UqeZK0oBDrI/AAAAAAAAASg/TGyF3wVN6mg/s400/P1010695.JPG" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
En mode alarme, l'afficheur clignote en rouge et dans le cas d'une alarme température comme ici (consigne a 30°) un thermomètre s'affiche. A la disparition de l'alarme l'écran redeviens normal mais le thermomètre reste affiché jusqu’à ce que le défaut soit acquitté manuellement. Pour un défaut de courant ce sera un ampèremètre et pour un défaut de translation ???? a voir .<br />
<br />
J'oubliais, une alarme génère un arrêt d'urgence afin de pouvoir redémarrer la gravure là ou le programme c'est arrêté. <br />
<br />
<h2>
<u><span style="color: orange;">Encore un peu de mécanique</span></u></h2>
Avant de passer au laser, il me restait un peu de mécanique a faire, voici quelques images<br />
<br />
Réalisation des ecrous d'entraînement avec des prolongateurs de tige filetée et des petit fer plat perforés<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-xug2aCipxFQ/UquuoNloLXI/AAAAAAAAASw/2G7YAGijCEs/s1600/P1010696.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xug2aCipxFQ/UquuoNloLXI/AAAAAAAAASw/2G7YAGijCEs/s1600/P1010696.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Détails sur le refroidissement du laser, entre celui-ci et le dissipateur, on retrouve le module peltier.<br />
Il manque encore un ventilateur au dessus du dissipateur, il est commandé et je ne l'ai pas encore eu, il sera assez puissant pour refroidir le peltier et souffler sur les fumées afin de ne pas abîmer la lentille du Laser.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-X9m7k-saz_A/UquvnNUvvEI/AAAAAAAAAS4/_YcgbycgjSs/s1600/P1010698.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-X9m7k-saz_A/UquvnNUvvEI/AAAAAAAAAS4/_YcgbycgjSs/s1600/P1010698.JPG" height="240" width="320" /></a></div>
La fixation est provisoire juste pour faire des essais<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-6rDo_cl1ECk/UquwDKoqgiI/AAAAAAAAATA/sJwSERs-kcI/s1600/P1010701.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-6rDo_cl1ECk/UquwDKoqgiI/AAAAAAAAATA/sJwSERs-kcI/s1600/P1010701.JPG" height="240" width="320" /></a></div>
<br />
<h3>
<u><span style="color: orange;">Essai en vidéo</span></u></h3>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/lJZqCAHNY3Q?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
Une deuxième vidéo, il me reste un petit réglage a faire dans mach3 car on voit un point a l'endroit ou le laser démarre et s'arrête. Il faut que celui-ci s'allume et s'arrête tout de suite alors qu'il reste allumé une seconde au même endroit.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/NR9QgxQSvrw?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<br />
A suivre ....... !!!<br />
<br />
<h2>
<span style="color: orange;"><u><span style="font-size: large;">Une petite suite.</span></u></span></h2>
<br />
Après ces fêtes de Noël, je m'y suis remis, avant tout j'ai trouvé la solution au problème cité ci dessus c'est une mauvaise programmation dans le Gcode, je n'ai pas donné les bonnes infos concernant l'axe Z.<br />
<br />
J'ai acheté un vieux PC sur EB pour 28€, que j'ai démonté pour récupérer la carte mère, l'alim et le disque dur.<br />
J'ai réalisé une boite aux dimensions adaptée a la partie mécanique.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-lOz6A6CHxPQ/Ury6MjonGII/AAAAAAAAATg/qGAe7F6B44c/s1600/P1010796.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-lOz6A6CHxPQ/Ury6MjonGII/AAAAAAAAATg/qGAe7F6B44c/s320/P1010796.JPG" height="240" width="320" /></a></div>
<br />
J'ai réussi a tout mettre dans un coffret de 480 x 290 x 90, on y trouve même le driver et l'arduino.<br />
N'ayant pas assez de place en hauteur pour refroidir le processeur, j'ai fabriqué un caisson avec une turbine de manière a refouler l'air chaud sur le coté.<br />
<br />
<br />
L' arrière <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-NSQUn_LGZsw/Ury7fJcEsuI/AAAAAAAAATs/ZKlnL_4LPMI/s1600/P1010797.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-NSQUn_LGZsw/Ury7fJcEsuI/AAAAAAAAATs/ZKlnL_4LPMI/s320/P1010797.JPG" height="240" width="320" /></a></div>
<br />
Toute les plaque ont encore une fois été découpées avec ma fraiseuse a broche.<br />
<br />
Vue d'ensemble<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-eKz6L8RGBG8/Ury8C0DJ_BI/AAAAAAAAAT0/gFKBf-VvtXs/s1600/P1010793.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-eKz6L8RGBG8/Ury8C0DJ_BI/AAAAAAAAAT0/gFKBf-VvtXs/s320/P1010793.JPG" height="240" width="320" /></a></div>
<br />
Allumé<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_SRcGhGhrME/Ury88ZdskqI/AAAAAAAAAUA/n2oQOxlCtPQ/s1600/P1010798.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_SRcGhGhrME/Ury88ZdskqI/AAAAAAAAAUA/n2oQOxlCtPQ/s320/P1010798.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
<br />
J'éspère que vous avez remarqué les lunettes de protections (lunettes vertes), je rappel que c'est super important et obligatoire!!!!<br />
<br />
Détails de la face avant<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-kaGsuarHQLA/Ury9T_EGakI/AAAAAAAAAUI/pPPa7N1177Y/s1600/P1010799.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-kaGsuarHQLA/Ury9T_EGakI/AAAAAAAAAUI/pPPa7N1177Y/s320/P1010799.JPG" height="240" width="320" /></a></div>
<br />
<br />
La partie mécanique terminée, je vais pouvoir parler de la technique dans une autre page.<br />
<br />
<span style="color: red;">Petite nouveauté!!!</span><br />
<br />
<span style="color: red;">Suite a une demande, j'ai fabriqué la partie mécanique de cette machine en kit. Si cela vous intéresse, n'hésitez pas a me contacter.</span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Hcwp_uLlHZA/Up0HFNyY4pI/AAAAAAAAAO0/aSUtgOwAbP4/s1600/P1010621.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br /></a></div>
<span style="color: orange;"><span style="color: black;"><br /></span></span>Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com54tag:blogger.com,1999:blog-1552666791524504649.post-35323849635580247192013-08-10T12:19:00.000+02:002016-01-11T18:29:15.501+01:00Regulateur d'humidité et de temperature avec un DHT22<br />
Il y a quelques temps un ami me parles de problèmes d'humidité dans son sous sol.<br />
En cherchant la cause, je me suis aperçu que l’étanchéité de la maison avait été mal réalisée et aujourd'hui il n'est plus possible de remédier au problème. L'entreprenneur n'est pas mis en cause dans le cadre de la garantie décennale car sois disant un taux d'humidité élevé est toléré. En attendant tout moisi chez lui!!!!!<br />
<br />
J'ai donc cherché une solution pour remédier au problème car il avait déja tenté la ventilation naturelle et ça ne fonctionne pas trop bien.<br />
<br />
J'ai donc opté pour une ventilation mécanique pilotée avec un Arduino et un DHT 22 (AM2302).<br />
Ces sont des capteurs très bons marchés et assez lents, mais cela suffit pour cette application.<br />
<br />
<u><span style="color: orange;">Le DHT 22</span></u><br />
<br />
Ces capteurs sont composés de deux parties, un capteur d'humidité
capacitif et une thermistance, on trouve également le circuit de gestion qui converti les valeurs analogiques en
digital dans le boitier.<br />
Nous avons donc un signal de sortie numérique qui permet de déporter la sonde du circuit (dans mon cas il s'agit de 20m) <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-cZnddqDtlOc/UgYHYxYEyBI/AAAAAAAAAL8/y-t9dl2xunc/s1600/20130810_075815.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-cZnddqDtlOc/UgYHYxYEyBI/AAAAAAAAAL8/y-t9dl2xunc/s320/20130810_075815.jpg" width="320" /></a></div>
<br />
<span style="color: orange;"><u>La librairie du DHT22</u></span><br />
<br />
<br />
Encore une fois je suis agréablement surpris par la facilité de
mise en œuvre de la librairie a télécharger ici <a class="external text" href="http://learn.adafruit.com/dht/downloads" rel="nofollow" target="_blank">télécharger la librairie Arduino disponible sur le GitHuh d'AdaFruit</a> .<br />
Tout a part la commande des relais et l'affichage se trouve dans l'exemple de cette librairie<br />
<br />
<u><span style="color: orange;">L'afficheur</span></u><br />
<u><span style="color: orange;"><br /></span></u>
J'ai pris un afficheur 1,8" de chez Adafruit (je l'avais en stock).<br />
Vous trouverez tout les renseignements ici <a href="http://www.adafruit.com/products/358" target="_blank">http://www.adafruit.com/products/358</a><br />
<br />
<span style="color: orange;"><u> </u><u>Le Fonctionnement</u></span><br />
<br />
Le principe est simple, dans le sketch je donne une consigne d'humidité maximum, la mesure dépasse celle-ci de 1%, j'enclenche un relai qui lui pilote un extracteur.<br />
J'ai profité de la sonde de température pour gérer un petit convecteur électrique qui est bien utile en hiver.<br />
<span style="color: orange;"><span style="color: black;"><br /></span></span>
<span style="color: orange;"><u>Le schéma</u></span><br />
<br />
Pas encore terminé désolé (perso, pas besoin de schéma pour faire un montage!!)<br />
<br />
<br />
Le schéma avec une carte UNO<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ymX6sMpNDEk/UgYcTznXQrI/AAAAAAAAANk/8SyMy3te7Bo/s1600/Avec+arduino_bb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="http://2.bp.blogspot.com/-ymX6sMpNDEk/UgYcTznXQrI/AAAAAAAAANk/8SyMy3te7Bo/s320/Avec+arduino_bb.jpg" width="320" /></a></div>
<br />
<br />
La commande des deux relais se fait par l’intermédiaire d'un ULN 2003 (je sais ce que vous allez me dire "il y aurait pu utiliser des transistors!!!" oui!! mais c'est plus simple comme ça lol) <br />
<br />
<br />
Si vous achetez le DHT22 nu , il faudra mettre une résistance de 10 KOmhs entre la broche
de donnée (Data Out) et l'alimentation . Cette résistance agit
comme une résistance Pull-up et ramène la broche Data Out à VCC (il existe une version avec un petit bout de circuit sur lequel tout s'y trouve donc pa besoin de cette résistance).<br />
<br />
<br />
<span style="color: orange;"><u>Le programme</u></span><br />
<br />
// Hygromètre et thermostat<br />
// By jojo Bricolo<br />
// Librairie adafruit téléchargeable ici https://github.com/adafruit/DHT-sensor-library<br />
// Datasheet DHT 22 http://www.adafruit.com/datasheets/DHT22.pdf<br />
<br />
<br />
<br />
#include "DHT.h"<br />
#include <Adafruit_GFX.h><br />
#include <Adafruit_ST7735.h> <br />
#include <SPI.h><br />
#include "Wire.h"<br />
<br />
#define sclk 10 //SCL<br />
#define mosi 11 // SDA<br />
#define cs 9 // CS<br />
#define dc 12 // RS<br />
#define rst 13 // peut être connecté a la RAZ arduino<br />
<br />
<br />
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst);<br />
#define DHTPIN 8<br />
// Décocher le type de capteur utilisé<br />
//#define DHTTYPE DHT11 // DHT 11 <br />
#define DHTTYPE DHT22 // DHT 22 (AM2302)<br />
//#define DHTTYPE DHT21 // DHT 21 (AM2301)<br />
<br />
// Pin 1 (a gauche) +5V<br />
// Pin 2 data DHTPIN <br />
// Pin 4 Masse<br />
// Mettre une ésistance de 10K entre les Pins 1 et 2<br />
<br />
DHT dht(DHTPIN, DHTTYPE);<br />
const int intTimePause = 3000; //Par défaut on actualise les valeures toutes les 5 secondes<br />
<br />
//int alam = 9;<br />
int shumi = 4;<br />
int stem = 3;<br />
int humi_cons = 95; // Consigne humidité<br />
int temp_cons = 20; // Consigne temperature<br />
<br />
void setup() {<br />
Serial.begin(9600); <br />
//Serial.println("DHTxx test!");<br />
pinMode (shumi,OUTPUT);<br />
pinMode (stem,OUTPUT);<br />
Serial.begin(9600);<br />
tft.initR(INITR_REDTAB); // initialise le ST7735R<br />
tft.setRotation(45); <br />
tft.fillScreen(0x0000);<br />
dht.begin();<br />
}<br />
<br />
void loop() {<br />
<br />
float h = dht.readHumidity();<br />
float t = dht.readTemperature();<br />
<br />
//xxxxxxxxxxx Affichagexxxxxxxxxxx<br />
tft.setTextSize(2);<br />
tft.setCursor(10, 10);<br />
tft.setTextColor(ST7735_MAGENTA);<br />
tft.print("Temperature ");<br />
tft.setTextColor(ST7735_WHITE);<br />
tft.setTextSize(2);<br />
tft.setCursor(30, 30); <br />
tft.fillRect (0,30,100,20,0x0000);<br />
tft.print(t);<br />
tft.print("C");<br />
tft.setTextSize(2);<br />
tft.setTextColor(ST7735_YELLOW);<br />
tft.setCursor(20,60);<br />
tft.print("Humidite");<br />
tft.setCursor(30,80);<br />
tft.setTextColor(ST7735_CYAN);<br />
tft.fillRect (0,80,100,20,0x0000);<br />
tft.print(h);<br />
tft.print("%");<br />
tft.setTextSize(1);<br />
tft.setTextColor(ST7735_GREEN);<br />
tft.setCursor(30,110);<br />
tft.print("By Jojo Bricolo");<br />
<br />
//xxxxxxxxxxxAffichage Moniteur serie ou bluetooth xxxxxxxxxxx<br />
<br />
Serial.print ("Humidite ");<br />
Serial.println (h);<br />
<br />
Serial.print ("Temperature ");<br />
Serial.println (t);<br />
Serial.println(" ");<br />
<br />
if (digitalRead(shumi)==HIGH)<br />
{<br />
Serial.println ("Ventilateur en marche");<br />
}<br />
else<br />
{<br />
Serial.println ("Ventilateur arret");<br />
}<br />
Serial.println(" ");<br />
<br />
if (digitalRead(stem)==HIGH)<br />
{<br />
Serial.println ("Chauffage en marche");<br />
}<br />
else<br />
{<br />
Serial.println ("Chauffage arret");<br />
Serial.println(" ");<br />
}<br />
<br />
Serial.println(" ");<br />
Serial.println(" ");<br />
<br />
//xxxxxx Commande des relaisxxxxx<br />
<br />
// humidité<br />
if (h >= (humi_cons + 2.00))// Si la mesure h est >ou+ a la consigne +2.00 allumage extracteur<br />
{<br />
digitalWrite (shumi,HIGH); // Si la mesure h est < a la consigne +1.00 arret extracteur<br />
}<br />
else <br />
if (h < (humi_cons + 1))<br />
{<br />
digitalWrite (shumi,LOW);<br />
<br />
}<br />
<br />
//xxxxxx Temperaturexxxx<br />
<br />
if (t >= (temp_cons + 2)) // Si la mesure t est >ou = a la consigne +2.00 allumage chauffage<br />
{<br />
digitalWrite (stem,LOW);<br />
}<br />
else <br />
if (t < (temp_cons - 1)) // Si la mesure t est < a la consigne -1.00 arret chauffage<br />
{<br />
digitalWrite (stem,HIGH);<br />
} <br />
delay (intTimePause);<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
Comme je l'avais déjà dit, j'ai utilisé l’exemple se trouvant dans la librairie adafruit et rajouté les codes pour la gestion des relais et l'affichage.<br />
<br />
<span style="color: orange;"><u>Le paramétrage des consignes se fait de la manière suivante:</u></span><br />
<br />
L'humidité<br />
<a href="http://1.bp.blogspot.com/-9euYePBXE0I/UgYL4En3ThI/AAAAAAAAAMo/LI2HGMkwB8M/s1600/20130810_071915.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="http://1.bp.blogspot.com/-9euYePBXE0I/UgYL4En3ThI/AAAAAAAAAMo/LI2HGMkwB8M/s200/20130810_071915.jpg" width="200" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
La température<br />
<br />
<a href="http://2.bp.blogspot.com/-c6SnvNziwdg/UgYMCifbMRI/AAAAAAAAAMw/aMJQRfPHyjE/s1600/20130810_071928.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="http://2.bp.blogspot.com/-c6SnvNziwdg/UgYMCifbMRI/AAAAAAAAAMw/aMJQRfPHyjE/s200/20130810_071928.jpg" width="200" /></a><br />
<br />
<span style="color: orange;"><br /></span>
<span style="color: orange;"><br /></span>
<span style="color: orange;"><br /></span>
<span style="color: orange;"><br /></span>
<span style="color: orange;"><br /></span>
<span style="color: orange;"><br /></span>
<span style="color: orange;"><br /></span>
<br />
J' ai également prévu l'affichage des valeurs et l'état des relais sur le port série.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--K2OXF0FLYk/UgYMJ5IyM6I/AAAAAAAAANA/EpCUWnNGXhQ/s1600/20130810_071950.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="http://4.bp.blogspot.com/--K2OXF0FLYk/UgYMJ5IyM6I/AAAAAAAAANA/EpCUWnNGXhQ/s200/20130810_071950.jpg" width="200" /></a><a href="http://3.bp.blogspot.com/-milQyeZ5PHw/UgYMHWCzx1I/AAAAAAAAAM4/n9QUBeh11YU/s1600/20130810_072008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="http://3.bp.blogspot.com/-milQyeZ5PHw/UgYMHWCzx1I/AAAAAAAAAM4/n9QUBeh11YU/s200/20130810_072008.jpg" width="200" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-FA6QIj0nCY4/UgYMbZBigHI/AAAAAAAAANY/HgF22QwYOgQ/s1600/20130810_072033.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="http://4.bp.blogspot.com/-FA6QIj0nCY4/UgYMbZBigHI/AAAAAAAAANY/HgF22QwYOgQ/s200/20130810_072033.jpg" width="200" /></a><a href="http://3.bp.blogspot.com/-4azLlDhmh-o/UgYMZ5_A5sI/AAAAAAAAANQ/bSoLtre46sc/s1600/20130810_072021.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="http://3.bp.blogspot.com/-4azLlDhmh-o/UgYMZ5_A5sI/AAAAAAAAANQ/bSoLtre46sc/s200/20130810_072021.jpg" width="200" /></a></div>
<br />
<span style="color: orange;"><br /></span>
<span style="color: orange;"><span style="color: black;">Sur le typon que je mettrai plus tard, le port série a été câblé de manière a pouvoir raccorder un module de communication tel que bluetooth, RFID, etc...</span></span><br />
<br />
<br />
<span style="color: orange;"><u>Quelques images </u></span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-0aEc0vJE8Xs/UgYLtfHA5MI/AAAAAAAAAMg/Ms8S18xsFds/s1600/20130810_071845.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="http://4.bp.blogspot.com/-0aEc0vJE8Xs/UgYLtfHA5MI/AAAAAAAAAMg/Ms8S18xsFds/s200/20130810_071845.jpg" width="200" /></a><a href="http://2.bp.blogspot.com/-LVwlhNiR-3Y/UgYLp1KHl4I/AAAAAAAAAMM/HHGdaiGEKIc/s1600/20130810_071830_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="http://2.bp.blogspot.com/-LVwlhNiR-3Y/UgYLp1KHl4I/AAAAAAAAAMM/HHGdaiGEKIc/s200/20130810_071830_1.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qppbvj0eSko/UgYMV1Ztv0I/AAAAAAAAANI/gBnY-u0eAhI/s1600/20130810_072134.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-qppbvj0eSko/UgYMV1Ztv0I/AAAAAAAAANI/gBnY-u0eAhI/s320/20130810_072134.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com88tag:blogger.com,1999:blog-1552666791524504649.post-51645196310634884502013-07-13T22:58:00.000+02:002014-05-17T14:29:31.789+02:00Cube a leds 4x4<u><b>Un petit cube animé 4x4 leds </b></u><br />
<br />
Dans ce montage, j’utilise un Arduino Nano monté sur un support de circuit intégré 30 broches.<br />
<br />
Il s'agit là d'un montage des plus simple qu'on puisse trouver, je n'utilise pas de registre a décalage et pas de générateur de courant constant. J'utilise simplement 16 résistances, inconvénient est que la luminosité des leds baisse légèrement lorsque plusieurs leds sont allumées en même temps (cela ne se voit presque pas vous pourrez en juger sur la vidéo. Si vous souhaitez malgré tout avoir une intensité lumineuse constante, il faudra mettre une résistance par leds soit 64 résistances.<br />
<br />
<b><u>Matériel</u></b><br />
<br />
1 Carte Arduino NANO ici <a href="http://cgi.ebay.fr/Arduino-Compatible-Funduino-Nano-V3-0-ATmega328-USB-Board-with-Free-USB-Cable-/161044410643?pt=UK_Computing_Other_Computing_Networking&hash=item257efeb113" target="_blank">http://cgi.ebay.fr/Arduino-Nano</a><br />
64 leds au choix a voir ici <a href="http://stores.ebay.fr/LED-Megashop" target="_blank">http://stores.ebay.fr/LED-Megashop</a> <br />
16 Résistances 100 ohms valeur a définir selon les leds exemple :<br />
Leds 3.2V/ 20mA R= (5-3.2)/0.02 soit 90 ohms (valeur standard 91 ohms)<br />
<br />
<span style="color: red;">Attention de ne pas prendre des leds de plus de 20mA sinon il faudra piloter celles-ci avec un transistor</span><br />
<br />
<span style="color: red;">Les liens que je met ne sont que des exemples et font parti des sites que j'ai trouvé les moins chers</span><br />
<br />
<u><b>Le typon</b></u><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-KwI4THV8uaU/UeK4vbAcUMI/AAAAAAAAAKU/Jqsq7J3WTRk/s1600/Cote+cuivre.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-KwI4THV8uaU/UeK4vbAcUMI/AAAAAAAAAKU/Jqsq7J3WTRk/s320/Cote+cuivre.jpg" height="179" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<u><b>L'implantation</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-cI9riX0eCVU/UeG3gw5Y8JI/AAAAAAAAAKA/EJFR7OXgI24/s1600/composants.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-cI9riX0eCVU/UeG3gw5Y8JI/AAAAAAAAAKA/EJFR7OXgI24/s320/composants.jpg" height="195" width="320" /></a></div>
Je pense que vu la simplicité il n'est pas vraiment nécessaire de faire un schéma, le circuit imprimé est tellement simple qu'il est facilement réalisable sur un plaque d'essai a pastilles. Le typon a été dessine de elle manière a ce que chaque colonnes soit soudée directement sur la plaque.<br />
La polarité est:<br />
Colonnes = Anodes (+)<br />
Les lignes = Cathode (-)<br />
<br />
<br />
<u><b>Le sketch</b></u><br />
<br />
<br />
/***************** cube a leds ********************<br />
*****************By Jojo Bricolo********************<br />
************www.mon-arduino.blogspot.fr*************<br />
*************13/07/2013*****************************/<br />
<br />
<br />
#include <avr/pgmspace.h> <br />
<br />
#define CUBESIZE 4<br />
#define PLANESIZE CUBESIZE*CUBESIZE<br />
#define PLANETIME 3333 // vitesse affichage -> 100 Hz<br />
#define TIMECONST 20 <br />
<br />
// Tableau de programmation de l'affichage<br />
prog_uchar PROGMEM PatternTable[] = {<br />
<br />
// la valeur 10 a la fin correspond a la durée d'affichage de chaque ligne soit 10ms<br />
<br />
<span style="font-size: small;">B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0000,B0000,B0000,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0010,B0000,B0000,B0011,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0011,B0000,B0000,B0011,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0011,B0011,B0000,B0000,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0001,B0011,B0111,B0000,B0001,B0011,B0111,B0000,B0000,B0001,B0011,10,<br />B0000,B0000,B0000,B0000,B0000,B0011,B0111,B0111,B0000,B0011,B0111,B0111,B0000,B0001,B0011,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,B0000,B0011,B0111,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,10,<br />B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,B0000,B0000,B0000,B0000,10,<br />B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,B0000,B1100,B1110,B1110,B0000,B0000,B0000,B0000,10,<br />B0000,B1110,B1110,B1110,B0000,B1100,B1110,B1110,B0000,B1000,B1100,B1110,B0000,B0000,B0000,B0000,10,<br />B0000,B1100,B1110,B1110,B0000,B1000,B1100,B1110,B0000,B0000,B1000,B1100,B0000,B0000,B0000,B0000,10,<br />B0000,B1000,B1100,B1110,B0000,B0000,B1000,B1100,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B1100,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1110,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1110,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0110,B0000,B0000,B0000,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0010,B0000,B0000,B0000,B0011,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0001,B0001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0001,B0001,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1110,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1100,B0000,B0000,B1000,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0000,B1100,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1110,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0111,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0001,B0011,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0001,B0001,B0000,B0001,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0001,B0000,B0000,B0011,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0111,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1110,B1000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1100,B1100,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B1110,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0111,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0011,B0000,B0000,10,<br />B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,10,<br />B0001,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0111,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B0111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0111,B0111,B0111,B0111,B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0011,B0011,B0011,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,10,<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,10,<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10,<br />B0010,B0001,B0001,B0001,B0010,B0001,B0001,B0001,B0010,B0001,B0001,B0001,B0010,B0001,B0001,B0001,10,<br />B0100,B0010,B0001,B0001,B0100,B0010,B0001,B0001,B0100,B0010,B0001,B0001,B0100,B0010,B0001,B0001,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0000,B0010,B0100,B0000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0000,B0000,B0000,B0000,B0000,B0010,B0100,B0000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0010,B0100,B0000,B0001,B0010,B0100,B1000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0010,B0100,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0010,B0000,B1000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0010,B0000,B1000,B0000,B0010,B1000,B0000,10,<br />B0000,B0000,B0000,B1000,B0000,B0010,B0000,B1000,B0000,B0010,B1000,B0000,B0000,B0000,B1000,B0000,10,<br />B0000,B0010,B0000,B1000,B0000,B0010,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0010,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0100,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0110,B0110,B0000,B0000,B0100,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1001,B0110,B0110,B1001,B0000,B0110,B0110,B0000,B0000,B0100,B0010,B0000,B0000,B0000,B0000,B0000,10,<br />B1101,B0111,B1110,B1011,B1001,B0110,B0110,B1001,B0000,B0110,B0110,B0000,B0000,B0100,B0010,B0000,10,<br />B1111,B1111,B1111,B1111,B1101,B0111,B1110,B1011,B1001,B0110,B0110,B1001,B0000,B0110,B0110,B0000,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1101,B0111,B1110,B1011,B1001,B0110,B0110,B1001,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1101,B0111,B1110,B1011,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,</span><br />
// elements de base, ne pas toucher!!!!<br />
B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 0<br />
};<br />
<br />
//définition des broches de sortie<br />
<br />
int ColPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; // colonnes anodes<br />
int LignePin[] = {16, 17, 18, 19}; // lignes cathode<br />
<br />
void setup()<br />
{<br />
int pin; <br />
<br />
for (pin=0; pin<PLANESIZE; pin++) {<br />
pinMode( ColPin[pin], OUTPUT );<br />
}<br />
<br />
for (pin=0; pin<CUBESIZE; pin++) {<br />
pinMode( LignePin[pin], OUTPUT );<br />
}<br />
}<br />
<br />
void loop()<br />
{<br />
// declare variables<br />
byte PatternBuf[PLANESIZE]; <br />
int PatternIdx;<br />
byte AffichageTime; <br />
unsigned long TimeFin;<br />
int Lignes; <br />
int patbufidx; <br />
int ledlig; <br />
int ledcol; <br />
int ledpin; <br />
<br />
<br />
PatternIdx = 0;<br />
<br />
do {<br />
<br />
memcpy_P( PatternBuf, PatternTable+PatternIdx, PLANESIZE );<br />
PatternIdx += PLANESIZE;<br />
<br />
AffichageTime = pgm_read_byte_near( PatternTable + PatternIdx++ );<br />
<br />
TimeFin = millis() + ((unsigned long) AffichageTime) * TIMECONST;<br />
<br />
<br />
while ( millis() < TimeFin ) {<br />
patbufidx = 0; <br />
<br />
for (Lignes=0; Lignes<CUBESIZE; Lignes++) {<br />
<br />
if (Lignes==0) {<br />
digitalWrite( LignePin[CUBESIZE-1], HIGH );<br />
} else {<br />
digitalWrite( LignePin[Lignes-1], HIGH );<br />
}<br />
<br />
<br />
ledpin = 0;<br />
for (ledlig=0; ledlig<CUBESIZE; ledlig++) {<br />
for (ledcol=0; ledcol<CUBESIZE; ledcol++) {<br />
digitalWrite( ColPin[ledpin++], PatternBuf[patbufidx] & (1 << ledcol) );<br />
}<br />
patbufidx++;<br />
}<br />
<br />
<br />
digitalWrite( LignePin[Lignes], LOW );<br />
<br />
delayMicroseconds( PLANETIME );<br />
} <br />
} <br />
} while (AffichageTime > 0); <br />
}<br />
<br />
<br />
<br />
Le tableau de données est configuré de la manière suivante:<br />
<br />
B 0 0 0 0<br />
=<br />
B Ligne1, Ligne2, Ligne 3, Ligne4<br />
<br />
et <br />
<br />
B0000, B0000, B0000, B0000, .................B0000, <br />
=<br />
colonne1 colonne2 colonne3 colonne4..................colonne16<br />
<br />
<br />
<u><b>La réalisation</b></u><br />
<br />
<u>Le circuit </u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-nmaYVQiyCjw/UeMMsSXCfQI/AAAAAAAAAKk/sc2Mnu-0PSo/s1600/IMGA0096.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-nmaYVQiyCjw/UeMMsSXCfQI/AAAAAAAAAKk/sc2Mnu-0PSo/s320/IMGA0096.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
<br />
<u>Montage des leds </u><br />
<br />
<br />
1° Préparer un panneau bois ou autre avec les trous du diamètre des leds, ici j'ai utilisé des 3mm mais rien n'empêche de prendre des 5mm.<br />
<br />
<span style="color: red;">Les leds doivent être des diffusantes et non des haute luminosité sinon celle-ci risquent d'éclairer les leds éteintes.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-FMHYQRUub28/UeMN1JDzxsI/AAAAAAAAAK0/jhAVYOgXL-M/s1600/IMGA0098.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-FMHYQRUub28/UeMN1JDzxsI/AAAAAAAAAK0/jhAVYOgXL-M/s320/IMGA0098.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
2° Pliage des leds<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-8ZsvP8hodyE/UeMOCRT-oBI/AAAAAAAAAK8/eueSyJTbk54/s1600/IMGA0100.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-8ZsvP8hodyE/UeMOCRT-oBI/AAAAAAAAAK8/eueSyJTbk54/s320/IMGA0100.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
3° Mise en place<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-i1xCsrpXoPY/UeMOP2eewYI/AAAAAAAAALE/CF6iSN_urdM/s1600/IMGA0102.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-i1xCsrpXoPY/UeMOP2eewYI/AAAAAAAAALE/CF6iSN_urdM/s320/IMGA0102.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
4° 1 étage terminé<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-cojIT4Ec4Ig/UeMOfn2gCZI/AAAAAAAAALM/2NiStt_ozcc/s1600/IMGA0103.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-cojIT4Ec4Ig/UeMOfn2gCZI/AAAAAAAAALM/2NiStt_ozcc/s320/IMGA0103.JPG" height="240" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
A faire 4 fois. J'ai également mis un fil de renfort qu'on voit a droite sur la photo.<br />
<br />
5° Le montage terminé<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qegpmAahYuw/UeMO9Ka2P5I/AAAAAAAAALU/ai19SGF7XE8/s1600/IMGA0105.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-qegpmAahYuw/UeMO9Ka2P5I/AAAAAAAAALU/ai19SGF7XE8/s320/IMGA0105.JPG" height="240" width="320" /></a></div>
<br />
Je ne me suis pas foulé pour les leds, c'était du vite fait pour le blog.<br />
Remarquez les fils alimentant les lignes.<br />
<br />
6° En vidéo<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/CFcGBSy0xvk?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<br />
<br />
L' animation sur la vidéo n'est qu'un exemple, a vous de le modifier selon vos gouts.<br />
<br />
<br />
<span style="color: orange;"><u><b>Nouveau Sketch un peu plus complet</b></u></span><br />
<br />
/***************** cube a leds ********************<br />
*****************By Jojo Bricolo********************<br />
************www.mon-arduino.blogspot.fr*************<br />
*************19/07/2013*****************************/<br />
<br />
<br />
<span style="font-size: small;">#include <avr/pgmspace.h> <br /><br />#define CUBESIZE 4<br />#define PLANESIZE CUBESIZE*CUBESIZE<br />#define PLANETIME 100 <br />#define TIMECONST 10<br /><br /><br />prog_uchar PROGMEM PatternTable[] = {<br /><br /><br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br /><br />B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,5, <br />B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,10,<br />B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,5,<br />B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,5,<br />B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,10,<br />B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,5,<br />B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,5,<br />B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16 <br />B0000,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,20, <br />B0000,B0000,B0000,B0000,B0011,B0000,B0000,B0000,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,20,<br />B0000,B0000,B0000,B0000,B0011,B0010,B0000,B0000,B0011,B0010,B0000,B0000,B0000,B0000,B0000,B0000,20,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0000,B0000,B0011,B0011,B0000,B0000,B0000,B0000,B0000,B0000,20,<br />B0011,B0011,B0000,B0000,B0011,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,20,<br />B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,20,<br />B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,20,<br />B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B0000,B0000,B0011,B0011,B0000,B0000,B0011,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0001,B0011,B0111,B0000,B0001,B0011,B0111,B0000,B0000,B0001,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0011,B0111,B0111,B0000,B0011,B0011,B0111,B0000,B0001,B0011,B0111,B0000,B0000,B0000,B0000,10,<br />B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,B0000,B0011,B0111,B0111,B0000,B0000,B0000,B0000,10,<br />B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,B0000,B0000,B0000,B0000,20, <br />B0000,B0000,B0000,B0000,B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,B0000,B0111,B0111,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,10,<br />B0000,B0000,B0000,B0000,B0000,B1110,B1110,B1110,B0000,B1110,B1110,B1110,B0000,B1100,B1110,B1110,10,<br />B0000,B0000,B0000,B0000,B0000,B1100,B1110,B1110,B0000,B1100,B1100,B1110,B0000,B1000,B1100,B1110,10,<br />B0000,B0000,B0000,B0000,B0000,B1000,B1100,B1110,B0000,B1000,B1100,B1110,B0000,B0000,B1000,B1100,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B1100,B1100,B0000,B0000,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1100,B1100,B0000,B0000,B1100,B1100,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B1100,B0000,B0000,B1100,B1100,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B0000,B0000,B1000,B1100,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,10, <br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1100,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1110,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0011,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0011,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0001,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0010,B0011,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0010,B0010,B0011,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0110,B0010,B0010,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0110,B0100,B0100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0100,B0100,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B1000,B0000,B0000,B0100,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B1000,B0000,B0000,B0000,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B1000,B1000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1100,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1100,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1100,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1110,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1110,B1110,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1110,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B0111,B0111,B0111,B0111,B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0011,B0011,B0011,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,10,<br />B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10, <br />B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10,<br />B1000,B1000,B1000,B1000,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,10,<br />B0000,B0000,B0000,B0000,B1000,B1000,B1000,B1000,B0100,B0100,B0100,B0010,B0011,B0011,B0011,B0011,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B1000,B1000,B0100,B0111,B0111,B0111,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B1111,B1111,10,<br />B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B1111,10,<br />B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,10,<br />B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,10,<br />B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,10,<br />B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,B0000,B0000,B1111,B0000,10,<br />B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,B0000,B0000,B1111,B0000,B0000,B1111,B0000,B0000,10,<br />B0000,B0000,B0000,B1111,B0000,B0000,B1111,B0000,B0000,B1111,B0000,B0000,B1111,B0000,B0000,B0000,10,<br />B0000,B0000,B1111,B1111,B0000,B1111,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br /> <br />B0111,B0111,B0111,B0111,B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0011,B0011,B0011,B0011,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,10, <br />B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10, <br />B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10,<br />B1000,B1000,B1000,B1000,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,10,<br />B0000,B0000,B0000,B0000,B1000,B1000,B1000,B1000,B0100,B0100,B0100,B0010,B0011,B0011,B0011,B0011,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1000,B1000,B1000,B0100,B0111,B0111,B0111,B0111,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B1111,B1111,10,<br />B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B1111,10,<br />B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,10,<br />B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,10,<br />B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,B0000,B0000,B0000,B1111,10,<br />B0000,B0000,B0001,B1110,B0000,B0000,B0001,B1110,B0000,B0000,B0001,B1110,B0000,B0000,B0001,B1110,10,<br />B0000,B0001,B0010,B1100,B0000,B0001,B0010,B1100,B0000,B0001,B0010,B1100,B0000,B0001,B0010,B1100,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,10,<br />B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B0100,B0010,B0010,10,<br />B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,B1000,B0100,B0010,B0001,10,<br />B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,B0000,B1100,B0011,B0000,10,<br />B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,B0000,B0011,B1100,B0000,10,<br />B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,B0001,B0010,B0100,B1000,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0001,B0001,B0010,B0100,B0001,B0001,B0010,B0100,B0001,B0001,B0010,B0100,B0001,B0001,B0010,B0100,10,<br />B0001,B0001,B0001,B0010,B0001,B0001,B0001,B0010,B0001,B0001,B0001,B0010,B0001,B0001,B0001,B0010,10,<br />B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10,<br />B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10,<br />B1000,B1000,B1000,B1000,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0001,B0001,B0001,B0001,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10,<br />B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10,<br />B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10,<br />B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10,<br />B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10,<br />B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10,<br />B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10,<br />B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0000,B0000,B0000,B0000,B1100,B1100,B1100,B1100,B0011,B0011,B0011,B0011,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0011,B0011,B0011,B0011,B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,10,<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B1000,B1000,B1000,B1000,10, <br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,10, <br />B0001,B0001,B0001,B0001,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,10,<br />B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,B0001,10,<br />B0010,B0001,B0001,B0001,B0010,B0010,B0001,B0001,B0001,B0001,B0010,B0010,B0001,B0001,B0001,B0010,10,<br />B0100,B0010,B0001,B0001,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0010,B0001,B0001,B0010,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,5,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,5,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,5,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,5,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,5,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,5,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,5,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,5,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,5,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,5,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,5,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,5,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,5,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,5,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,5,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,5,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,5,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,5,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,5,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,5,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,5,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,5,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,5,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,5,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,5,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,5,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,5,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,5,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,5,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,5,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,10,<br />B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,10,<br />B0001,B0010,B0100,B1000,B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,10,<br />B0000,B0011,B1100,B0000,B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,10,<br />B0000,B1100,B0011,B0000,B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,10,<br />B1000,B0100,B0010,B0001,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0001,B0010,B0100,B1000,10,<br />B1000,B0100,B0010,B0010,B0100,B0100,B0010,B0010,B0010,B0010,B0100,B0100,B0010,B0010,B0100,B1000,10,<br />B1000,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B0100,B1000,10, <br />B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,10,<br />B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,10,<br />B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B0000,B1000,B1000,B1000,10,<br />B1000,B1000,B1000,B1000,B1000,B1000,B1000,B1000,B0000,B1000,B1000,B1000,B0000,B0000,B1000,B1000,10,<br />B1000,B1000,B1000,B1000,B0000,B1000,B1000,B1000,B0000,B0000,B1000,B1000,B0000,B0000,B0000,B1000,10,<br />B0000,B1000,B1000,B1000,B0000,B0000,B1000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B1000,B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B0000,B0000,B0000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1000,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1100,B1000,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1000,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1100,B1000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1100,B1100,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1100,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1100,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1100,B1110,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1110,B1110,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1110,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1110,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B0000,B0000,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B0000,B0001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B0001,B0001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B0011,B0001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B0111,B0001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B0001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1001,B0001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B1111,B1111,B1111,B1111,B1111,B1001,B1001,B0001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1001,B1001,B1001,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1001,B1001,B1101,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1001,B1101,B1101,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1101,B1101,B1101,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1101,B1101,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1101,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0010,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B0010,B0010,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0010,B0010,B0010,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0010,B0010,B0010,B0010,B0000,B0000,B0000,B0000,10, <br />//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0110,B0010,B0010,B0010,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0110,B0110,B0010,B0010,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0110,B0110,B0110,B0010,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0110,B0110,B0110,B0110,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0111,B0110,B0110,B1110,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0111,B0111,B1110,B1110,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0111,B1111,B1111,B1110,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B0000,B0000,10, <br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1000,B0000,B0000,B0001,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1100,B0000,B0000,B0011,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1110,B0000,B0000,B0111,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0000,B1111,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0001,B1000,B1111,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1001,B1001,B1111,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1101,B1011,B1111,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,1000,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0110,B0110,B0000,10,<br />B1111,B1111,B1111,B1111,B1111,B1111,B1111,B1111,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,10,<br />B1111,B1111,B1111,B1111,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,10,<br />B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,10,<br />B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0110,B0110,B0000,B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0110,B0110,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,10,<br />B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,B0000,4000,</span>// elements de base, ne pas toucher!!!!<br />
B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 0<br />
};<br />
<br />
//définition des broches de sortie<br />
<br />
int ColPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; // colonnes anodes<br />
int LignePin[] = {16, 17, 18, 19}; // lignes cathode<br />
<br />
void setup()<br />
{<br />
int pin; <br />
<br />
for (pin=0; pin<PLANESIZE; pin++) {<br />
pinMode( ColPin[pin], OUTPUT );<br />
}<br />
<br />
for (pin=0; pin<CUBESIZE; pin++) {<br />
pinMode( LignePin[pin], OUTPUT );<br />
}<br />
}<br />
<br />
void loop()<br />
{<br />
// declare variables<br />
byte PatternBuf[PLANESIZE]; <br />
int PatternIdx;<br />
byte AffichageTime; <br />
unsigned long TimeFin;<br />
int Lignes; <br />
int patbufidx; <br />
int ledlig; <br />
int ledcol; <br />
int ledpin; <br />
<br />
<br />
PatternIdx = 0;<br />
<br />
do {<br />
<br />
memcpy_P( PatternBuf, PatternTable+PatternIdx, PLANESIZE );<br />
PatternIdx += PLANESIZE;<br />
<br />
AffichageTime = pgm_read_byte_near( PatternTable + PatternIdx++ );<br />
<br />
TimeFin = millis() + ((unsigned long) AffichageTime) * TIMECONST;<br />
<br />
<br />
while ( millis() < TimeFin ) {<br />
patbufidx = 0; <br />
<br />
for (Lignes=0; Lignes<CUBESIZE; Lignes++) {<br />
<br />
if (Lignes==0) {<br />
digitalWrite( LignePin[CUBESIZE-1], HIGH );<br />
} else {<br />
digitalWrite( LignePin[Lignes-1], HIGH );<br />
}<br />
<br />
<br />
ledpin = 0;<br />
for (ledlig=0; ledlig<CUBESIZE; ledlig++) {<br />
for (ledcol=0; ledcol<CUBESIZE; ledcol++) {<br />
digitalWrite( ColPin[ledpin++], PatternBuf[patbufidx] & (1 << ledcol) );<br />
}<br />
patbufidx++;<br />
}<br />
<br />
<br />
digitalWrite( LignePin[Lignes], LOW );<br />
<br />
delayMicroseconds( PLANETIME );<br />
} <br />
} <br />
} while (AffichageTime > 0); <br />
}<br />
<br />
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage ( concernant les leds, je ne fais que les fournir, a vous de les souder) !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span>Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com2tag:blogger.com,1999:blog-1552666791524504649.post-28978188381123928002013-07-13T00:21:00.001+02:002014-05-17T14:29:51.168+02:00Commande Bluetooth et Android<br />
<br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
<br />
Contrairement aux modules RF433Mhz évoqué dans un autre sujet, le module
Bluetooth peut dialoguer dans les deux sens. Ici nous allons l'utiliser pour
communiquer avec des appareils sous Android.<br />
Les spécifications matérielles sont les suivantes<br />
<br />
Sensibilité typique-80dBm<br />
Jusqu'à +4 dBm puissance d'émission RF<br />
Portée environ 30m en champ libre et 10m dans une maison
(pour ma part j'ai testé en intérieur<br />
et n'ai a part un ralentissement pas eu de
soucis dans ma maison de 3 étages)<br />
Antenne PCB intégrée.<br />
<br />
Il s'agit d'un appareil à 3,3 volts que je fais fonctionner en 5V!!!!!<br />
<br />
Je vais tenter de vous proposer un code simple que vous pourrez aisément
adapter a vos applications.<br />
<br />
<span style="font-family: "Calibri","sans-serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: FR; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;">Ce montage vas vous permettre dans un premier temps
de contrôler des sortie d'une carte Arduino avec un téléphone mobile ou une
tablette sous Android qui dispose d'une connectivité Bluetooth. Et de pouvoir
lire l'état de ces sortie sur l'écran de l'appareil utilisé.<br />
Pour cela j'utilise une application de terminal sur le périphérique Android,
dans cet exemple il s'agit de "BlueTerm" qui peut être
téléchargé à partir de Google Play<br style="mso-special-character: line-break;" />
<br style="mso-special-character: line-break;" />
</span><br />
<br />
1 Téléphone sous Android<br />
1 Carte Arduino Unoa trouver ici <a href="http://cgi.ebay.fr/Official-Arduino-UNO-Rev3-R3-328-ATMEGA328P-Board-with-Free-USB-Cable-/160842804534?pt=UK_Computing_Other_Computing_Networking&hash=item2572fa6d36" target="_blank">http://cgi.ebay.fr/Official-Arduino-UNO-Rev3</a><br />
1 Carte Bluetooth a trouver ici <a href="http://www.ebay.fr/itm/Arduino-Wireless-Bluetooth-Board-115200bps-Slave-/171072001133?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item27d4af946d" target="_blank">http://www.ebay.fr/itm/Arduino-Wireless-Bluetooth</a><br />
<span style="color: red;"> Les liens que je met ne sont que des exemples et font parti des sites que j'ai trouvé les moins chers</span><br />
<br />
<br />
<u><b>Le module Bluetooth </b></u><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-HTv2CL_LQrY/UeB96rlqT-I/AAAAAAAAAGY/vbCyxrfkr1s/s1600/IMGA0082.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-HTv2CL_LQrY/UeB96rlqT-I/AAAAAAAAAGY/vbCyxrfkr1s/s320/IMGA0082.JPG" height="240" width="320" /></a></div>
<br />
<br />
<br />
<br />
<u><span style="color: red;">Câblage du module bluetooth</span></u><br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-mx8kdlKTrhM/UeB-1nAgWzI/AAAAAAAAAGk/8HH6QfZCvtk/s1600/IMGA0084.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-mx8kdlKTrhM/UeB-1nAgWzI/AAAAAAAAAGk/8HH6QfZCvtk/s320/IMGA0084.JPG" height="185" width="320" /></a></div>
<br />
<br />
RX se câble sur TX (borne 0) de l'arduino et TX sur RX de l' arduino (borne 1)<br />
<br />
<br />
<a href="http://1.bp.blogspot.com/-PFrfM5pX3FI/UeB_A6B5xlI/AAAAAAAAAGs/-RFibUs5VDo/s1600/IMGA0083.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><br />
<br />
<u>Le câblage</u><br />
<br />
Encore une fois, c'est très simple.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-MnMNhtgB6Wk/UeB_rvs39UI/AAAAAAAAAG0/MOl16oGq1IY/s1600/commande+bluetooth.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-MnMNhtgB6Wk/UeB_rvs39UI/AAAAAAAAAG0/MOl16oGq1IY/s320/commande+bluetooth.jpg" height="282" width="320" /></a></div>
<br />
<br />
<br />
<br />
Lors de la programmation de l' Arduino, il faudra veiller a débrancher les connexions RX et TX sinon il y a conflit entre la communication USB et Bluetooth ce qui génère un plantage du logiciel Arduino.<br />
<br />
<u><b>Le Sketch:</b></u><br />
<br />
<a href="http://arduino-creations.blogspot.fr/p/contrairement-aux-modules-rf433mhz.html" target="_blank">ICI</a><br />
<br />
<br />
<u><b><br /></b></u>
<u><b>Une petite vidéo de démonstration.</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/QpvnkiHHxTk?feature=player_embedded' frameborder='0'></iframe><br />
<br />
<br />
<br />
<span style="color: red;">Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!</span><br />
<span style="color: red;">N'hésitez pas a me contacter.</span><br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com20tag:blogger.com,1999:blog-1552666791524504649.post-39713287130998801192013-07-10T07:14:00.001+02:002013-07-21T08:27:02.655+02:00Telecommande radio 433Mhz<h2 style="text-align: center;">
<u><br /></u></h2>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>FR</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]-->
Je cherchais un moyen de communiquer sans fil entre deux cartes Arduino. Je
n'avais besoin que d'un sens de communication car j'envoie des mesures vers un module maitre.<br />
Cette solution a quelques contraintes par rapport au Xbee mais est nettement
moins cher.<br />
<br />
<br style="mso-special-character: line-break;" />
<u><b>Quelques inconvénients</b><b><br style="mso-special-character: line-break;" /></b></u><br />
<br />
1) Dialogue a sens unique<br />
2) pas de possibilité de programmer des ES sur le module (les Xbee possèdent
quelques entrées sorties ce qui les rends plus autonomes)<br />
3) Bruit de fond possible ce qui peut générer des erreurs de codes
(cela ne m'est jamais arrivé)<br />
4) consommation importante de l'émetteur 20 a 30mA ce qui peut être gênant
pour un fonctionnement sur piles ou accus.<br />
<br />
Bande passante plafonne à 2400 bps pour des petites
applications. La portée peut aller jusqu’à 150m suivant la tension
d'alimentation de l'émetteur qui peut aller de 3 a 12Volts<br />
<br />
<br />
<u><b><span style="color: orange;">L'émetteur</span></b></u><br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-8_2jKsoyQGE/Ud24_hJ5NiI/AAAAAAAAAEY/SsKc4JQry_I/s1600/emetteur+(2).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://2.bp.blogspot.com/-8_2jKsoyQGE/Ud24_hJ5NiI/AAAAAAAAAEY/SsKc4JQry_I/s200/emetteur+(2).JPG" width="173" /></a></div>
<br />
<br />
<br />
<u><b>Matériel</b></u><br />
<br />
1 ATMEGA 328 a trouver ici <a href="http://www.ebay.fr/itm/ATMEGA328P-PU-ARDUINO-UNO-KIT-mit-5V-Spannungsstabilisator-MCU-A18-/261227579949?pt=Bauteile&hash=item3cd2608a2d" target="_blank">http://www.ebay.fr/itm/ATMEGA328P-PU-ARDUINO</a><br />
1 Module émetteur et récépteur a trouver ici <a href="http://www.ebay.fr/itm/433Mhz-RF-transmitter-and-receiver-link-kit-for-Arduino-ARM-MCU-WL-/130923212876?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item1e7ba1b04c" target="_blank">http://www.ebay.fr/itm/433Mhz-RF-transmitter-and-receiver</a><br />
<br />
<u><b>Le schéma </b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-AG98eGwVuFY/UdztISJ3TFI/AAAAAAAAAEI/om1Zm1Y6FEI/s1600/emetteur.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="269" src="http://2.bp.blogspot.com/-AG98eGwVuFY/UdztISJ3TFI/AAAAAAAAAEI/om1Zm1Y6FEI/s320/emetteur.jpg" width="320" /></a></div>
Je ne suis pas parti d'un module arduino tout fait, j'ai utilisé et programmé un ATM 328 que j'ai acheté avec le bootoader arduino. Je vous montrerai comment faire cette programmation dans une autre page.<br />
<br />
Le schéma avec une carte Uno<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-o7h0s5L-ex4/Ud3AAZXfBCI/AAAAAAAAAEo/fkzN5NgHMEA/s1600/emetteur3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-o7h0s5L-ex4/Ud3AAZXfBCI/AAAAAAAAAEo/fkzN5NgHMEA/s200/emetteur3.jpg" width="190" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-0BisLu037DE/Udzs6Ekt_II/AAAAAAAAAEA/zunVWWw90bE/s1600/emetteur.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
<br />
<u>Le code émetteur</u><br />
<br />
<br />
//Emetteur de telecommande<br />
// By Jojo Bricolo<br />
// mon-arduino.blogspot.com<br />
// 09/07/2013<br />
<br />
<br />
#include <VirtualWire.h><br />
<br />
void setup()<br />
{<br />
Serial.begin(9600); <br />
<br />
<br />
<br />
vw_set_ptt_inverted(true); <br />
vw_setup(2000); <br />
vw_set_tx_pin(12); <br />
<br />
pinMode(2, INPUT);<br />
pinMode(3, INPUT);<br />
pinMode(4, INPUT);<br />
pinMode(5, INPUT);<br />
pinMode(6, INPUT);<br />
pinMode(7, INPUT);<br />
pinMode(8, INPUT);<br />
pinMode(9, INPUT);<br />
pinMode(10, INPUT);<br />
pinMode(11, INPUT);<br />
<br />
digitalWrite(2, HIGH);<br />
digitalWrite(3, HIGH);<br />
digitalWrite(4, HIGH);<br />
digitalWrite(5, HIGH);<br />
digitalWrite(6, HIGH);<br />
digitalWrite(7, HIGH);<br />
digitalWrite(8, HIGH);<br />
digitalWrite(9, HIGH);<br />
digitalWrite(10, HIGH);<br />
digitalWrite(11, HIGH);<br />
<br />
}<br />
<br />
void loop()<br />
{<br />
char *msg;<br />
<br />
if(digitalRead(2) == LOW){<br />
char *msg = "1";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
if(digitalRead(3) == LOW)<br />
{<br />
char *msg = "2";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
if(digitalRead(4) == LOW)<br />
{<br />
char *msg = "3";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx();<br />
digitalWrite(13, false);<br />
}<br />
<br />
if(digitalRead(5) == LOW)<br />
{<br />
char *msg = "4";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
<br />
if(digitalRead(6) == LOW)<br />
{<br />
char *msg = "5";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
if(digitalRead(7) == LOW)<br />
{<br />
char *msg = "6";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
if(digitalRead(8) == LOW)<br />
{<br />
char *msg = "7";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
<br />
if(digitalRead(9) == LOW)<br />
{<br />
char *msg = "8";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
if(digitalRead(10) == LOW)<br />
{<br />
char *msg = "9";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
}<br />
<br />
if(digitalRead(11) == LOW)<br />
{<br />
char *msg = "10";<br />
digitalWrite(13, true); <br />
vw_send((uint8_t *)msg, strlen(msg));<br />
vw_wait_tx(); <br />
digitalWrite(13, false);<br />
} <br />
<br />
}<br />
<br />
<br />
La librairie virtualWire est a télécharger<br />
<a href="https://github.com/m0/Updated-Arduino-VirtualWire-Library" target="_blank">https://github.com/m0/Updated-Arduino-VirtualWire-Library</a><br />
<br />
Sur la page a droite il y a un bouton <b>Download zip</b>, celui-ci vous permet de télécharger le dossier complet.<br />
Cette librairie servira également au récepteur.<br />
<br />
<u><b> Le typon </b></u><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xppt0Bo8QE8/Ud3I32B4SII/AAAAAAAAAE4/uyGBnoWci90/s1600/TYPON.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-xppt0Bo8QE8/Ud3I32B4SII/AAAAAAAAAE4/uyGBnoWci90/s320/TYPON.jpg" width="304" /></a></div>
<br />
<br />
<br />
<br />
<u><b>L'implantation</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-er_bKATHaCQ/Ud3JAJduKvI/AAAAAAAAAFA/I3EXlvFbzys/s1600/IMPLANT.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-er_bKATHaCQ/Ud3JAJduKvI/AAAAAAAAAFA/I3EXlvFbzys/s320/IMPLANT.jpg" width="257" /></a></div>
J'ai utilisé des résistances et des condensateurs CMS 1206 pour gagner de la place<br />
<br />
<span style="color: orange;"><u><b>L’émetteur</b></u></span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zLKw5o72m8I/Ud8Ta2pI3vI/AAAAAAAAAFQ/XkuVozthtn0/s1600/IMGA0078.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="http://3.bp.blogspot.com/-zLKw5o72m8I/Ud8Ta2pI3vI/AAAAAAAAAFQ/XkuVozthtn0/s320/IMGA0078.JPG" width="320" /></a></div>
<br />
<br />
Le module comporte 4 broches :<br />
+ 5V, GND et 2 data (qui sont en parallèle.).<br />
<br />
<u>Le schéma</u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-uufk1TEbbI8/Ud8X6nX6I8I/AAAAAAAAAFg/S2HPr1Tw2NA/s1600/recepteur3.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="http://3.bp.blogspot.com/-uufk1TEbbI8/Ud8X6nX6I8I/AAAAAAAAAFg/S2HPr1Tw2NA/s400/recepteur3.jpg" width="400" /></a></div>
<br />
<u>Le code</u><br />
<br />
---------------------------------------------------------------------------------------<br />
//Recepteur de telecommande<br />
// By Jojo Bricolo<br />
// mon-arduino.blogspot.com<br />
// 09/07/2013<br />
<br />
#include <VirtualWire.h><br />
<br />
void setup()<br />
{<br />
Serial.begin(9600); <br />
<br />
<br />
<br />
vw_set_ptt_inverted(true); <br />
vw_setup(2000); <br />
vw_set_rx_pin(12);<br />
vw_rx_start(); <br />
<br />
pinMode(2, OUTPUT);<br />
digitalWrite (2,LOW);<br />
pinMode(3, OUTPUT);<br />
digitalWrite (3,LOW);<br />
pinMode(4, OUTPUT);<br />
digitalWrite (4,LOW);<br />
pinMode(5, OUTPUT);<br />
digitalWrite (5,LOW);<br />
pinMode(6, OUTPUT);<br />
digitalWrite (6,LOW);<br />
pinMode(7, OUTPUT);<br />
digitalWrite (7,LOW);<br />
pinMode(8, OUTPUT);<br />
digitalWrite (8,LOW);<br />
pinMode(9, OUTPUT);<br />
digitalWrite (9,LOW);<br />
pinMode(10, OUTPUT);<br />
digitalWrite (10,LOW);<br />
pinMode(11, OUTPUT);<br />
digitalWrite (11,LOW);<br />
<br />
}<br />
<br />
void loop()<br />
{<br />
<br />
uint8_t buf[VW_MAX_MESSAGE_LEN];<br />
uint8_t buflen = VW_MAX_MESSAGE_LEN;<br />
<br />
if (vw_get_message(buf, &buflen))<br />
{<br />
int i;<br />
<br />
digitalWrite(13, true); <br />
<br />
for (i = 0; i < buflen; i++)<br />
{<br />
if(buf[i] == '1')<br />
{<br />
digitalWrite(2, HIGH);<br />
delay(10);<br />
}<br />
else<br />
{} <br />
if(buf[i] == '2')<br />
{<br />
digitalWrite(3, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '3')<br />
{<br />
digitalWrite(4, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '4')<br />
{<br />
digitalWrite(5, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '5')<br />
{<br />
digitalWrite(6, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '6')<br />
{<br />
digitalWrite(7, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '7')<br />
{<br />
digitalWrite(8, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '8')<br />
{<br />
digitalWrite(9, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '9')<br />
{<br />
digitalWrite(10, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} if(buf[i] == '10')<br />
{<br />
digitalWrite(11, HIGH);<br />
delay(10); <br />
}<br />
else<br />
{} }<br />
digitalWrite(13, false);<br />
}<br />
}<br />
<br />
---------------------------------------------------------------------------------<br />
<br />
<br />
<b><u>Le typon </u></b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zDpcZ3iUG3Q/Ud8ZdaXKEhI/AAAAAAAAAFw/mXyN6TOJMAw/s1600/TYPON2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="http://3.bp.blogspot.com/-zDpcZ3iUG3Q/Ud8ZdaXKEhI/AAAAAAAAAFw/mXyN6TOJMAw/s320/TYPON2.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
<u><b>L'implantation</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zDpcZ3iUG3Q/Ud8ZdaXKEhI/AAAAAAAAAFs/Z3V7qGenQj0/s1600/TYPON2.jpg" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-RNIxA_PpyAk/Ud8ZxdgqeaI/AAAAAAAAAF0/Xb8l9PXYDr8/s1600/implant2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-RNIxA_PpyAk/Ud8ZxdgqeaI/AAAAAAAAAF0/Xb8l9PXYDr8/s320/implant2.jpg" width="312" /></a></div>
<br />
<br />
* Dans ces sketch, les sorties sont actives durant 10 millisecondes<br />
pour avoir des sorties fixes, il faut supprimer toutes les lignes<br />
delay(10); dans le code récepteur.<br />
Une fois sélectionnées, les sorties resteront actives, il faudra donc affecter des boutons et rajouter des lignes d’extinction.<br />
La sortie 13 permet de mettre une leds qui clignote lors de l'émission du signal<br />
<br />
Il ne faut pas oublier de mettre une antenne sur les bornes prévues a cet effet. Celle-ci peut être un simple bout de fil d'environ 25cm.<br />
<br />
<br />
J'ai testé le code a environ 50m et ça fonctionne très bien. Il est facilement modifiable afin de rajouter des commandes.<br />
Pour un dialogue dans les deux sens, il faut deux émetteurs et deux récepteurs mais cela coûtera encore moins cher que des Xbee a environ 30Euros pièce.<br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com0tag:blogger.com,1999:blog-1552666791524504649.post-57977537177588139992013-07-08T23:13:00.000+02:002013-07-19T16:08:27.165+02:00Chenillard simple 8 voies<a href="http://1.bp.blogspot.com/-krRrIy_QHww/UdsTM0e605I/AAAAAAAAABM/r-w8e1BGwKQ/s1600/Sch%C3%A9ma+chenillard.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="289" src="http://1.bp.blogspot.com/-krRrIy_QHww/UdsTM0e605I/AAAAAAAAABM/r-w8e1BGwKQ/s320/Sch%C3%A9ma+chenillard.jpg" width="320" /></a><br />
<br />
Le schéma est très simple, il est réalisé a l'aide de fritzing (logiciel gratuit)<br />
Téléchargement <a href="http://fritzing.org/download/" target="_blank">http://fritzing.org/download/</a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<u><b>Le code qui est assez simple:</b></u><br />
<br />
-------------------------------------------------------------------------<br />
// By Jojo Bricolo<br />
// mon-arduino.blogspot.com<br />
// 07/07/2013<br />
<br />
//Chenillard 8 voies<br />
<br />
const int LED[8]={2,3,4,5,6,7,8,9}; // déclaration d'un tableau de 8 constantes de broches<br />
<br />
int vitesse=10; // variable de vitesse <br />
<br />
void setup() {<br />
<br />
for (int i=0; i<=7; i++) { // 7 est les nombre de leds soit 8 au total, le zero compte aussi<br />
<br />
pinMode(LED[i], OUTPUT);<br />
digitalWrite(LED[i], LOW);<br />
}<br />
}<br />
<br />
void loop(){<br />
<br />
// effet 1<br />
<br />
for (int j=0; j<4; j++) { // j<4 représente le nombre de répétitions<br />
<br />
On_Off(B11111101);<br />
delay (100); // durée d'allumage en milliseconde ces lignes peuvent être supprimées<br />
On_Off(B11110011);<br />
delay (100); <br />
On_Off(B11100111); <br />
delay (100); <br />
On_Off(B11111111);<br />
delay (100); <br />
On_Off(B11100111);<br />
delay (100); <br />
On_Off(B11010011);<br />
delay (100); <br />
On_Off(B10011101); <br />
}<br />
<br />
On_Off(B00000000); //remise a zéro<br />
delay(0); // durée de la remise a zéro soit durée de la pause entre chaque effets<br />
<br />
<br />
//*******************<br />
<br />
// effet 2<br />
<br />
for (int j=0; j<8; j++) { <br />
<br />
On_Off(B11111000);<br />
delay(120);<br />
On_Off(B01111100); <br />
delay(120); <br />
On_Off(B00111110); <br />
delay(120); <br />
On_Off(B00011111); <br />
delay(120); <br />
<br />
} // fin boucle for x10<br />
<br />
On_Off(B00000000);<br />
delay(0);<br />
<br />
//****************<br />
<br />
// effet 3<br />
<br />
for (int j=0; j<8; j++) { <br />
<br />
On_Off(B11111111);<br />
delay (100); <br />
On_Off(B01111110);<br />
delay (100); <br />
On_Off(B10111101);<br />
delay (100); <br />
On_Off(B11011011);<br />
delay (100); <br />
On_Off(B11100111);<br />
delay (100); <br />
On_Off(B11011011);<br />
delay (100);<br />
On_Off(B10111101);<br />
delay (100); <br />
On_Off(B01111110);<br />
delay (100); <br />
On_Off(B11111111);<br />
<br />
}<br />
<br />
On_Off(B00000000);<br />
delay(0);<br />
<br />
}// fin<br />
<br />
void On_Off(byte valeur) { <br />
for (int i=0; i<=7; i++) {<br />
digitalWrite(LED[i],bitRead(valeur,i)); <br />
}<br />
delay(vitesse); //pause<br />
}<br />
<br />
<br />
--------------------------------------------------------------------<br />
<br />
Dans ce montage, je propose des leds mais cela peut être des opto-coupleurs, des relais, des triacs, etc... La sortie des modules Arduino permet de piloter des courants allant jusqu’à 20mA au delà il faut mettre un driver de puissance.<br />
<br />
<br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com5tag:blogger.com,1999:blog-1552666791524504649.post-45368009500040121062013-07-08T00:54:00.000+02:002013-07-13T12:01:10.172+02:00Platine d'essaisEn ayant un peu raz le bol de démonter et remonter les leds, résistance, etc... sur des platines d'essais du commerce.<br />
J'ai fabriqué une platine d'essais sur laquelle j'ai mis un Arduino Nano, des leds, résistances, inters dils de manière a n'avoir que des ponts a faire.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-A1BWUKNAI7Q/UeCDC6Az48I/AAAAAAAAAHE/a6fIHIykTN8/s1600/IMGA0086.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="http://1.bp.blogspot.com/-A1BWUKNAI7Q/UeCDC6Az48I/AAAAAAAAAHE/a6fIHIykTN8/s400/IMGA0086.JPG" width="400" /></a></div>
<br />
<br />
<br />
<u><b>Le schéma</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-MRvJ7mGmMMA/UeCSHx7143I/AAAAAAAAAH8/txtXyR6-5aw/s1600/SCHEMA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="261" src="http://2.bp.blogspot.com/-MRvJ7mGmMMA/UeCSHx7143I/AAAAAAAAAH8/txtXyR6-5aw/s400/SCHEMA.jpg" width="400" /></a></div>
<br />
<u><b>Implantation</b></u><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-JsD7iI8YFUs/UeCGXoWNuyI/AAAAAAAAAHU/Wq-2uDi9j24/s1600/platine+d%27essais.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="http://1.bp.blogspot.com/-JsD7iI8YFUs/UeCGXoWNuyI/AAAAAAAAAHU/Wq-2uDi9j24/s320/platine+d%27essais.jpg" width="320" /></a></div>
<br />
<u><b>Le typon</b></u><br />
<br />
Coté composants<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-boC1FiIEnzs/UeCIK8MmcKI/AAAAAAAAAHk/M27o3OuudIQ/s1600/cot%C3%A9+composants.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="http://2.bp.blogspot.com/-boC1FiIEnzs/UeCIK8MmcKI/AAAAAAAAAHk/M27o3OuudIQ/s400/cot%C3%A9+composants.jpg" width="400" /></a></div>
<br />
Coté cuivre<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-WqTfg4EDKfU/UeCIUDjQlaI/AAAAAAAAAHs/6XSCMKXSHwQ/s1600/cot%C3%A9+cuivre.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="http://1.bp.blogspot.com/-WqTfg4EDKfU/UeCIUDjQlaI/AAAAAAAAAHs/6XSCMKXSHwQ/s320/cot%C3%A9+cuivre.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
Je travaille beaucoup avec des composants CMS pour gagner de la place, ce circuit est facile a dessiner en composants standard.<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com0tag:blogger.com,1999:blog-1552666791524504649.post-67667957542248712312013-07-07T23:01:00.000+02:002013-08-23T06:40:34.379+02:00Programmer un Atmel 328 avec une carte UNON'utilisant que très rarement des modules arduino complets, je programme des ATMEGA 328 que j'achetais avec le bootloader UNO (il existe sur ebay des kits complets comprenant l'Atmel 328 les condensateurs, la résistance, le quartz, le régulateur 5V, le support 28 broches et un bouton poussoir pour a peine plus de 4 euros).<br />
Au départ j'utilisais un programmateur USB comme celui-ci<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-OK1DRYCmGEU/Ud8adnaFONI/AAAAAAAAAGA/Ron0G12KXBQ/s1600/IMGA0080.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://3.bp.blogspot.com/-OK1DRYCmGEU/Ud8adnaFONI/AAAAAAAAAGA/Ron0G12KXBQ/s320/IMGA0080.JPG" width="320" /></a></div>
<br />
<br />
<br />
<br />
mais cela me faisait rajouter un connecteur 5 broches, 1 condensateur et une résistance (RC pour la RAZ) sur mon typon.<br />
<br />
J'ai donc tout simplement rajouté un support a insertion nulle sur une carte UNO<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-FzxBVGyxcaU/Ud8a-sNTzEI/AAAAAAAAAGI/ovSqgFzwS3I/s1600/IMGA0081.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-FzxBVGyxcaU/Ud8a-sNTzEI/AAAAAAAAAGI/ovSqgFzwS3I/s320/IMGA0081.JPG" width="320" /></a></div>
Grâce a cela, je peux programmer le micro contrôleur mais aussi faire mes essais, je suis donc sure a 99,99% que lorsque je met le µcontrôleur sur le typon mon programme est bon.<br />
L’inconvénient de ce principe est que pour toutes modifications de programme je dois enlever le µcontrôleur.<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com1tag:blogger.com,1999:blog-1552666791524504649.post-55099610906188996822013-07-06T23:11:00.000+02:002016-10-02T10:31:50.121+02:00Bienvenu sur Arduino créations<div style="text-align: center;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="color: orange;"><b>Bienvenu sur mon blog dédié a Arduino. </b></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-T-ZpOXSbtlQ/Uvae0JhFudI/AAAAAAAAAgI/IOXToZRfRdU/s1600/logojb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://3.bp.blogspot.com/-T-ZpOXSbtlQ/Uvae0JhFudI/AAAAAAAAAgI/IOXToZRfRdU/s1600/logojb.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<u><b>Présentation:</b></u><br />
<br />
<a href="http://2.bp.blogspot.com/-kD2PFmfJXfk/UeEhtraXDbI/AAAAAAAAAJo/-_fI8l8NrBo/s1600/aout2005+035.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="https://2.bp.blogspot.com/-kD2PFmfJXfk/UeEhtraXDbI/AAAAAAAAAJo/-_fI8l8NrBo/s200/aout2005+035.jpg" width="200" /></a><u><b> </b></u><br />
<br />
Bonjour,<br />
<br />
Je me prénomme Joël, je travaille dans le domaine de l'électricité et pratique l'électronique en loisir depuis très jeune. Je développais et réalisais des montage en logique simple, les µcontrôleur n’existaient pas encore pour le grand publique.<br />
<br />
Durant quelques années pour des raisons professionnelles et de rénovation d'une maison, j'ai du cesser mon loisir.<br />
<br />
J'ai redémarre le bricolage en électronique et là plus rien n'était pareil.<br />
ça a été un nouvel apprentissage, d'abord l'assembleur, puis le C lorsqu'un jour je découvre ARDUINO.<br />
<br />
J'ai été étonné par la facilité d'utilisation et de programmation je n'utilise quasiment plus que ça. Depuis je ne cesse de chercher, de développer et d'améliorer mes connaissances.<br />
Je n'ai pas beaucoup de temps libre mais j'ai malgré tout voulu créer ce blog que je tiendrais a jour car j'aimerai partager cette passion et mes quelques réalisations.<br />
<br />
<u><b> Mon Univers ARDUINO</b></u><br />
<br />
<u>Mon lieu de développement et d' essais</u><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-XaqXh-Vcr8E/UeEfQiRsm_I/AAAAAAAAAI8/lXZhcrbX9Y4/s1600/IMGA0093.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-XaqXh-Vcr8E/UeEfQiRsm_I/AAAAAAAAAI8/lXZhcrbX9Y4/s320/IMGA0093.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-cmIn8voLLbY/UeEfVMpii-I/AAAAAAAAAJE/pjkyjWS8pFE/s1600/IMGA0095.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://4.bp.blogspot.com/-cmIn8voLLbY/UeEfVMpii-I/AAAAAAAAAJE/pjkyjWS8pFE/s320/IMGA0095.JPG" width="320" /></a></div>
<br />
<br />
<u>Mon atelier de montage</u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-Z6i5yIGU9GE/UeEflSxmXaI/AAAAAAAAAJM/fsW79XzJU3g/s1600/IMGA0091.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://2.bp.blogspot.com/-Z6i5yIGU9GE/UeEflSxmXaI/AAAAAAAAAJM/fsW79XzJU3g/s320/IMGA0091.JPG" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<u>Et le labo de gravure</u><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_P6VvtcAo_M/UeEfyO-BqoI/AAAAAAAAAJU/eVzYNhCy_rI/s1600/IMGA0092.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-_P6VvtcAo_M/UeEfyO-BqoI/AAAAAAAAAJU/eVzYNhCy_rI/s320/IMGA0092.JPG" width="320" /></a></div>
<br />
<br />
<br />
Dans un premier temps, je vous proposerai les réalisations suivantes:<br />
<br />
<ul>
<li>Un chenillard simple</li>
<li>Une matrice 8x8 affichant un texte défilant</li>
<li> Une télécommande avec des modules 433MHZ</li>
<li>Une télécommande Bluetooth fonctionnant avec Androide</li>
<li>Un thermostat LCD a base de DS18B20 avec affichage de la température et de la consigne (réglable avec un potentiomètre)</li>
<li>Une horloge analogique numérique</li>
<li>Un automate pour aquarium affichage LCD</li>
<li>Un automate pour aquarium affichage TFT </li>
<li>Un cube a leds </li>
<li>Minuteur programmable avec affichage LCD </li>
</ul>
Dans certains cas, je rajouterai les librairie que j'ai modifiées.
Celles-ci seront a copier dans le bloc note et enregistrées au format "<span style="color: red;"><b>.h</b></span>" <br />
<ul>
</ul>
Chaque réalisation proposée a été testée et fonctionne.<br />
<br />
<b>N'hésitez pas a me laisser des remarques ou me poser d'éventuelles questions.</b><br />
<br />
<b>Bon amusement!!!!!!!</b><br />
<br />
<br />Jojohttp://www.blogger.com/profile/12165218046027044119noreply@blogger.com5Sainte-Croix-en-Plaine, France48.008941 7.384457999999995147.923957 7.2230964999999951 48.093925 7.545819499999995