Bombe airsoft!

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Bombe airsoft!

Message  Predy & Mima le Lun 20 Jan - 12:51

Salut tout le monde! Juste pour vous faire part du projet que nous sommes (zinzidin et moi) entrain de réaliser.
La bombinette en mallette que vous avez connu, c'est de la pisse de chat à côté de ce qu'on est entrain de réaliser.

Nous somme entrain de monter une bombe airsoft électronique, programmable, évolutive dans le temps.

La base que nous somme entrain de réaliser sera pourvue de:

D'un micro cerveau programmable sur PC à base de circuits imprimés, de soudures à l'étain, de circuits logiques, de ports usb, transistors, d'entrées et sorties numériques et analogiques, ect...
D'un écran LCD 2 lignes de 16 caractères rétroéclairé! Oui oui Mr!
D'un potentiomètre pour le réglage de l'éclairage de l'écran
D'un capteur d'angle numérique
D'une matrice 12 touche (keypad)
D'une batterie en 7.4 pour démarrer

Au programme (et à 2):

Environ 6h00 de câblages et soudures (s on grille rien hein  Laughing )
Environ 12h00 voire le double de recherche et de tests de programmation (et oui ça se programme en lignes codées... pour cette base, comptez env. 60 à 70 lignes)
Et quelques heures de montages propre en mallette.

Que du bon quoi!!!!

Quand on dit qu'elle reste évolutive, c'est que vous ne pouvez même pas imaginer ce qu'on va pouvoir faire avec:
On peut par exemple (pour n'en citer qu'un infinité) rajouter des capteur de présence, de lumières, de couleurs, de vibrations, d'humidité, de températures, d'accélération, de gravitée, de son, de cartes magnétiques,  des faisceaux lasers ect..........
Et comme tout est programmable, on peut faire de tout, du style: tu chie la saisie du code => boom, ou le temps s'accélère, un temps limite avant l'amorçage, un temps limite de jeu, rajouter des fils à couper avec une action sur chaque fils du genre: tu coupe le mauvais, soit le temps défile x fois plus vite, soit la bombe saute, soit le temps est débité de x minutes ect.......Suffit "juste" de bien codé!

Fin voilà quoi!
Donc on vous ferra part de l'évolution, en espérant que ce soit rapidement terminé qu'on puisse tester tout ça!

Aller, c'est parti !!!!!!!
Câblage sur une "planche à pain" pour le prototype:


Là, c'est le pont diviseur avec à gauche, l'alimentation 7.4V et à droite l'alimentation 4.9V (ici 2 résistances en séries de 150ohm pour R1 et une de 150ohm pour R2):


Ca câble, ça câble!!!!!:



Et comme dit plus haut, le temps passe très vite:


