USS Défiant.

Accueil/Projets/USS Défiant.
USS Défiant. 2015-07-09T07:25:57+00:00

Accueil Forums Projets USS Défiant.

5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • Asgard
    Participant
    Nombre d'articles : 42
    #9297 |

    Bonjour à tous,
    Après la réalisation de l’USS Voyager avec l’aide et la patience de Arnaud, j’ai donc continué avec mon deuxième projet, l’USS Défiant de la même série Star Trek.
    Je vous poste des photos de l’avancement de celle-ci.

    https://www.dropbox.com/s/sbw9csavxdibm39/WP_20150316_002.jpg?dl=0

    Perçages et mise en place des fibres optiques et des Leds.

    https://www.dropbox.com/s/6d5btut5sjbe2h1/WP_20150617_001.jpg?dl=0
    https://www.dropbox.com/s/gl66k0brnudru6m/WP_20150620_002.jpg?dl=0

    On range toute la salade de câbles avant fermeture.

    https://www.dropbox.com/s/2zgcz69ygcuhqn0/WP_20150620_009.jpg?dl=0

    Masticage des jointures. Les « antennes » qui dépassent, c’est la fibre optique qui sera coupée à la fin.

    https://www.dropbox.com/s/vl5fnidcsg2o9t1/WP_20150622_002.jpg?dl=0

    Mise en peinture, couleur de base.

    https://www.dropbox.com/s/k17egz3awd8h16y/WP_20150624_012.jpg?dl=0
    https://www.dropbox.com/s/v8k1d0chlqual10/WP_20150624_013.jpg?dl=0
    https://www.dropbox.com/s/xqg3w35mjp4t93t/WP_20150624_014.jpg?dl=0

    Peindre les différents éléments.

    https://www.dropbox.com/s/vifqtu864phsnfe/WP_20150704_004.jpg?dl=0

    Pour ce résultat.

    https://www.dropbox.com/s/ukyc7i41ymtej2o/WP_20150708_011.jpg?dl=0
    https://www.dropbox.com/s/btskmbunn81x3yq/WP_20150708_012.jpg?dl=0

    Il reste encore les décalques à poser et une couche de vernis.

    Ensuite j’attaque le plus marrant.

    https://www.dropbox.com/s/l3j2aluhitxzjsz/WP_20150708_014.jpg?dl=0

    après j’essai de modifier le programme de l’USS Voyager pour le Défiant, et sinon : Arnaud, au secours…

    Marc

    Asgard
    Participant
    Nombre d'articles : 42

    Bon, le Shield est fini aussi.

    https://www.dropbox.com/s/lk1w7ptrff7ktko/WP_20150710_009.jpg?dl=0

    Maintenant le programme.

    Asgard
    Participant
    Nombre d'articles : 42

    Comme d’habitude, j’ai un soucis dans le shield et je n’ai pas encore trouvé pourquoi.

    Voici une vidéo juste pour vous montrer ce que ça donne.

    https://www.dropbox.com/s/xzks3yk5mo4l731/D%C3%A9fiant.mp4?dl=0

    Je ferais une meilleure vidéo lorsque j’aurais solutionné mon problème.

    Je vous met aussi le programme pour ceux qui sont curieux.

    Bonne journée.

    Marc

    [code]

    #include « Timer.h »

    // Définition de tous les pins associés aux secteurs qu’ils controlent

    byte Vaisseau = 48;
    byte FeuxPosition = 47;
    byte FeuxNavigation = 44;
    byte Phares = 43;
    byte Radar = 8;
    byte EvansDisto = 39;
    byte CollecteurBuzzard = 36;
    byte MoteurImpulsions = 35;
    byte MoteurDistorsion = 30;
    byte Lasers = 29;

    byte bouton = 2;

    // Variable pour indiquer si le bouton a été appuyé ou non (veille du programme ou non)
    boolean veille = true;
    long lastT = 0;

    // Variable qui a la luminusité du radar
    long lumRadar;

    // Définition des timers que l’on va utiliser ainsi que des variables pour stocker les ids

    Timer allumageSimple; // ce timer s’occupera d’allumer les leds qui doivent simplement s’allumer au bout d’un certain temps
    int IDSimple[7] = {
      0};

    Timer clignotement; // ce timer fera clignoter les leds qui doivent clignoter
    int IDClignotement[4] = {
      0};

    Timer delaiClignotement; // ce timer declenchera le clignotement des leds (elles ne doivent pas clignoter immediatement)
    int IDDelai[2] = {
      0};

    Timer allumageProgressif; // ce timer va gerer l’allumage progressif du radar
    int IDProgressif[2] = {
      0};

    Timer attaque; // ce timer va servir à faire clignoter les torpilles
    int IDAttaque[5] = {
      0};

    // Timers
    long delayVaisseau = 2000;
    long delayEvansDisto = 27000;
    long delayMoteurImpulsions = 22000;
    long delayBuzzard = 17000;
    long delayMoteurDisto = 32000;
    long delayPhares = 42000;

    long delayBeforeLasers = 47000;
    long delayEntreAttaque = 8000;

    long delayBeforeRadar = 37000;
    long speedRadar = 50; // En combien de temps le radar s’allume au total

    long delayBeforeFeuxPos = 7000;
    long delayOnFeuxPos = 3000;
    long delayOffFeuxPos = 2000;

    long delayBeforeFeuxNav = 12000;
    long delayOnFeuxNav = 50;
    long delayOffFeuxNav = 1000;

    // Fonction setup

    void setup() {
      Serial.begin(9600);
      pinMode(Vaisseau, OUTPUT);
      pinMode(FeuxPosition, OUTPUT);
      pinMode(FeuxNavigation, OUTPUT);
      pinMode(Phares, OUTPUT);
      pinMode(Radar, OUTPUT);
      pinMode(EvansDisto, OUTPUT);
      pinMode(CollecteurBuzzard, OUTPUT);
      pinMode(MoteurImpulsions, OUTPUT);
      pinMode(MoteurDistorsion, OUTPUT);
      pinMode(Lasers, OUTPUT);

      digitalWrite(Vaisseau, LOW);
      digitalWrite(FeuxPosition, LOW);
      digitalWrite(FeuxNavigation, LOW);
      digitalWrite(Phares, LOW);
      digitalWrite(EvansDisto, LOW);
      digitalWrite(CollecteurBuzzard, LOW);
      digitalWrite(MoteurImpulsions, LOW);
      digitalWrite(MoteurDistorsion, LOW);
      digitalWrite(Lasers, LOW);
      analogWrite(Radar, 0);

      attachInterrupt(0, Boutonpresse, RISING);

      Boutonpresse();
    }

    // Fonction principale

    void loop(){

      // si le programme n’est pas en veille, on actualise l’état des leds
      if(!veille) {
        allumageSimple.update();
        clignotement.update();
        delaiClignotement.update();
        allumageProgressif.update();
        attaque.update();
      }

    }

    // Fonction appellé lorsque le bouton est appuyé

    void Boutonpresse(){

      if(millis()-lastT > 500){
       
        if(veille){ // si le programme est en veille, alors on programme l’allumage des différentes leds
    Serial.println(« Systeme enclenche! »);
          // on s’occupe d’abord de programmer l’allumage simple des leds qui doivent seulement s’allumer
          IDSimple[0] = allumageSimple.after(delayVaisseau, allumVaisseau);
          // on passe pour le moment les feux de positions et navigation, car on doit les faire clignoter, on le fera après
          IDSimple[1] = allumageSimple.after(delayEvansDisto, allumEvansDisto);
          IDSimple[2] = allumageSimple.after(delayBuzzard, allumBuzzard);
          IDSimple[3] = allumageSimple.after(delayMoteurImpulsions, allumImpulsions);
          IDSimple[4] = allumageSimple.after(delayMoteurDisto, allumDisto);
          IDSimple[5] = allumageSimple.after(delayPhares, allumPhares);

          // on s’occupe de l’allumage progressif du radar
          IDProgressif[0] = allumageProgressif.after(delayBeforeRadar, allumeRadar);

          // on s’occupe maintenant de declencher le clignotement des feux et des torpilles après un certain temps
          // cette fonction va appeller la fonction ‘allumeFeuxPosition’ dans 12 secondes, et c’est la fonction
          // ‘allumeFeuxPosition’ qui va faire clignoter les leds
          IDDelai[0] = delaiClignotement.after(delayBeforeFeuxPos, allumeFeuxPosition);
          IDDelai[1] = delaiClignotement.after(delayBeforeFeuxNav, allumeFeuxNavigation);

          // enfin il reste à faire clignoter les torpilles
          IDAttaque[0] = attaque.after(delayBeforeLasers, allumageAttaque);

          veille = false;
        }
        else{ // sinon on eteint toutes les leds et on stop tous les timers
        Serial.println(« Systeme desactive! »);

          // on stop d’abord les timers à l’aide des IDs :
          for(int i = 0; i < 7; i++){
            allumageSimple.stop(IDSimple);
          }
          for(int i = 0; i < 2; i++){

            delaiClignotement.stop(IDDelai);
            allumageProgressif.stop(IDProgressif);
          }
          for(int i = 0; i < 4; i ++){
            clignotement.stop(IDClignotement);
          }
          for(int i = 0; i < 5; i++){
            attaque.stop(IDAttaque);
          }
          // puis on eteind tout :
          lumRadar = 0;
          digitalWrite(Vaisseau, LOW);
          digitalWrite(FeuxPosition, LOW);
          digitalWrite(FeuxNavigation, LOW);
          digitalWrite(Phares, LOW);
          digitalWrite(EvansDisto, LOW);
          digitalWrite(CollecteurBuzzard, LOW);
          digitalWrite(MoteurImpulsions, LOW);
          digitalWrite(MoteurDistorsion, LOW);
          digitalWrite(Lasers, LOW);
          analogWrite(Radar, 0);

          veille = true;

        }
        lastT=millis();
      }
    }

    void allumeFeuxPosition(){ // cette fonction fait clignoter les feux de position indefiniment quand on l’appelle
    Serial.println(« Allumage des feux de position »);
      if(delayOffFeuxPos > delayOnFeuxPos)
        IDClignotement[0] = clignotement.every(delayOffFeuxPos, pulseFeuxPos);
      else {
        IDClignotement[0] = clignotement.every(delayOnFeuxPos, pulseFeuxPos);
        digitalWrite(FeuxPosition, HIGH);
      }
    }

    void allumeFeuxNavigation(){ // cette fonction fait clignoter les feux de navigation indefiniment quand on l’appelle
    Serial.println(« Allumage des feux de navigation »);
      if(delayOffFeuxNav > delayOnFeuxNav)
        IDClignotement[1] = clignotement.every(delayOffFeuxNav, pulseFeuxNav);
      else {
        IDClignotement[1] = clignotement.every(delayOnFeuxNav, pulseFeuxNav);
        digitalWrite(FeuxNavigation, HIGH);
      }
    }

    void allumeRadar(){ // cette fonction declenche l’allumage prograssif du radar quand on l’appelle
    Serial.println(« Allumage du radar »);
      IDProgressif[1] = allumageProgressif.every(speedRadar, augmenteLumRadar, 255); // toutes les 15millisecondes, on augmente la luminausité du radar, et ce 255 fois (car 255 est le max de luminausité)
    }

    void augmenteLumRadar() { // cette fonction augmente la luminausité du radar de 1 à chaque fois qu’on l’appelle
      lumRadar ++;
      analogWrite(Radar, lumRadar);
    }

    void allumageAttaque() { // cette fonction va provoquer une attaque toute les 8 secondes avec les lasers
      Serial.println(« Allumage des Lasers »);
      IDAttaque[1] = attaque.every(delayEntreAttaque, debutattaque);
    }

    void debutattaque() { // cette fonction fait clignoter les lasers
      IDAttaque[2] = attaque.oscillate(Lasers, 50, LOW, 10);
    }

    void allumVaisseau() {
      Serial.println(« Allumage du Vaisseau »);
      digitalWrite(Vaisseau, HIGH);
    }

    void allumEvansDisto() {
      Serial.println(« Allumage des Evans Disto »);
      digitalWrite(EvansDisto, HIGH);
    }

    void allumBuzzard() {
      Serial.println(« Allumage du collecteur de buzzard »);
      digitalWrite(CollecteurBuzzard, HIGH);
    }

    void allumImpulsions() {
      Serial.println(« Allumage du moteur à impulsion »);
      digitalWrite(MoteurImpulsions, HIGH);
    }

    void allumDisto() {
      Serial.println(« Allumage du moteur à distorsion »);
      digitalWrite(MoteurDistorsion, HIGH);
    }

    void allumPhares() {
      Serial.println(« Allumage des phares »);
      digitalWrite(Phares, HIGH);
    }

    void pulseFeuxPos(){
      if(delayOffFeuxPos > delayOnFeuxPos)
        IDClignotement[2] = clignotement.pulse(FeuxPosition, delayOnFeuxPos, LOW);
      else IDClignotement[2] = clignotement.pulse(FeuxPosition, delayOffFeuxPos, HIGH);

    }
    void pulseFeuxNav(){
      if(delayOffFeuxNav > delayOnFeuxNav)
        IDClignotement[3] = clignotement.pulse(FeuxNavigation, delayOnFeuxNav, LOW);
      else IDClignotement[3] = clignotement.pulse(FeuxNavigation, delayOffFeuxNav, HIGH);
    }

    [/code]

    arnaud9212
    Admin bbPress
    Nombre d'articles : 118

    Salut Marc,

    Je n’avais pas vu que tu avais posté ces messages! Mais le résultat est juste superbe! Je pense que c’est mon préféré des deux.

    Comme d’habitude contacte moi si tu as des soucis.

    A+

    Asgard
    Participant
    Nombre d'articles : 42

    Enfin, j’ai refait tout le shield car je n’ai pas trouvé d’ou venait le problème.
    Maintenant ca marche.
    Voici la vidéo.

    https://www.dropbox.com/s/b7d65neko4r7123/USS%20Defiant.mp4?dl=0

    La prochaine maquette va être sympa aussi, je vous en ferait part.

    Merci encore à Arnaud pour son aide.

    A bientôt

    Marc

5 sujets de 1 à 5 (sur un total de 5)

Vous devez être connecté pour répondre à ce sujet.