Bon je relance se sujet, mais c'est pour la fabrication de notre bombe factice. Je rappel mon métier actuel est ingénieur en système embarquée, autant utiliser ma profession comme plaisir ça va me changer du boulot.
pour info: - Je rééditerais se messages à chacune de mes réponses
- je prendrai en compte toute remarque constructive
- Les interfaces et le fonctionnement seront définit par les scénarios
1 - Pré-recherche :
bombe programmable avec code de désamorçage |
Interface :
- écran 16 caractères Alphanumérique
- clavier matriciel 12 touche
- détection et identification carte à puce
- sirène faible amplitude Le système est piloté par un microcontrôleur disposant de timer interne | |
Bombe de jahwork |
Interface :
- jeu de switch (simule un code)
- détection et identification de clef USB
- timer de cuisine (je crois)
- Capteur d'ouverture de la valise
- sirène moyenne amplitude le système n'est pas commandé c'est un simple jeu de cablage ingénieux | |
Bombe de Sylvain |
Interface :
- un sélecteur marche/arrêt
- un sélecteur 3 position avec retour un position neutre
- 2 sirène industriel de très forte amplitude (explosion - désarmé) Le système est réalisé en logique câblé par des équipement d'électricien professionnel | |
2 - Choix technologie et recherche système :
J'aime programmer et les systèmes évolutif =) donc je vais faire la bombe factice en ARDUINO
Ce que propose les magasins en kit :les kits arduino proposer sur le marcher |
1 smart kit arduino | 49 € | ![](https://2img.net/h/static3.watterott.com/09284-01.jpg) |
- USB-cable Arduino [-] computer
- 1 package of Jumper Wires für Breadboards (les fils)
- Light Dependent Resistor
- 3 LEDs 5mm (red, green, yellow)
|
Kit arduino UNO | 69,50€ | ![](https://sites.google.com/site/imgevola/images/special_kit_list.jpg) |
- Carte microcontroleur Arduino UNO Rev3 édition CMS
- Shield de connexion de capteurs V1.1
- Ecran LCD 16*2 caractères
- Bouton rotatif analogique (Potentiomètre)
- Terminal de connexion 2pin à vis
- Cable de connexion à clipser
- Cable en nappe coloré 10 pin
|
Kit débutant pour Arduino | 49,37 € | ![](https://2img.net/h/www.arobose.com/shop/28-80-large/kit-debutant-pour-arduino.jpg) |
- 1x Carte extension de prototypage
- 1x support 6 piles AA avec un jack de connection
- 1x Capteur de lumière ambiante
- 1x Récepteur Infrarouge
- 1x Capteur de température LM35
- 1x Afficheur 7 segments rouge
- 1x capteur de contact "Tilt"
- 4x Mini boutons poussoirs
- 1x boîte plastique de haute qualité
|
... |
Il existe plusieurs version de carte Arduino (beaucoup, vraiment beaucoup
![scratch](https://2img.net/i/fa/i/smiles/icon_scratch.png)
) mais surtout ce qui est intéressant c'est que l'on peut tout faire
![drunken](https://2img.net/i/fa/i/smiles/drunken_smilie.png)
(de l'électronique de maintenant ethernet, bluetool ..etc) sans appareil de mesure
![geek](https://2img.net/i/fa/i/smiles/icon_geek.png)
(multimètre, oscilloscope ..etc) grâce au carte d’extension (
![study](https://2img.net/i/fa/i/smiles/icon_study.png)
en jargon arduino sa s'appelle "shield").
Ce que propose les magasins en arduino :Les cartes Arduino |
la mini au prix mini | 18€ | ![](https://2img.net/h/boutique.semageek.com/76-199-large/arduino-mini-05.jpg) |
- Micro-contrôlleur :ATmega328 (v3.0)
- Tension d'alimentation nominale :5V
- Tension d'alimentation (recommandé) :7-9V
- Entrées/sorties digitales : 14 (dont 6 pouvant être utilisées comme sorties PWN)
- Entrées Analogiques : 8 dont 4 connectées
- DC Current per I/O Pin :40 mA
- Memoire Flash : 32 KB (ATMega328) dont 2 KB utilisé par le bootloader
- Fréquence d'horloge :16 MHz |
Arduino Leonardo avec Headers - Rev3 | 20€ | |
-Micro-contrôlleur :ATMEL ATMEGA32U4
-Tension d'alimentation nominale :5V
-Tension d'alimentation (recommandé) :7-12V
-Tension d'alimentation (limites) :6-20V
- Entrées/sorties digitales : 20 (dont 7 pouvant être utilisées comme sorties PWN)
- Entrées Analogiques :12
- DC Current per I/O Pin :40 mA
- DC Current for 3.3V Pin :50 mA
- Memoire Flash : 32 KB dont 4 KB utilisé par le bootloader
- Fréquence d'horloge :16 MHz |
Arduino MEGA 2560 Rev3 | 42€ | ![](https://2img.net/h/boutique.semageek.com/4-123-large/arduino-mega-2560.jpg) |
- Micro-contrôlleur : ATmega2560
- Tension d'alimentation nominale : 5V
- Tension d'alimentation (recommandé) : 7-12V
- Tension d'alimentation (limites) : 6-20V
- Entrées/sorties digitales : 54 (dont 14 pouvant être utilisées comme sorties PWN)
- Entrées Analogiques : 16
- DC Current per I/O Pin : 40 mA
- DC Current for 3.3V Pin : 50 mA
- Memoire Flash : 256 KB (ATmega2560) dont 8 KB utilisé par le bootloader
- SRAM : 8 KB (ATmega2560)
- EEPROM : 4 KB (ATmega2560)
- Fréquence d'horloge : 16 MHz
|
... |
Ce que propose les magasins en extention :évidemment il sera possible d'ajouter des composants sur breadbord pour ajouter des fonctionnalité non disponible sur les "shield"
Ce que propose les magasins en composant et support: 3- Mon choix et Etude préliminaire :
Pour le choix, il doit être simple et complet en même temps. Dans la simplicité faire une commande unique, comme un kit disposant de plusieurs "topic" d'aide sur internet.
Après plusieurs recherche voici mon choix, plus qu'à attendre mon salaire pour faire la commande:
Hé mais je peut faire une bombe rien que avec ce kit
![affraid](https://2img.net/i/fa/i/smiles/affraid.gif)
. Bon on peut tout de même ajoute un écran lcd 2*16 caractère c'est plus pratique pour dialogué avec la bombe ^^ (oui je parle au machine car elle m'envoie jamais chié et elle sont toujours polis même quand je fais de la merde)
4- Description préliminaire du fonctionnement
Nous allons décrire le fonctionnement de la bombe en machine d'état. IL y a 6 état :
Il y aura généralement 2 condition de déclenchement
les capteurs, bouton et télécommande :TILT: Nous avons à disposition un capteur "Tilt", celon les fabriquant la conception diffère mais on peut tout résumé à un ressort à l'interieur d'un cylindre métalique, chaque fois que le ressort touche le cylindre cela fait contact lorsque l'on incline le capteur ou que l'on donne un choc. Nous avons donc deux information importante Inclinaison = contact et choc = contacte mais cours:
inclinaison TILT = 1 logique maintenue
choc TILT = passage entre O et 1 logique ou entre 1 et 0 logique
Lorsque 1 choc et/ou une inclinaison sera détecté on émettera un sons avec le buzzer et on affichera sur l'écran une barre de sensibilité des capteurs comme une barre de chargement. Si la barre atteint les 100% on notera un "Overflow TILT sensor"
Photorésitance: nous disposons d'une photorésitance, c'est un capteur de lumière. Si on met le capteur dans la valise alors cela devient un capteur d'ouverture de la valise. Si l'on le capteur sur la poingner c'est un capteur de valise transporté.
Les boutons: si je doit vous expliquer ça j'ai pas fini
![Wink](https://2img.net/i/fa/i/smiles/icon_wink.gif)
. On placera les deux boutons placer à l'interieur de la valise suffisament éloigner pour obligé l'utilisateur à utilisé ses deux main pendant une dizaine de seconde.
IR nous disposons d'une télécommande IR avec un recepteur IR. On placera le capteur de telle sorte que la porter effective de la télécommande soit inférieur à 1 mètre (porter max d'une télécommande 20 mètre).. Le protocole de communication différe entre les télécommande non universel, ce qui permet de différentier les télécomande entre elle. On peux programmer une alarme différente selon le code ou la télécommande. l'effet d'un code peut être different celon la télécomande(garder des télécommande pour moi
![bounce](https://2img.net/i/fa/i/smiles/icon_bounce.gif)
)
5- Aprofondissement fonctionnement et etude du paramètrage utilisateur
Tout a bord qu'elle que idée de scénario pour voir:
A - button bomber
Condition de changement d'état de la bombe:B- Minesweeper/minor
Exemple de scénario: Counter strike Bomber
La copie conforme du scénario de la bombe du jeu "counter strike". Une équipe terroriste qui doit poser la bombe dans une des deux zones, activé la bombe et la protégé, si possible empêcher l'équipe d'intervention de s'interposer. Une équipe d'intervention qui doit empêcher les terroristes de déposé la bombe ou de désamorcé si la bombe active.
Condition de changement d'état de la bombe:Condition et effet des capteurs:Ouverture valise | activation : les Doubles boutons
Désactivation: par un code télécommande | si détection = Explosion |
C- Switch Bomber
Exemple de scénario: L'ordinateur du président.
L'ordinateur du président à été perdu, des gangs connaisse l'endroit où il a été perdu. Deux ou plusieurs équipe tente de lancer les bombes nucléaire par l'ordinateur du président. La bombe factice sera cette ordinateur, et les télécommandes feront office de clé d'activation. La première équipe qui arrive à lancer les missiles à gagner.
Condition de changement d'état de la bombe:D- Fragile Bomber
Exemple de scénario: Nitroglucerine
Deux ou plusieur équipe doivent ramenez la caisse de nitro chez eux, en empéchant les autre d'y parvenir.
Condition de changement d'état de la bombe: Condition et effet des capteurs:Tilt sensor | activation : les Doubles boutons
Désactivation: par un code télécommande /td][td] si détection faible : buzzer si détection forte "overflow sensor tilt" |
C- Bomber full
Exemple de scénario: La sué du démineur
Deux équipe seront en jeu avec un rapport de force 2 contre UN. L'équipe d'intervention, qui seront supérieur en nombre, devra trouver et désamorcé la bombe. L'équipe terroriste devront faire le nécessaire pour que la bombe explose lorsque l'équipe essaye de désamorcé la bombe! Les terroristes non pas le droit de touché à la bombe il gagne si la bombe explose.
Exemple de scénario: indice démineur
2 ou plusieurs équipes cherchent à s’approprier une toute nouvelle genre de bombe. Seulement le problème, c'est que l'ingénieure à activé la bombe et la protégé avec un code et capteur. L'équipe qui désamorcera et ramènera la bombe dans sont camps aura gagner. Si la bombe explose tout le monde à perdu. Les équipes devront fouiller le terrain pour trouver les indices caché par l'ingénieur.
Condition de changement d'état de la bombe:Activation:les Doubles boutons
Explosion:Compte à rebours terminer OU fils débranché OU "overflow sensor tilt" (capteur tilt)
Désamorçage:fils débranché ou code telecommande
Condition et effet des capteurs:Tilt sensor | activation : à l'activation de la bombe et par un code télécommande
Désactivation: par un code télécommande | si détection faible : buzzer si détection forte "overflow sensor tilt" |
Ouverture valise | activation : à l'activation de la bombe et par un code télécommande
Désactivation: par un code télécommande | si détection = Accélration compte à rebour fois 2 |
effet possible en débranchant UN des 4 fils - Accéleration Compte à rebours fois 4
- Ralentissement Compte à rebours divisé par 4
effet possible avec un code telecommande - Ajoute une minute au Compte à rebours
- Désactivation et activation capteur d'Ouverture valise
- Désactivation et activation capteur "Tilt"
- si mauvais code : soustrait une minute Compte à rebours
6- à la découverte de l'ARDUINO
le magasin Arobose m'a envoyé le produit rapidement mais aux niveau embalage ça laisse à désirer. Toutefois, j'ai vue pire au boulot avec des prestataires professionnels.A l'ouverture première constation quelque composant ont eu des patte tordu rien de grave mais sa fais toujours chié. Point noir le cable de l'écran lcd n'est pas fourni
![Suspect](https://2img.net/i/fa/i/smiles/suspect.gif)
cela ne m'arrêtera pas moi Beuboy
![Cool](https://2img.net/i/fa/i/smiles/icon_cool.gif)
.
Bon comme demandé je vais tout expliquer en détails:
super tutoTout à bord téléchargé l'IDE :
cliquer ici Puis configurer le port USB pour transféré votre logiciel vers la carte Arduino:
cliquer ici Après m'être battue pendant 4 jours avec le problème chargement de programme
j'ai enfin pu chargé mon programme dans l'arduino
. Au boulot je me souvient d'avoir passer 2 semaine avec un microcontroleur de chez NXP
c'est peut être pour ça qu'il sont dans la merde. Le problème venait donc bien de ma config sous Windows et non de ma carte.
J'ai donc regardé de très près la configuration du port (Panneau de config/system/matériel/Port (COM & LPT)) : en branchant la carte sur un port USB, une ligne apparait dans la liste des ports. Ouvrir les propriétés/paramètres du port et cliquer sur "avancé..." : il y a une case à cocher "utiliser les tampons FIFO...". Dans mon cas, cette case était cochée. Je l'ai décochée et là, miracle, tout est rentré dans l'ordre : plus aucun problème d'upload ! Certain ont résolu l'erreur en fixant ce "transfert rate" à 115200.
Pour tous ceux qui voudront ce lancer dans l'aventure Arduino il y a le site d'arduino pour vous aidé sinon les forums ou encore Google Mais n'abandonné pas sinon appelé moi !! voici ma configuration:- j'utilise windows VISTA (
![Mad](https://2img.net/i/fa/i/smiles/icon_mad.gif)
)
- le logiciel arduino 1.0.3 français
- le driver fournie avec le logiciel
- Et j'ai paramétré mon port COM et LPT ainsi :
-> bits par seconde = 115200
-> bits de données = 8
-> parités = aucune
-> bits d'arrêt = 2
-> Contrôle du flux = matériel
-> paramètre avancer => ne pas utiliser les tampons FIFO
Quesqu'un IDE? c'est un logiciel qui vous aidera à développer votre logiciel embarquée Arduino!! il contient un éditeur de texte, un compilateur et un débugueur.
A- La LED
une fois installer nous allons pouvoir passer au premier exercice =>
faire clignoter une led Composant pour l'exercice :- La maquette "shield" à poser sur la DFRduino UNO V2.1
- la mini breadboard (à coller sur la maquette "shield")
- une résistance de 220 Ohm
/!\ attention une LED n'accepte pas plus de 250 mA donc n'oublier pas de mettre une résistance sinon vous serait obligé de jeter votre led car elle aura grillé
le petit schéma :
le programme à foutre dans l'arduino :
- l'ingénieur fou a écrit:
/*****************************************
* @Autor: Beuboy
* @Brief: Starting from a simple LED, this lesson gives the very basic introduction about
* Arduino. The program flashes an LED connected to the Arduino paste 8.
* @Date: 17/12/2012.
* @Link: http://www.dfrobot.com/wiki/index.php/Tutorial
*****************************************/
int ledPin=8; //Connect led to Digital Pin 8
void setup()
{
pinMode(ledPin,OUTPUT);//Set ledPin as output
}
void loop()
{
digitalWrite(ledPin,HIGH); //Pull ledPin to high
delay(1000); //Delay 1 second
digitalWrite(ledPin,LOW); //Pull ledPin to low
delay(1000); //Delay 1 second
}
Explication logicielLa fonction setup() est appelée au démarrage du programme. Cette fonction est utilisée pour initialiser les variables, le sens des broches, les librairies utilisées. La fonction setup n'est exécutée qu'une seule fois, après chaque mise sous tension ou reset (réinitialisation) de la carte Arduino.
Après avoir créé une fonction setup(), qui initialise et fixe les valeurs de démarrage du programme, la fonction loop () (boucle en anglais) fait exactement ce que son nom suggère et s'exécute en boucle sans fin, permettant à votre programme de s'exécuter et de répondre. Utiliser cette fonction pour contrôler activement la carte Arduino.
La fonction pinMode(int NumeroDeBroche, Mode(INPUT ou OUTPUT)) configure la broche spécifiée pour qu'elle se comporte soit en entrée, soit en sortie.
La fonction digitalWrite(int NumeroDeBroche, int NiveauDEnergie( LOW ou HIGHT)) permet d'imposé un niveau de tension (entre 0 et 5 Volt) à une broche définie comme une sortie.
La fonction delay( int MilliSeconde) permet de réalise une pause dans l'exécution du programme pour la durée (en millisecondes) indiquée en paramètre. (=Pour mémoire, il y a 1000 millisecondes dans une seconde...!
B- Le Buzzer
Composant pour l'exercice :- La maquette "shield" à poser sur la DFRduino UNO V2.1
- la mini breadboard (à coller sur la maquette "shield")
/!\ attention le buzzer ne se branche pas n'importe comment le + vers le - et c'est la sortie de votre arduino qui fournis le +
Petit schéma : - l'ingénieur fou a écrit:
/*****************************************
* @Autor: Beuboy
* @Brief: The program play a song with a buzzer on paste 8.
* @Date: 17/12/2012.
* @Link: http://www.dfrobot.com/wiki/index.php/Tutorial
*****************************************/
int buzzer=8;//Connect the buzz positive Pin to Digital Pin 8
void setup()
{
pinMode(buzzer,OUTPUT);//Set Pin Mode as output
}
void loop()
{
unsigned char i,j;
while(1)
{
for(i=0;i<80;i++) //Sound effect 1
{
digitalWrite(buzzer,HIGH);//Make some sound
delay(1);//Delay 1ms
digitalWrite(buzzer,LOW);//Be quiet
delay(1);//Delay 1ms
}
for(i=0;i<100;i++) //Sound effect 2
{
digitalWrite(buzzer,HIGH);//Make some sound
delay(2);//Delay 2ms
digitalWrite(buzzer,LOW);//Be quiet
delay(2);//Delay 2ms
}
}
}
En modifiant les valeurs des "Delay" cela fait des sonneries différentes
C- Le Bouton et le TILT
pour le besoin de l'exercice on va ajouter quelque composant pour être informé que l'Arduino à bien capter que l'on appuyer sur le bouton.
Composant pour l'exercice :- La maquette "shield" à poser sur la DFRduino UNO V2.1
- la mini breadboard (à coller sur la maquette "shield")
- une résistance de 220 Ohm
/!\ attention une LED n'accepte pas plus de 250 mA donc n'oublier pas de mettre une résistance sinon vous serait obligé de jeter votre led car elle aura grillé
Petit photo :
Petit schéma :![]()
- L'ingénieur fou a écrit:
/*****************************************
* @Autor: Beuboy
* @Brief: petit exercice avec un bouton, une
* LED, un buzzer et un TILT sensor.
* @Date: 17/12/2012.
* @Link:
* - http://www.dfrobot.com/wiki/index.php/Tutorial
* - http://arduino.cc/en/Reference
*****************************************/
//___Définition des sorties _______________________
int LED =9; // la led est branché sur la PIN 9
int BUZZER =8; // le buzzer est branché sur la PIN 8
//___Définition des entrées _______________________
int BUTTON=1; //Le bouton en PIN 1
int TILT=0; //Le Tilt en PIN 0
//___Configuration Des entrées/sorties ____________
void setup()
{
pinMode(LED, OUTPUT); // LED = sortie
pinMode(BUZZER, OUTPUT); // BUZZER = sortie
pinMode(BUTTON, INPUT); // BUTTON = entrée
pinMode(TILT, INPUT); // TILT = entrée
}
//___ Programme principal _________________________
void loop()
{
/*****************************
variable pour enregistrer les informations
*******************************/
int resultTilt=LOW;
int resultButton=LOW;
while(1)
{
/*****************************
enregistrement des informations entrées
*******************************/
resultTilt = digitalRead(TILT);
resultButton = digitalRead(BUTTON);
/*****************************
emmission des informations en sortie
*******************************/
if (resultButton == LOW )
{
digitalWrite(BUZZER,HIGH);
digitalWrite(LED,HIGH);
delay(100);
digitalWrite(BUZZER,LOW);
digitalWrite(LED,LOW);
delay(100);
}
else if (resultTilt == LOW)
{
digitalWrite(BUZZER,HIGH);
digitalWrite(LED,HIGH);
delay(4);
digitalWrite(BUZZER,LOW);
digitalWrite(LED,LOW);
delay(4);
}
}
}
D- Le Timer
il faut d'abord téléchargé la librairie "TimerOne". Une librairie est un programme ou une fonctionnalité que l'on ajoute à notre logiciel écrie par quelqu'un d'autre généralement.
sur le microcontroleur de l'arduino on dispose de 3 timer hardware (timer électronique sans programme) .
Composant pour l'exercice :- La maquette "shield" à poser sur la DFRduino UNO V2.1
- la mini breadboard (à coller sur la maquette "shield")
- une résistance de 220 Ohm
- L'ingénieur fou a écrit:
/*****************************************
* @Autor: Beuboy
* @Brief: Timer ONE avec LED et BUZZER
* @Date: 17/12/2012.
* @Link:
* - http://www.dfrobot.com/wiki/index.php/Tutorial
* - http://arduino.cc/en/Reference
*****************************************/
/*****************************************
Lien obligatoire pour intégrer le timer avec notre logiciel:
le "TimerOne.h" est un programme exterieur que l'on ajoute à notre programme
on appel ça inclure une librairie
******************************************/
#include "TimerOne.h"
//___Définition des sorties _______________________
const int LED =9; // la led est branché sur la PIN 9
const int BUZZER =8; // le buzzer est branché sur la PIN 8
//____ pour le Timer ______________________________
int CompteurDuTimer = 30; // correspond à 30 second
//___Configuration Des entrées/sorties ____________
void setup()
{
pinMode(LED, OUTPUT); // LED = sortie
pinMode(BUZZER, OUTPUT); // BUZZER = sortie
Timer1.initialize(); // initialisation du timer par defaut compte toute les secondes
Timer1.attachInterrupt(timer_overflow);
}
//___ Programme principal _________________________
void loop()
{
int i,j; // variable interne
if (CompteurDuTimer == 0)
{
Timer1.stop();
for(j=0;j=60;j++)
{
digitalWrite(LED,HIGH);
for(i=0;i<10;i++) //Sound effect 1
{
digitalWrite(BUZZER,HIGH);//Make some sound
delay(1);//Delay 1ms
digitalWrite(BUZZER,LOW);//Be quiet
delay(1);//Delay 1ms
}// 10*2 ms = 20 ms
for(i=0;i<10;i++) //Sound effect 2
{
digitalWrite(BUZZER,HIGH);//Make some sound
delay(4);//Delay 2ms
digitalWrite(BUZZER,LOW);//Be quiet
delay(4);//Delay 2ms
}// 10 *8 ms= 80 Ms
digitalWrite(LED,LOW);
// au total 20 + 80 ms = 100 ms
} // 60 * 100 ms = 6 seconde
CompteurDuTimer ++;
}
}
// fonction appeler lorque le timer à compter 1 seconde
// le timer ce relance automatiquement
void timer_overflow()
{
CompteurDuTimer--;
digitalWrite(BUZZER,HIGH);
digitalWrite(LED,HIGH);
delay(500);
digitalWrite(BUZZER,LOW);
digitalWrite(LED,LOW);
}
la fonction Timer1.initialize(); est la fonction qui permet de configurer le TIMER 1 de notre microcontrôleur. Ce qui est important à savoir c'est que ce timer une fois lancer tourne en parallèle de notre programme.
la fonction Timer1.attachInterrupt(timer_overflow); permet d'attacher une interruption à une fonction, celle qui est mise entre parenthèse. Comme le Timer tourne en parallèle de notre programme, il faut prévenir notre programme que le Timer a fini de compter! Pour ça le timer appel une fonction dès qu'il à finie de compter on appel ça "overflow timer". En simple, ici le timer est paramétré pour faire un overflow toutes les secondes, et donc chaque seconde la fonction "timer_overflow" est appelé ensuite notre programme reprend la où il s'est arrêté!!
la fonction Timer1.stop(); permet d'arrêter le TIMER tout simplement.
D- un dialogue de machine
Quand on programme l'arduino, notre très cher petit arduino est donc connecter au PC. Cette connections est un port USB, à la base ça sert à ce que 2 machine communique entre elle je vous jure c'est vrai
![bom](https://2img.net/i/fa/i/smiles/bom.png)
. On appel cette communication la
liaison série Composant pour l'exercice :pas schéma
- l'ingénieur fou a écrit:
- /*****************************************
* @Autor: Beuboy
* @Brief: liason série avec moniteur
* @Date: 17/12/2012.
* @Link:
* - http://www.dfrobot.com/wiki/index.php/Tutorial
* - http://arduino.cc/en/Reference
*****************************************/
void setup()
{
Serial.begin(9600);
//la liaison série est à configuration fixe. je la régle à
//une vitesse de 9600 bits par seconde.
}
void loop()
{
char reception;
if (Serial.available() > 0)
{
// read the incoming byte:
reception = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(reception);
}
}
On a plus qu'a ouvrir "le moniteur série" du logiciel de programmation et dialoguer. Attention la vitesse est fixé à 9600 baud. Et photo s'il vous plaît
![](https://i.servimg.com/u/f16/17/28/96/06/monite10.jpg)
E- Télécommande IR
Pour les timbrés, on peut écrire soit même le programme de décodage de télécommande infrarouge. Moi je suis fainéant de base alors je prend le programme d'un des timbrés. C'est plus simple. Il faut donc
télécharger la librairie et extraire le dossier IRremote du zip dans le dossier %dossierLogicielArduino%\Arduido\Librairies.
Prendre le travail des autres ne fonction pas toujours (il faut toujours passer derrière les gens ). Une erreur d'écriture de cette libraires fait que ça ne fonctionne pas. Heureusement c'est qu'
une seul erreur. Il suffit d'ouvrir avec un éditeur de texte le fichier IRremoteInt.h et de remplacer la ligne "#include WProgram.h" par "#include Arduino.h". Rien n'est impossible for me
Composant pour l'exercice :- La maquette "shield" à poser sur la DFRduino UNO V2.1
- la mini breadboard (à coller sur la maquette "shield")
- l'ingénieur fou a écrit:
- /*****************************************
* @Autor: Beuboy
* @Brief: liason série avec moniteur
* @Date: 17/12/2012.
* @Link:
* - http://www.dfrobot.com/wiki/index.php/Tutorial
* - http://arduino.cc/en/Reference
* - http://forum.snootlab.com/viewtopic.php?f=36&t=468
*****************************************/
// inclusion du programme de gestion télécommande IR
#include
//_____ ENTREE
const int RECV_PIN = 2;
//______ CONFIGURATION IR ___
IRrecv irrecv(RECV_PIN);
//_____ Variable de sauvegarde touche appuyer
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Début du récepteur
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Recevoir la prochaine valeur
}
}
Maintenant voyons quelles codes hexadécimale correspond aux touches
![drunken](https://2img.net/i/fa/i/smiles/drunken_smilie.png)
.
télécommande IR du kit |
Touche | Code Héxadécimale |
Veille | FD00FF |
Vol + | FD807F |
func/stop | FD40BF |
Rembobiné | FD20DF |
Lect\pause | FDA05F |
Bobiné | FD609F |
Flèche bas | FD10EF |
Vol - | FD906F |
Flèche haut | FD50AF |
0 | FD30CF |
EQ | FDB04F |
st/rept | FD708F |
1 | FD08F7 |
2 | FD8877 |
3 | FD48B7 |
4 | FD28D7 |
5 | FDA857 |
6 | FD6897 |
7 | FD18E7 |
8 | FD9867 |
9 | FD58A7 |
Héhé c'est cool non
![elephant](https://2img.net/i/fa/i/smiles/icon_elephant.png)
. Bon plus qu'a faire la bombe maintenant.
F- écran LCD en I2C
Bon comme vous le savez j'ai acheté un écran LCD 2*16 caractère mais le câble n'était pas fourni. J'ai donc créé le câble puis tenté la connexion. Ce qu'il y a de chiant quand on utilise des câble c'est que l'on ajoute une résistance en série parasite et un condensateur en parallèle parasite, ce type de montage s'appelle un filtre de 1°ordre passe bas. En clair, mon câble fait comme un filtre
![Suspect](https://2img.net/i/fa/i/smiles/suspect.gif)
. Il faut donc mettre des résistance de pull up pour que notre signal ne soit pas filtré et pouvoir communiqué avec mon écran
![jocolor](https://2img.net/i/fa/i/smiles/icon_jokercolor.png)
.
Pour commencer, on va tout d'abord scanné notre I2C pour trouver l'adresse de notre écran ou savoir si le filtre nous bloque. Voici le petit logiciel.
- l'ingénieur fou a écrit:
- /**
* I2CScanner.pde -- I2C bus scanner for Arduino
*
* 2009, Tod E. Kurt, http://todbot.com/blog/
*
*/
#include "Wire.h"
extern "C" {
#include "utility/twi.h" // from Wire library, so we can do bus scanning
}
// Scan the I2C bus between addresses from_addr and to_addr.
// On each address, call the callback function with the address and result.
// If result==0, address was found, otherwise, address wasn't found
// (can use result to potentially get other status on the I2C bus, see twi.c)
// Assumes Wire.begin() has already been called
void scanI2CBus(byte from_addr, byte to_addr,
void(*callback)(byte address, byte result) )
{
byte rc;
byte data = 0; // not used, just an address to feed to twi_writeTo()
for( byte addr = from_addr; addr <= to_addr; addr++ ) {
rc = twi_writeTo(addr, &data, 0, 1, 0);
callback( addr, rc );
}
}
// Called when address is found in scanI2CBus()
// Feel free to change this as needed
// (like adding I2C comm code to figure out what kind of I2C device is there)
void scanFunc( byte addr, byte result ) {
Serial.print("addr: ");
Serial.print(addr,DEC);
Serial.print( (result==0) ? " found!":" ");
Serial.print( (addr%4) ? "\t":"\n");
}
byte start_address = 1;
byte end_address = 100;
// standard Arduino setup()
void setup()
{
Wire.begin();
Serial.begin(19200);
Serial.println("\nI2CScanner ready!");
Serial.print("starting scanning of I2C bus from ");
Serial.print(start_address,DEC);
Serial.print(" to ");
Serial.print(end_address,DEC);
Serial.println("...");
// start the scan, will call "scanFunc()" on result from each address
scanI2CBus( start_address, end_address, scanFunc );
Serial.println("\ndone");
}
// standard Arduino loop()
void loop()
{
// Nothing to do here, so we'll just blink the built-in LED
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}
Le résultat que l'on attend:
![](https://2img.net/h/todbot.com/blog/wp-content/uploads/2009/11/i2cscanner-out.png)
7- Une bombe
===>[_] la suite au prochaine épisode ...