Déjà 8h00 de code (dont 3 pour corriger les erreurs) et 6h00 de câblage ((dont 2 à essayer de comprendre pourquoi l'écran s'allumait mais n'affichait rien: comme des quiches, nous avions branché le VO (pour le contraste de l'écran sur l'alim 5V au lieu du GND, masse)) nous continuerons donc demain!

Aller, on a bien avancé aujourd'hui:

On reprend le câblage maintenant qu'on à compris pourquoi l'écran n'affichait pas les caractères:



Voila ce qu'il y a à ce stade d'avancement:



Une fois câblé (il manque encore pas mal de choses) on peut tester le code:



Le code fonctionne très bien, on a perdu beaucoup de temps suite au mauvais plan fourni avec le clavier matriciel (merci conrad.....), du coup il à fallu tester à l'ohmètre de façon a retrouver les "verticales" et les "horizontales".....
Il manque encore la mise en forme, la sirene 110 dB, le detecteur de mouvement

Le code de notre proto propose pour le moment:

Interrupteur de position OUT (pour quand le porteur se fait sortir et qu'il est isolé, la sirène va retentir pour signaler la position de la bombe perdue)
Quand on allume le système, il va vous demander le code d'amorçage (6 chiffres) que vous allez taper sur le clavier
Une fois fait, au bout de 2 secondes, le chrono se met en route (15 minutes pour le moment), un bip va retentir à chaque secondes et une LED rouge va clignoter elle aussi à chaque seconde.
Il vous suffit de refermer la mallette et d'appuyer sur le bouton poussoir pour signaler à tout le monde que la bombe est posée (elle va sonner 8 secondes)
Pour désamorcer il faut ouvrir la mallette sans déclencher le détecteur de mouvement, appuyer sur *, le système va alors vous demander le code (6 chiffres), si vous saisissez le bon code, l'écran va afficher "Bombe désamorcée", la LED verte va s'allumer et la LED rouge s'éteindre.
Si vous vous plantez dans la saisie du code, vous pouvez effacer votre saisie à l'aide de # et recommencer, si vous validez avant de le modifier, la bombe explose, l'écran va alors afficher BOOOOOOOOM, les 2 LEDS vont clignoter dans tous les sens et la sirène va retentir.


Je suis entrain de bosser sur un code qui permettra en plus du désamorçage par code, de tenter sa chance en débranchant 1 fil sur 3, 1 désamorce, 1 fait péter la bombe et l'autre va accélérer le temps ou débiter le chrono de 5 minutes, le système définira aléatoirement quelle fonction aura chaque fils


Dernière édition par Predy & Mima le Jeu 13 Fév - 20:02, édité 5 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Cry4me le Lun 20 Jan - 18:24

Ça déchire Wink
avatar
Cry4me

Grade : Première classe I
Messages : 148
Date d'inscription : 24/07/2012
Age : 23
Localisation : Lectoure

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Lun 20 Jan - 19:21

Vous êtes des grands malades je crois, mais c'est pour ça qu'on vous aime !
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Frenchy le Mar 21 Jan - 12:43

En gros il te faut  un nano ordinateur mono carte c'est ça ? La carte seule a la taille d'une carte de crédit et ça coûte pas chère en plus : ~50€.

J'ai hâte de voir la finalisation sur le terrain.  Very Happy 

Chouette projet.
avatar
Frenchy

Grade : Caporal II
Messages : 212
Date d'inscription : 28/03/2012
Age : 23
Localisation : Condom / Bordeaux, La Brède

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Mar 21 Jan - 13:19

Le "cerveau" qui va piloter tout ça quand on aura tout câblé et codé, c'est une carte arduino, qui effectivement à la taille d'une carte de crédit!
Le Montage avec carte magnétique n'est pas d'actualité pour le moment, la on part sur une "base" avec carte arduino, écran LCD, leds, potentiomètre, capteur d'angle numérique, matrice 12 touches, quelques résistances, une sirène 120 db et 2 / 3 babioles.
On va surement monter 1 pont diviseur de tension (2 résistances d'une certaine valeur chacune) afin de ne pas trop solliciter les sorties 3.3v et 5v de la carte.
Quand on aura fini ça, on verra pour l'évolution du matériel.

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Mar 28 Jan - 4:40

Histoire de vous tenir au jus, le matos est arrivé avec sa facture de dédouanement de 15€40.......7 de TVA et 7 de FdD.....
Donc samedi nous commençons le montage, les lignes de code sont déjà tapées, et les erreurs corrigées (pas évident tout ça  Laughing même si le codage sur arduino est quand même grandement facilité par rapport à d'autres.

La suite au prochain épisode!!!

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Mar 28 Jan - 10:18

Alors le fil bleu avec le fil bleu, le fil rouge sur la borne rouge, et le fil jaune sur la BOUUUUUUUMMMMMM....................... bom 
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  BunKer le Mar 28 Jan - 18:44

Une bombe qu'on ne pourra jamais désamorcer
avatar
BunKer

Grade : Première classe I
Messages : 186
Date d'inscription : 19/12/2012
Age : 23
Localisation : Auch

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Sam 1 Fév - 21:43

Aller, c'est parti !!!!!!!
Câblage sur une "planche à pain" pour le prototype:


Là, c'est le pont diviseur avec à gauche, l'alimentation 7.4V et à droite l'alimentation 4.9V (ici 2 résistances en séries de 150ohm pour R1 et une de 150ohm pour R2):


Ca câble, ça câble!!!!!:



Et comme dit plus haut, le temps passe très vite:


Déjà 8h00 de code (dont 3 pour corriger les erreurs) et 6h00 de câblage ((dont 2 à essayer de comprendre pourquoi l'écran s'allumait mais n'affichait rien: comme des quiches, nous avions branché le VO (pour le contraste de l'écran sur l'alim 5V au lieu du GND, masse)) nous continuerons donc demain!

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Dim 2 Fév - 15:03

Le Ricard, y sert à quoi dans la bombe ?  Suspect 
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Cry4me le Dim 2 Fév - 15:12

C'est pour la rendre plus réactive :p
avatar
Cry4me

Grade : Première classe I
Messages : 148
Date d'inscription : 24/07/2012
Age : 23
Localisation : Lectoure

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Dim 2 Fév - 18:26

Bin à câbler correctement pardi !!!!!  What a Face 

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Dim 2 Fév - 19:12

Aller, on a bien avancé aujourd'hui:

On reprend le câblage maintenant qu'on à compris pourquoi l'écran n'affichait pas les caractères:



Voila ce qu'il y a à ce stade d'avancement:



Une fois câblé (il manque encore pas mal de choses) on peut tester le code:



Le code fonctionne très bien, on a perdu beaucoup de temps suite au mauvais plan fourni avec le clavier matriciel (merci conrad.....), du coup il à fallu tester à l'ohmètre de façon a retrouver les "verticales" et les "horizontales".....
Il manque encore la mise en forme, la sirene 110 dB, le detecteur de mouvement

Le code de notre proto propose pour le moment:

Interrupteur de position OUT (pour quand le porteur se fait sortir et qu'il est isolé, la sirène va retentir pour signaler la position de la bombe perdue)
Quand on allume le système, il va vous demander le code d'amorçage (6 chiffres) que vous allez taper sur le clavier
Une fois fait, au bout de 2 secondes, le chrono se met en route (15 minutes pour le moment), un bip va retentir à chaque secondes et une LED rouge va clignoter elle aussi à chaque seconde.
Il vous suffit de refermer la mallette et d'appuyer sur le bouton poussoir pour signaler à tout le monde que la bombe est posée (elle va sonner 8 secondes)
Pour désamorcer il faut ouvrir la mallette sans déclencher le détecteur de mouvement, appuyer sur *, le système va alors vous demander le code (6 chiffres), si vous saisissez le bon code, l'écran va afficher "Bombe désamorcée", la LED verte va s'allumer et la LED rouge s'éteindre.
Si vous vous plantez dans la saisie du code, vous pouvez effacer votre saisie à l'aide de # et recommencer, si vous validez avant de le modifier, la bombe explose, l'écran va alors afficher BOOOOOOOOM, les 2 LEDS vont clignoter dans tous les sens et la sirène va retentir.


Je suis entrain de bosser sur un code qui permettra en plus du désamorçage par code, de tenter sa chance en débranchant 1 fil sur 3, 1 désamorce, 1 fait péter la bombe et l'autre va accélérer le temps ou débiter le chrono de 5 minutes, le système définira aléatoirement quelle fonction aura chaque fils

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Dim 2 Fév - 19:23

Voici , pour les curieux, à quoi ressemble le code de la version basique:

cliquez pour voir le code:
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Tone.h>
#define pound 14

Tone tone1;

int Scount = 00;
int Mcount = 15;
int Hcount = 0;
int DefuseTimer = 0;

long secMillis = 0;
long interval = 1000;

char password[6];
int currentLength = 0;
int i = 0;
char entered[6];

int ledPin = 4;
int ledPin2 = 3;
int ledPin3 = 2;

LiquidCrystal lcd(7,8,10,11,12,13);

const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
 {'1','2','3'},
 {'4','5','6'},
 {'7','8','9'},
 {'*','0','#'}
};
byte rowPins[ROWS] = {5, A5, A4, A2};
byte colPins[COLS] = {A1, A0, A3};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void setup(){
 pinMode(ledPin, OUTPUT);
 pinMode(ledPin2, OUTPUT);
 pinMode(ledPin3, OUTPUT);
 tone1.begin(9);
 lcd.begin(16, 2);
 Serial.begin(9600);
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("Entrer Code: ");
 while (currentLength < 6)
 {
   lcd.setCursor(currentLength + 6, 1);
   lcd.cursor();
   char key = keypad.getKey();
   key == NO_KEY;
   if (key != NO_KEY)
   {
     if ((key != '*')&&(key != '#'))
     {
     lcd.print(key);
     password[currentLength] = key;
     currentLength++;
     tone1.play(NOTE_C6, 200);
     }
   }
 }

 if (currentLength == 6)
 {
   delay(500);
   lcd.noCursor();
   lcd.clear();
   lcd.home();
   lcd.print("Vous avez Saisi: ");
   lcd.setCursor(6,1);
   lcd.print(password[0]);
   lcd.print(password[1]);
   lcd.print(password[2]);
   lcd.print(password[3]);
   lcd.print(password[4]);
   lcd.print(password[5]);

   tone1.play(NOTE_E6, 200);
   delay(3000);
   lcd.clear();
   currentLength = 0;
 }
}

void loop()
{
 timer();
 char key2 = keypad.getKey();
 
 if (key2 == '*')
   {
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Code: ");
     
     while (currentLength < 6)
       {
         
         timer();
         
         char key2 = keypad.getKey();
         if (key2 == '#')
           {
             currentLength = 0;
             lcd.clear();
             lcd.setCursor(0,0);
             lcd.print("Code: ");
           }
         else                  
         if (key2 != NO_KEY)    
           {
             
             lcd.setCursor(currentLength + 7, 0);
             lcd.cursor();
             
             lcd.print(key2);
             entered[currentLength] = key2;
             currentLength++;
             tone1.play(NOTE_C6, 200);
             delay(100);
             lcd.noCursor();
             lcd.setCursor(currentLength + 6, 0);
             lcd.print("*");
             lcd.setCursor(currentLength + 7, 0);
             lcd.cursor();
           }
       }

     if (currentLength == 6)
       {
         if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3] && entered[4] == password[4] && entered[5] == password[5])
           {
             lcd.noCursor();
             lcd.clear();
             lcd.home();
             lcd.print("Bombe DESAMORCEE");
             currentLength = 0;
             digitalWrite(ledPin3, HIGH);
             delay(2500);
             lcd.setCursor(0,1);
             lcd.print("Relancer la bombe");
             delay(1000000);
           }
     else
       {
         lcd.noCursor();
         lcd.clear();
         lcd.home();
         lcd.print("Erreur code!");
   
         if (Hcount > 0)
           {
             Hcount = Hcount - 1;
           }
   
         if (Mcount > 0)
           {
             Mcount = Mcount - 59;
           }
         if (Scount > 0)
           {
             Scount = Scount - 59;
           }
       delay(1500);
       currentLength = 0;
 
       }
     }  
   }
}

void timer()
{
 Serial.print(Scount);
 Serial.println();
 
 if (Hcount <= 0)
 {
   if ( Mcount < 0 )
   {
     lcd.noCursor();
     lcd.clear();
     lcd.home();
     lcd.print("La bombe a ");
     lcd.setCursor (0,1);
     lcd.print("EXPLOSEE!");
     
     while (Mcount < 0)
     {
       digitalWrite(ledPin, HIGH);
       tone1.play(NOTE_A2, 90);
       delay(100);
       digitalWrite(ledPin, LOW);
       tone1.play(NOTE_A2, 90);
       delay(100);
       digitalWrite(ledPin2, HIGH);
       tone1.play(NOTE_A2, 90);
       delay(100);
       digitalWrite(ledPin2, LOW);
       tone1.play(NOTE_A2, 90);
       delay(100);
       digitalWrite(ledPin3, HIGH);
       tone1.play(NOTE_A2, 90);
       delay(100);
       digitalWrite(ledPin3, LOW);
       tone1.play(NOTE_A2, 90);
       delay(100);
     }
   }
 }

 lcd.setCursor (0,1);
 lcd.print ("Temps:");

 if (Hcount >= 10)
   {
     lcd.setCursor (7,1);
     lcd.print (Hcount);
   }
 if (Hcount < 10)
   {
     lcd.setCursor (7,1);
     lcd.write ("0");
     lcd.setCursor (8,1);
     lcd.print (Hcount);
   }

 lcd.print (":");

 if (Mcount >= 10)
   {
     lcd.setCursor (10,1);
     lcd.print (Mcount);
   }
 if (Mcount < 10)
   {
     lcd.setCursor (10,1);
     lcd.write ("0");
     lcd.setCursor (11,1);
     lcd.print (Mcount);
   }
   
 lcd.print (":");

 if (Scount >= 10)
   {
     lcd.setCursor (13,1);
     lcd.print (Scount);
   }
 if (Scount < 10)
   {
     lcd.setCursor (13,1);
     lcd.write ("0");
     lcd.setCursor (14,1);
     lcd.print (Scount);
   }

 if (Hcount <0)
   {
     Hcount = 0;
   }

 if (Mcount <0)
   {
     Hcount --;
     Mcount = 59;
   }

 if (Scount <1)
   {
     Mcount --;
     Scount = 59;
   }

 if (Scount > 0)
   {
     unsigned long currentMillis = millis();
 
     if(currentMillis - secMillis > interval)
       {
         tone1.play(NOTE_G5, 200);
         secMillis = currentMillis;
         Scount --;
         digitalWrite(ledPin2, HIGH);
         delay(10);
         digitalWrite(ledPin2, LOW);
         delay(10);
       }
   }
}

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Lun 3 Fév - 11:28

Ca me fait penser au langage "Bazic" qu'on utilisait pour programmer les ordis dans ma jeunesse.
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Lun 3 Fév - 20:00

MAJ: J'ai inclus un timer réglable avant le lancement de la partie, la possibilité d'effacer le code en cours de saisi pour pouvoir le retaper si erreurs
Je bosse actuellement sur le code pour les 3 fils qui déclenchent, désamorcent, débitent du temps et choisis aléatoirement par le système.
Chaud là!!!!!

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Mar 4 Fév - 20:21

Bon, voilà, le proto est fini et fonctionnel il est composé de :

1 Carte arduino uno Rev3
1 Led rouge
1 Led verte
1 Ecran LCD 16x2
1 Clavier matriciel 3*4
6 Résistances 330 ohm
3 Résistances 150 ohm
1 Temporisateur avec relais en kit (à monter quoi)
1 Fusible
1 Tweeter de voiture
1 Sirène 120 dB
2 Interrupteurs 3 positions
1 Bouton poussoir
1 Contacteur à bille (capteur d'angle)
de pleins de fils tout partout!!!!

Le code compte plus de 440 lignes !!!

Le programme propose:

=> Réglage du temps de désamorçage (définis par le créateur de la partie)
  Si le joueur est out et est isolé, il peut signaler la postion de la "bombe" grâce au switch de position.
  => Une fois sur le site: saisi du code d'amorçage (définis par le poseur et ou le créateur de la partie), activation des "explosifs"
  Si une erreur est faite pendant la saisie, on peut effacer et retaper le code
      =>Le temps se met à décompter, le capteur d'angle s'active, la Led rouge clignote à chaque secondes, 1 bip retentis à chaque seconde
          => Le démineur vient taper le code de désamorçage (le même que définis plus haut), il à 4 essaies MAX.
  Si il brusque la "bombe", le capteur d'angle déclenche les "explosifs"
  Si le code est invalide, le temps est débité de 99:04:59 si inferieur à 01:00:00, il est débité de 00:04:59, si inferieur à 00:05:00, les "explosifs" sont déclenchés
  A chaque fois que le code saisi est invalide, le temps va s'accélérer en plus d'être débiter, un son retenti pour avertir le démineur.
 Au bout de 4 codes invalides saisies, le temps passe à 0, la bombe explose
  Si la "bombe" explose, les 2 Led clignotent, l'alarme se déclenche, le capteur d'angle est désactivé, l'écran affiche "BOOOOOM sur la 1er ligne et Perdu! sur la 2eme
  Si le démineur désamorce la "bombe", la Led verte s'allume, la rouge s'éteint, le capteur d'angle est désactivé, 3 bips suivis d'un long bip retentissent, l'écran affiche Bombe DESAMORCEE puis 3 secondes après Restart

On la prends dimanche pour vous la présenter, elle se nomme BETTY  What a Face

Voici le code:

Spoiler:

/////////////////////////////
// Bombe Airsoft //
/////////////////////////////

#include "LiquidCrystal.h"
#include "Keypad.h"
#include "Tone.h"
#define pound 14

Tone tone1;

int Scount = 0; // compteur secondes
int Mcount = 0; // compteur minutes
int Hcount = 0; // compteur heures
int DefuseTimer = 0;

long secMillis = 0;
long interval = 1000; // delais pour 1 seconde en ms

char password[6]; // nombre de chiffres dans le code
int currentLength = 0; //defini le nombre de caractere écrits par defaut
int i = 0;
int j = 0;
char entered[6];

int angle = 6; // capteur d'angle
int alarme = 4; // tempo alarme
int ledPin2 = 3; // led rouge
int ledPin3 = 2; // led verte

char Hcountset[2];
char Mcountset[2];
char Scountset[2];

LiquidCrystal lcd(7,8,10,11,12,13); // les pins utilisés par le LCD

const byte ROWS = 4; // 4 rows
const byte COLS = 3; // 3 columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, A5, A4, A2}; // connecté aux pins de sorties des rows clavier
byte colPins[COLS] = {A1, A0, A3}; // connecté aux pins de sorties des column clavier

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void setup(){
pinMode(angle, OUTPUT); //defini le pin du capteur d'angle comme sortie
pinMode(alarme, OUTPUT); // defini le pin du tempo alarme comme sortie
pinMode(ledPin2, OUTPUT); // defini le pin de la led 2 comme sortie
pinMode(ledPin3, OUTPUT); // defini le pin de la led 3 comme sortie
tone1.begin(9);
lcd.begin(16, 2);
Serial.begin(9600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Definir temps:" );
lcd.setCursor(4,1);
lcd.print("HH:MM:SS" );
while (Hcount < 2)
{
lcd.setCursor(Hcount + 4, 1);
lcd.cursor();
char key = keypad.getKey();
key == NO_KEY;
if (key != NO_KEY)
{
if ((key != '*')&&(key != '#'))
{
lcd.print(key);
Hcountset[Hcount] = key;
Hcount++;
tone1.play(NOTE_C8, 200);
}
}
}
Hcount=(int) strtol(Hcountset, (char **)NULL, 10);
while (Mcount < 2)
{
lcd.setCursor(Mcount + 7, 1);
lcd.cursor();
char key = keypad.getKey();
key == NO_KEY;
if (key != NO_KEY)
{
if ((key != '*')&&(key != '#'))
{
if(((Mcount==0) && atoi(&key)<=5)||Mcount>0){
lcd.print(key);
Mcountset[Mcount] = key;
Mcount++;
tone1.play(NOTE_C8, 200);
}
}
}
}
Mcount=(int) strtol(Mcountset, (char **)NULL, 10);
while (Scount < 2)
{
lcd.setCursor(Scount + 10, 1);
lcd.cursor();
char key = keypad.getKey();
key == NO_KEY;
if (key != NO_KEY)
{
if ((key != '*')&&(key != '#'))
{
if(((Scount==0) && atoi(&key)<=5)||Scount>0)
{
lcd.print(key);
Scountset[Scount] = key;
Scount++;
tone1.play(NOTE_C8, 200);
}
}
}
}
Scount=(int) strtol(Scountset, (char **)NULL, 10);
delay(1000);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Entrer Code : " );
while (currentLength < 6)
{
lcd.setCursor(currentLength + 5, 1);
lcd.cursor();
char key = keypad.getKey();
if (key == '#')
{
currentLength = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Entrer Code: " );
}
else
key == NO_KEY;
if (key != NO_KEY)
{
if ((key != '*')&&(key != '#'))
{
lcd.print(key);
password[currentLength] = key;
currentLength++;
tone1.play(NOTE_C8, 200);
}
}
}


if (currentLength == 6)
{
delay(500);
lcd.noCursor();
lcd.clear();
lcd.home();
lcd.print("Code Saisi: " );
lcd.setCursor(5,1);
lcd.print(password[0]);
lcd.print(password[1]);
lcd.print(password[2]);
lcd.print(password[3]);
lcd.print(password[4]);
lcd.print(password[5]);

tone1.play(NOTE_C8, 500);
delay(3000);
lcd.clear();
currentLength = 0;
}
}

void loop()
{
timer();
digitalWrite (angle, HIGH); // active le capteur d'angle
char key2 = keypad.getKey();

if (interval <= 0) // si l'intervalle seconde est inferieure ou égale à 0
{
Hcount = Hcount - 99; // debite 99 heures
Mcount = Mcount - 59; // debite 59 minutes
Scount = Scount - 59; // debite 59 secondes
}

if (key2 == '*')
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Code: " );

while (currentLength < 6)
{

timer();

char key2 = keypad.getKey();
if (key2 == '#')
{
currentLength = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Code: " );
}
else
if (key2 != NO_KEY)
{

lcd.setCursor(currentLength + 7, 0);
lcd.cursor();

lcd.print(key2);
entered[currentLength] = key2;
currentLength++;
tone1.play(NOTE_C8, 200);
delay(100);
lcd.noCursor();
lcd.setCursor(currentLength + 6, 0);
lcd.print("*");
lcd.setCursor(currentLength + 7, 0);
lcd.cursor();
}
}

if (currentLength == 6)
{
if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3] && entered[4] == password[4] && entered[5] == password[5])
{
digitalWrite (angle, LOW); // desactive le capteur d'angle
tone1.play(NOTE_C8, 250);
delay(350);
tone1.play(NOTE_C8, 250);
delay(350);
tone1.play(NOTE_C8, 250);
delay(350);
tone1.play(NOTE_C8, 500);
lcd.noCursor();
lcd.clear();
lcd.home();
lcd.print("Bombe DESAMORCEE" );
currentLength = 0;
digitalWrite(ledPin3, HIGH);
delay(2500);
lcd.setCursor(0,1);
lcd.print("Restart" );
delay(1000000);
}
else
{
tone1.play(NOTE_C4, 800);
lcd.noCursor();
lcd.clear();
lcd.home();
lcd.print("Erreur Code!" );
interval = interval - 333; // debite l'intervale seconde de 33%

if (Hcount > 0)
{
Hcount = Hcount - 99; // debite le compteur d'heures de 99 heures
}

if (Mcount > 0)
{
Mcount = Mcount - 4; // debite le compteur de minutes de 4 minutes
}
if (Scount > 0)
{
Scount = Scount - 59; // debite le compteur de secondes de 59 secondes
}

delay(1500);
currentLength = 0;

}
}
}
}

void timer()
{
Serial.print(Scount);
Serial.println();

if (Hcount <= 0) //
{
if ( Mcount < 0)
{
lcd.noCursor();
lcd.clear();
lcd.home();
lcd.setCursor (3,0);
lcd.print("BOOOOOOOOM");
lcd.setCursor (5,1);
lcd.print("PERDU!" );
digitalWrite(alarme, HIGH); // active le tempo de l'alarme
digitalWrite (angle, LOW); // desactive le capteur d'angle

while (Mcount < 0)
{
digitalWrite(ledPin2, HIGH);
tone1.play(NOTE_A2, 90);
delay(50);
digitalWrite(ledPin2, LOW);
tone1.play(NOTE_A3, 90);
delay(50);
digitalWrite(ledPin3, HIGH);
tone1.play(NOTE_A2, 90);
delay(50);
digitalWrite(ledPin3, LOW);
tone1.play(NOTE_A3, 90);
delay(50);
}
}
}

lcd.setCursor (1,1);
lcd.print ("Temps:" );

if (Hcount >= 10)
{
lcd.setCursor (8,1);
lcd.print (Hcount);
}
if (Hcount < 10)
{
lcd.setCursor (8,1);
lcd.print ("0" );
lcd.setCursor (9,1);
lcd.print (Hcount);
}
lcd.print (":" );

if (Mcount >= 10)
{
lcd.setCursor (11,1);
lcd.print (Mcount);
}
if (Mcount < 10)
{
lcd.setCursor (11,1);
lcd.print ("0" );
lcd.setCursor (12,1);
lcd.print (Mcount);
}

lcd.print (":" );

if (Scount >= 10)
{
lcd.setCursor (14,1);
lcd.print (Scount);
}
if (Scount < 10)
{
lcd.setCursor (14,1);
lcd.print ("0" );
lcd.setCursor (15,1);
lcd.print (Scount);
}

if (Hcount <0)
{
Hcount = 0;
}

if (Mcount <0)
{
Hcount --;
Mcount = 59;
}

if (Scount <1)
{
Mcount --;
Scount = 59;
}

if (Scount > 0)
{
unsigned long currentMillis = millis();

if(currentMillis - secMillis > interval)
{
tone1.play(NOTE_G6, 200);
secMillis = currentMillis;
Scount --;
digitalWrite(ledPin2, HIGH);
delay(10);
digitalWrite(ledPin2, LOW);
delay(10);
}
}
}


Dernière édition par Predy & Mima le Mer 5 Fév - 17:39, édité 2 fois

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  heltzar le Mar 4 Fév - 21:07

saluté félicitation poru le montage rapide. Betty ça me rappelle un film vu il n'y a pas tres longtemps

heltzar

Grade : Capitaine - FSG
Messages : 401
Date d'inscription : 11/08/2012
Age : 35
Localisation : AUCH

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Mar 4 Fév - 21:32

J'en reste sans voix  silent 
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Pierrus21 le Mer 5 Fév - 17:23

Peaceandlove a écrit:J'en reste sans voix  silent 

Pareil  bom 
avatar
Pierrus21

Grade : Première classe I
Messages : 198
Date d'inscription : 24/01/2013
Age : 23
Localisation : Auch

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Mer 5 Fév - 17:34

Comme je suis un éternel insatisfait  Rolling Eyes je rajoute une variable:

On aura 4 essaies max pour taper le code
A chaque essaie infructueux, le temps seconde sera débiter, en gros le temps va s'accélérer, au bout de 3 codes invalides, une minute équivaudra env. 1 sec
Au bout de 4 codes invalides, le temps sera débité de 99h59m59s, le temps sera donc à 0, la "bombe explose!

J'ai mis le code à jour, pour nos chers internautes qui voudrons copier!

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Mer 5 Fév - 18:43

Fabriquer la bombe, c'était déjà un sacré chalenge, mais en expliquer le fonctionnement à Jacky, alors là ça va être mission impossible ! Bonne chance les gars  Very Happy 
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Mer 5 Fév - 18:52

Bha non en fait, car autant le code est complexe , autant le fonctionnement va être hyper simple

Suffit de rentrer un temps de désamorçage, lancer la partie, le poseur à juste à taper son code, activer les explosifs, fermer la mallette et appuyer sur le bouton pour alerter tout le monde qu'elle est posée
Le démineur à juste à ouvrir la mallette en faisant gaffe de pas trop la remuer, et de taper le code de désamorçage.

Pas compliqué nan de diou!  Laughing 

Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Peaceandlove le Mer 5 Fév - 20:56

Ouais, c'est bien ce que je disais quoi, hihihihi.....
avatar
Peaceandlove

Grade : Général - FSG
Messages : 1638
Date d'inscription : 21/01/2011
Age : 51
Localisation : Monties 32420

Voir le profil de l'utilisateur http://www.loubentenac.fr/

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Predy & Mima le Jeu 6 Fév - 17:12

Alors, je vous présente BETTY, c'est encore au stade prototype, donc no comment sur la finition hein  What a Face Laughing 

BETTY à walp :  Laughing 



Sexyyyyyyyyyyyyy!  affraid 

Les fonctions en externes:



Les fonctions internes: (le capteur d'angle est à l'intérieur):



Vidéo de fonctionnement à venir



Predy & Mima

Grade : Adjudant - FSG
Messages : 666
Date d'inscription : 06/04/2013
Age : 32
Localisation : Tarn

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Bombe airsoft!

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum