costumescrime.net

Site d'un escrimeur, couturier, joueur de D&D

Portal Gun

Je m'attaque à un gros projet : un Portal Gun Je souhaite le fabriquer à taille réelle, ainsi que de lui faire émettre la lumière bleu ou orange, et les sons associés.
Pour émettre les sons, j'utilise un module SOMO II qui a besoin d'une carte micro SD, d'une alimentation 5V et d'un petit haut-parleur.

Une fois les composants achetés, j'ai regardé pour utiliser plus de son que juste les 2 sons du Portal Gun, et je me suis mis dans la tête de faire la "potato Glados" en supplément et qu'elle parle comme dans le jeu.
Il faut donc que je crée une connexion entre le module SOMO II et un arduino pour envoyer les ordres sonores.
Je rajoute un potentiomètre relié à l'arduino pour contrôler la puissance du son.

Résultat, je souhaite avoir un module arduino qui contrôle les LED orange et bleu, et qui envoie les informations sonores au SOMO II par une liaison série.

  1. Au début, aucune LED allumé.
  2. J’appuie sur le bouton poussoir gauche, la LED Bleu s'allume, et le son "Bleu" est émis. Que la LED bleu, la LED orange doit être éteinte.
  3. J'appuie sur le bouton poussoir droit, la LED orange s'allume, et le son "Orange" est émis. Que la LED orange, la LED bleu doit être éteinte.
  4. La puissance sonore doit varier en fonction du potentiomètre.
  5. Toutes les 60 a 180s, un message aléatoire de Glados patate doit être émis (tempo aléatoire à redéfinir à chaque émission d'un message Glados"

Pas besoin d'attendre un message retour sur le port série (si le message n'est pas bien recu, ce n'est pas important).


Voici ou j'en étais au 17/01/2017
// déclaration des constantes pour les noms des broches ; selon le schéma
const int btn_droit = 2;
const int btn_gauche = 3;
const int led_bleu = 10;
const int led_orange = 11;


// déclaration des variables utilisées

// le nombre qui détermine la couleur de la led
int couleur_led = 0;
// lecture de l'état des boutons (un seul à la fois mais une variable suffit)
int etat_bouton;

int memoire_droit = HIGH; // état relâché par défaut
int memoire_gauche = HIGH;


/* initilisation des broches en entrée/sortie */
void setup()
{
   pinMode(btn_droit, INPUT);
   pinMode(btn_gauche, INPUT);
   pinMode(led_bleu, OUTPUT);
   pinMode(led_orange, OUTPUT);
}

void loop()
{
   // lecture de l'état du bouton droit
   etat_bouton = digitalRead(btn_droit);

   // Si le bouton a un état différent que celui enregistré ET
   // que cet état est "appuyé"
   if((etat_bouton != memoire_droit) && (etat_bouton == LOW))
   {
       // on indique quelle LED on allume
       couleur_led = 1;
   }

   // on enregistre l'état du bouton pour le tour suivant
   memoire_droit = etat_bouton;


   // et maintenant pareil pour le bouton gauche
   etat_bouton = digitalRead(btn_gauche); // lecture de son état

   // Si le bouton a un état différent que celui enregistré ET
   // que cet état est "appuyé"
   if((etat_bouton != memoire_gauche) && (etat_bouton == LOW))
       {
       // on indique quelle LED on allume
       couleur_led = 2;
   }
   // on enregistre l'état du bouton pour le tour suivant
   memoire_gauche = etat_bouton;

   // appel de la fonction affiche() que l'on aura créée
   // on lui passe en paramètre la valeur de la couleur de LED à éclairer
   affiche(couleur_led);
}

void affiche(int valeur_recue)
{    if(valeur_recue == 0)
   {
       digitalWrite(led_bleu, HIGH);
       digitalWrite(led_orange, HIGH);
       }
   if(valeur_recue == 1)
   {
       digitalWrite(led_bleu, LOW);
       digitalWrite(led_orange, HIGH);
       }
   if(valeur_recue == 2)
   {
       digitalWrite(led_bleu, HIGH);
       digitalWrite(led_orange, LOW);
       }
}

MAJ du 20/01/2017 : J'ai fini le programme, il fonctionne exactement comme je le souhaitais, mais je rajouterais peut-être quelques fonctions, à voir.
#include <SoftwareSerial.h>
// déclaration des constantes pour les noms des broches ; selon le schema
const int btn_gauche = 2;
const int btn_droit = 3;
const int led_bleu = 10;
const int led_orange = 11;
const int btn_glados = 7;
const int Rx_pin = 4;
const int Tx_pin = 5;
// le potentiomètre, branché sur la broche analogique 0
const int potar = 0;
// nombre de pistes audio de Glados -- A MODIFIER --
const int nombre_pistes = 20;

// déclaration des variables utilisées

//variable pour stocker la valeur lue après conversion
int valeurLue;
int piste;
//on convertit cette valeur en une tension
float valeur_son;

// le nombre qui détermine la couleur de la led
int couleur_led = 0;

long duree_seconde = 15;  // premiere duree forcee a 15s
long duree_milis = duree_seconde * 1000;
long tempoDepart = 0;  // on initialise la tempo depart
int memoire_son = 0;

// lecture de l'état des boutons (un seul à la fois, mais une variable suffit)
int etat_bouton;

int memoire_droit = HIGH; // etat relâche par defaut
int memoire_gauche = HIGH;

// create the object for the virtual serial port. In this case, it's called Somo
SoftwareSerial Somo(Rx_pin,Tx_pin);
// define a structure for holding the bytes that will be passed to the SOMO
typedef struct _ControlMsg
{
  byte  start;
  byte  cmd;
  byte  feedback;
  byte  para1;
  byte  para2;
  byte  checksum1;
  byte  checksum2;
  byte  end;
} ControlMsg;

/* initialisation des broches en entrée/sortie */
void setup()
{
  pinMode(btn_gauche, INPUT_PULLUP);
  pinMode(btn_droit, INPUT_PULLUP);
  pinMode(led_bleu, OUTPUT);
  pinMode(led_orange, OUTPUT);
  pinMode(btn_glados, INPUT_PULLUP); 
  Initialize_SOMO();
  Serial.begin(9600);
}

void loop()
{
// lecture de l'état du bouton gauche
  etat_bouton = digitalRead(btn_gauche);

  // Si le bouton a un état différent que celui enregistre ET
// que cet état est "appuyé"
  if((etat_bouton != memoire_gauche) && (etat_bouton == LOW))
  {
// on indique quelle LED on allume
    couleur_led = 1;
    Play_Gun(1);
    Serial.println("Bouton gauche activé, la led bleu s'allume");
  }

// on enregistre l'état du bouton pour le tour suivant
  memoire_gauche = etat_bouton;

// et maintenant pareil pour le bouton droit
  etat_bouton = digitalRead(btn_droit); // lecture de son etat

  // Si le bouton a un état différent que celui enregistre ET
// que cet état est "appuyé"
  if((etat_bouton != memoire_droit) && (etat_bouton == LOW))
    {
// on indique quelle LED on allume
    couleur_led = 2;
    Play_Gun(2);
    Serial.println("Bouton droit activé, la led orange s'allume");
  }
// on enregistre l'état du bouton pour le tour suivant
  memoire_droit = etat_bouton;

// appel de la fonction affiche() que l'on aura créée
// on lui passe en paramètre la valeur de la couleur de LED a éclairé
  affiche(couleur_led);
  
// Si le bouton Glados est actif,
  if ( digitalRead(btn_glados) == LOW ) 
  {
    
// Et si il s'est écoulé entre 60 et 180 secondes,
    if ( ( millis() - tempoDepart ) >= duree_milis )
    {
      
// Alors on lance une des musiques de glados
      piste = random(1, nombre_pistes);
      Play_Glados(piste);
      Serial.print("Glados va jouer la piste n ");
      Serial.println(piste);

// Et on redemare la temporisation pour ne pas afficher ce message une seconde fois
      duree_seconde = random(60, 120);
      duree_milis = duree_seconde * 1000;
      tempoDepart = millis();
      Serial.print("Prochaine musique dans ");
      Serial.print(duree_seconde);
      Serial.println(" secondes");
      Serial.println("");
    }
  }
  
//on convertit en nombre binaire la tension lue en sortie du potentiomètre
  valeurLue = analogRead(potar);

//on traduit la valeur brute en valeur du son (1-30)
  valeur_son = map(valeurLue, 1, 1024, 1, 30);
  
//si la valeur du son est modifie, on sauvegarde cette valeur et on émet la valeur au module SOMO II
  if (valeur_son != memoire_son)
  {
    memoire_son = valeur_son;
    Envoi_son(memoire_son);
    Serial.print("la valeur du son est de : ");
    Serial.println(memoire_son);
    Serial.println("");
    }
    
}
// Fonction d'initialisation du SOMO II
void Initialize_SOMO()
{
// initialise le module SOMO II
  Somo.begin(9600);
  delay(500);
}

void affiche(int valeur_recue)
{ if(valeur_recue == 0)
  {
    digitalWrite(led_bleu, HIGH);
    digitalWrite(led_orange, HIGH);
  }
  if(valeur_recue == 1)
  {
    digitalWrite(led_bleu, LOW);
    digitalWrite(led_orange, HIGH);
    }
  if(valeur_recue == 2)
  {
    digitalWrite(led_bleu, HIGH);
    digitalWrite(led_orange, LOW);
  }
}

// Cette fonction permet de lire les fichiers du Portal Gun
void Play_Gun(byte gun)
{
  ControlMsg ctrlMsg;   // structure
  // set variables for playing a track
  byte cmd = 0x0F;     // sets the "Play a specified folder & track" command
  byte feedback = 0;   // sets the feedback requirement to off
  byte para1 = 1;      // sets it to folder "01" on the microSD card
  byte para2 = gun;  // sets the track number  (1 to 255)
  // populate structure with the bytes
  ctrlMsg.start = 0x7E;    //  always use this starter byte
  ctrlMsg.cmd = cmd;  
  ctrlMsg.feedback = feedback; 
  ctrlMsg.para1 = para1;  
  ctrlMsg.para2 = para2;  
  // Sending instructions to the SOMO requires the use of a checksum
  // Checksum (2 bytes) = 0xFFFF – (CMD + Feedback + Para1 + Para2) + 1
  word chksum = 0xFFFF - ((word)cmd + (word)feedback + (word)para1 + (word)para2) + 1;  
  ctrlMsg.checksum1 = (byte)(chksum >> 8); // upper 8 bits
  ctrlMsg.checksum2 = (byte)chksum; // lower 8 bits
  ctrlMsg.end = 0xEF;     // always use this end byte
  // Now we write the structure to the SOMO MP3 Module
  Somo.write((const byte*)&ctrlMsg, sizeof(ctrlMsg));
  Somo.flush();
}

// Cette fonction permet de lire les fichiers de Potato Glados
void Play_Glados(byte track)
{
  ControlMsg ctrlMsg;   // Create structure
  // set variables for playing a track
  byte cmd = 0x0F;     // sets the "Play a specified folder & track" command
  byte feedback = 0;   // sets the feedback requirement to off
  byte para1 = 2;      // sets it to folder "01" on the microSD card
  byte para2 = track;  // sets the track number  (1 to 255)
  // populate structure with the bytes
  ctrlMsg.start = 0x7E;    //  always use this starter byte
  ctrlMsg.cmd = cmd;  
  ctrlMsg.feedback = feedback; 
  ctrlMsg.para1 = para1;  
  ctrlMsg.para2 = para2;  
  // Sending instructions to the SOMO requires the use of a checksum
  // Checksum (2 bytes) = 0xFFFF – (CMD + Feedback + Para1 + Para2) + 1
  word chksum = 0xFFFF - ((word)cmd + (word)feedback + (word)para1 + (word)para2) + 1;  
  ctrlMsg.checksum1 = (byte)(chksum >> 8); // upper 8 bits
  ctrlMsg.checksum2 = (byte)chksum; // lower 8 bits
  ctrlMsg.end = 0xEF;     // always use this end byte
  // Now we write the structure to the SOMO MP3 Module
  Somo.write((const byte*)&ctrlMsg, sizeof(ctrlMsg));
  Somo.flush();
}

// Cette fonction envoie la valeur du son
void Envoi_son(byte sound)
{
  ControlMsg ctrlMsg;   // Create structure
  // parametre pour le son
  byte cmd = 0x06;
  byte feedback = 0;   // sets the feedback requirement to off
  byte para1 = 0;      // sets it to modifie sound
  byte para2 = sound;  // sets the sound  (1 to 30)
  // populate structure with the bytes
  ctrlMsg.start = 0x7E;    //  always use this starter byte
  ctrlMsg.cmd = cmd;  
  ctrlMsg.feedback = feedback; 
  ctrlMsg.para1 = para1;  
  ctrlMsg.para2 = para2;  
  // Sending instructions to the SOMO requires the use of a checksum
  // Checksum (2 bytes) = 0xFFFF – (CMD + Feedback + Para1 + Para2) + 1
  word chksum = 0xFFFF - ((word)cmd + (word)feedback + (word)para1 + (word)para2) + 1;  
  ctrlMsg.checksum1 = (byte)(chksum >> 8); // upper 8 bits
  ctrlMsg.checksum2 = (byte)chksum; // lower 8 bits
  ctrlMsg.end = 0xEF;     // always use this end byte
  // Now we write the structure to the SOMO MP3 Module
  Somo.write((const byte*)&ctrlMsg, sizeof(ctrlMsg));
  Somo.flush();
}

Ce code est libre d'utilisation, à vous d'en faire ce que bon vous semble ;)

Partie de D&D, Jour 1 soir

On a décidé de visiter cette grotte, au moins commencé avant d'aller dormir.

Les nains avaient un dicton "jamais le nord", donc on a commencé par le nord :)

À peine que l'on soit arrivé dans la salle au nord de notre position, 2 Hobgobelins nous attaquent, ils chargent avant même que l'on ait commencé à réagir. Heureusement, je suis entouré par un brave guerrier, un barbare qui porte bien son nom, ils en ont fais qu'une bouchée.

On a récupéré leurs armes, et surtout, une ceinture de portance, elle nous sera bien utile ^^

Dans le plafond de cette salle pend une corde, qui passe par le trou duquel s'engouffre la pluie. Elle s'écoule dans un trou, mais ou exactement, je ne veux même pas savoir.

On a continué notre exploration vers le Nord, un sombre couloir se situe sur notre droite, on a foncé tête baissée dedans ...
Je me suis fait piéger comme un bleu dans cette toile d'araignée, j'ai utilisé toute ma force pour m'en libérer sans succès. L'araignée m'a empoisonné, je sens ma force partir.

Les nains ont réussi à la trancher en deux, puis nous sommes allé dans son nid, ou j'ai récupéré par terre 75 pièces d'or, une belle perle, qui est magique. Selon le prêtre, c'est une perle de thaumaturgie. Je n’en ai pas l'utilité, mais Elros en aura bien besoin.

On a décidé d'utiliser cette salle pour dormir, on est allé chercher nos montures, puis vu l'heure peut tardive, on a continué notre exploration. Les nains m'ont forcé a passer devant, même après mettre fait sauvagement attaquer par l'araignée. Dans la première salle, à l'Est, j'ai trouvé un coffre en pierre, un vilain piège à l'ouverture. Je devais être trop sûr de moi, j'ai complètement raté le désamorçage, j'ai été bien blessé.

J'y ai trouvé 100 pièces d'or, 2 perles et un bandeau, je suis trop content d'avoir trouvé tout ça ^^ J'ai évalué l'ensemble, et il y en a pour une petite fortune :D
Je vais quand même demander au prêtre si ces objets n’auraient pas quelques propriétés magiques, ça peut être utile.

Suite à cette jolie découverte, on est allé fouiller la salle à l'Ouest. On y a trouvé un tombeau. Une gargouille dormait dessus, notre barbare l'a fendue en 2 avant même que j'aie eu le temps de réagir. Dans le tombeau, un joli anneau été dedans, à voir s’il est magique.

Il commence vraiment à se faire tard. Il faut que l'on s'organise pour faire des tours de garde, et que nos mages prient leurs Dieux ...
Allez, je file dormir. Faudra que je décrive mes nouveaux compagnons quand même :p

Partie de D&D, Jour 1 après midi

Quand te reverrai-je ?
C'est la première pensée qui met venu à l’esprit.
Moi qui pensais vraiment pouvoir passer tous mes jours avec toi, ma belle EliAnA.

Malheureusement, depuis que tu as reçu cette lettre, je ne te reconnais plus. Cette lettre de malheur, j'aurais dû la déchirer avant que tu ne la lises, comme ça je t'aurais gardé à mes côtés.

Mais la vie va ainsi, il ne me reste plus qu'à te retrouver, et nous pourrons retourner à nos jours paisibles ensuite, enfin une fois que tu auras rempli ta mission d’éclaireuse, si c'est bien ce que tu es allé faire.

Eh oui, j'ai juste eu le temps d'apprendre de toi que des raids d'Orcs avaient lieu en ce moment, que tu partais en éclaireuse, sans moi, un simple roublard trop faible pour cette tache …

Je suis allé dans cette auberge, ou nous sommes allés tant de fois pour manger ou boire après mes leçons, te souviens-tu ? J'y ai trouvé quelques drôles de personnages, tous près à partir à l'aventure.

On file droit sur le village de Bassegrange, un messager est venu nous chercher, il avait besoin d'aide, son village était attaqué par des Hobgobelins.

Nous sommes montés à cheval, puis nous sommes partis en direction de son village. Nous avons été pris dans une tempête, nous nous sommes réfugiés sous un grand pic, nous y avons trouvé une grotte, avec trois très grosses portes fermées à l’intérieur.

Nous sommes descendus de nos montures, j'ai reçu comme qui dirait un sort malicieux, je perds le contrôle de mon corps pendant quelques instants, plus ou moins long …

Après avoir inspecté les trois portes, qui semblaient bien solides, et bien fermées, un coup de tonnerre très violent s'est abattu au-dessus de nous. Les portes se sont effondrées d'un seul coup, des rats sont apparus, en même temps que je ne contrôlais plus mon corps. Lorsque je suis revenu à moi, j’étais pris en tenaille par deux rats, loin de mes nouveaux compagnons. J'ai réussi à en éventrer un assez facilement, mais le second, bien plus agile que le premier, m'a donné du fil à retordre …

Au bout de plusieurs essais infructueux, j'ai lâché la dague que tu m'avais offerte. Je l'ai récupérée une fois tous ces rats morts.

On y retourne, la nuit commence tout juste.

Partie de D&D, préface

Je suis très nul en orthographe, si un adepte de ce dieu veut bien utiliser quelques minutes de son précieux temps pour corriger ce texte, je lui serais reconnaissant ^^


Nom  : Dream Ramassetaillis
Race         : Humain
classe         : Roublard
Alignement    : Chaotique neutre
Divinité     : Olidammara
Age         : 17
Sex         : Masculin
Taille         : 1.71m
Poid         : 84Kg
Yeux         : Vert
Cheveux     : Châtain
Peau         : Blanche




Dream est né dans une famille humaine, mais n'a jamais connu ses parents.
Il fut abandonné, à sa naissance, dans la forêt au nord d'Ecuilbrave, et une famille de Halfelin l’a trouvé. La famille Ramassetaillis a décidé de l'élever avec leurs enfants.

Très vite, Dream a compris que sa place n'aurait pas du être ici, mais il n'a nulle part ou aller, surtout si jeune. Il grandit bien plus vite que ses frères et sœurs, devient deux fois plus grand qu'eux vers ses 15 ans ...

Il apprend grâce à sa famille l'art de la ruse, du vol, des pièges. Il est très doué, apprend vite, et cherche toujours à devenir encore meilleur, surtout aux yeux de ses parents. Il n'a jamais eu de maisons fixes, les Halfelins se déplacent régulièrement, cela ne l'a jamais dérangé, c'est son mode de vie. :)

Vers ses 17 ans, il a rencontré une jeune humaine lors d'un de ses habituels vols à la tire. La jeune l'a attrapé la main dans le sac. La jeune femme, qui s'appelle EliAnA Kolyada est une rôdeuse, grande, belle, impulsive. Dream essaye de s'enfuir, mais la rôdeuse le retient.Elle se demande comment un jeune homme peut porter des frusques que l'on ne voit que sur les Halfelins, tout est trop petit sur Dream. Le jeune homme lui explique sa situation, sous le regard étonné de la belle femme qui se tient devant lui.
EliAnA lui propose d'aller acheter une tenue plus adaptée à sa taille, tout en étant pratique pour ses activités. Chose faite, elle lui propose de voir ses talents à l'œuvre. Ils trouvent un riche marchand, attablé dans la taverne, la grosse bourse attachée à sa taille. Dream n'hésite même pas, et file en direction du marchand, trébuche sur la jambe tendue, tombe devant le marchand qui ne réagit même pas. Dream se relève, et repart en direction d'EliAnA, qui n'a vu qu'un malheureux jeune homme tomber et qui n'a pas pu voler la bourse.

Dream lui montre alors la bourse pleine de pièces, elle n'a rien vu du vol. Elle lui trouve des qualités, en plus d'être un beau jeune homme. Elle lui propose de lui donner quelques leçons, comment se battre, ainsi que différentes techniques de chasse. Dream ravi accepte avec joie.

Tous les jours, durant 2 mois, ils passent leur temps ensemble, à apprendre. Elle lui enseigne l'art des dagues, de la rapière ainsi que le tir à l'arbalète, il apprend vite, EliAnA est assez fière de son apprenti. Il se montre doué en acrobatie, il nage bien, grimpe à la corde comme un petit singe, nage comme un poisson dans l'eau. Par contre, il n'a aucune capacité actuelle en magie, il aura besoin de beaucoup d'entrainement pour y arriver.

Dream aime de plus en plus passer du temps avec EliAnA, il en tombe amoureux, et se confesse a la fin d'une de leur journée d'entrainement. EliAnA accepte de devenir plus que le mentor du jeune homme. Ils passent alors leurs journées et leurs nuits à tendre des pièges, à explorer les grottes et les plaines, ils vivent de beaux jours. EliAnA lui explique que pour partir à l'aventure, il faut soit être en groupe, soit être un maitre de classe.

Un beau jour, EliAnA reçoit une mystérieuse lettre, elle est directement partie sans rien dire, Dream ne la vit plus durant 24h. Elle est repassée en vitesse, a pris ses affaires, lui apprend que des raids d'Orc ont eu lieu, et part en éclaireuse sans Dream, qui mourrait trop vite si elle l’emmenait.

Dream veut vraiment la rejoindre, progresser pour la rattraper, mais il ne peut partir seul à l'aventure. Il décide de se trouver un groupe, il sait que des aventuriers se réunissent souvent dans l'auberge "À la table de la marmotte jaune" du village de Eaufranche.

Dream passe voir ses parents, leur explique qu'il part à l'aventure, récupère quelques affaires et file en courant à l'auberge, en se demandant qui accepterait un simple Roublard dans leur groupe, pour partir à l'aventure ...

Les Capes

Après avoir passé une soirée dans le froid, avec la cotte de maille, j'ai fait une cape.

Rien de plus simple, un demi-cercle de 150cm de rayon, et avec les chutes, on fait la capuche.

Tous les bords de la cape sont cousus sur eux même pour éviter qu'ils s'effilochent.

Les deux découpes qui sont autour du cou sont pour que la cape repose sur les épaules, et non sur le cou.

La capuche peut être grande, petite, pointue ou ronde en fonction de ce que l'on souhaite. Il faut juste que le tour du cou corresponde bien.




Suite à cette première cape, j'ai eu quelques demandes dont une cape double couleur, sans couture visible, et une imperméable.



Pour la cape double couleur, une demande d'un petit liseré de fleurs a été demandée pour faire plus "noble".

La maille

Voici ma première cotte de maille faite main. Elle est en 4:1 et de diamètre 10.

Je suis parti de trois bobines de fer de 5Kg, de diamètre 0,8mm. Je l'ai bobiné autour d'une tige de fer de 10mm de diamètre, à l'aide d'une perceuse. J'ai ensuite coupé le boudin ainsi obtenu en anneau, ce qui m'a donné la matière première de la maille. Il reste alors le plus long : l'assemble des anneaux, ou plus simplement, le tricot.

J'ai commencé par faire un carré, puis de l'agrandir pour obtenir un rectangle de 75cm de largeur et de 2m de long. Je l'ai plié en deux, et fermé les deux côtés, en laissant la place pour passer les bras. À ce niveau-là, j'en étais à 60h de travail.

J'ai ensuite fait les deux manches, un simple rectangle du début à la fin, pour chaque bras. Pour le ceinturon, l'épée et les gants, ce n'est pas moi qui les avaient faits, c'est de l'achat.

Au total, après une centaine heure passée sur cette cotte de maille, je l'ai enfin fini, et ce la veille du marché médiéval de noël de Provins. Je l'ai porté à cette occasion dans la même tenue que ci-dessus. Pas chaud du tout, surtout avec le froid que l'on a eu ce jour-là.


Dès que je suis revenu de Provin, j'ai décidé de me faire une cape, pour ne plus avoir froid lors des sorties. C'est à partir de ce moment la que j'ai vraiment commencé à faire des costumes, et pas que pour moi...


Cette armure a été achetée, par contre la maille a été faite en partie par moi, et le reste par celui qui la porte, après que je lui ai montré comment faire. Il y a de la maille autour des deux bras, ainsi qu'autour de la taille, en forme de jupe.

La Casaque Piou Piou

Voici ma première création.

J'ai fait très simple, mais le but était de faire des casaques jaunes, pour l’armée de l'Est, probablement l'Autriche, qui était à la solde d'une comtesse Vampire...


shéma casaque

J'ai commencé de la façon suivante pour la découpe du tissu. Puis j'ai cousu un "H" et un "F" dessus pour faire le "Hanz" et "Franz", mais qui selon certain petits curieux, cela s’apparente plutôt à Homme et Femme ^^


Ouverture du site

Voici le début de ce site, que je vais essayer de faire vivre autant que je le peux ;-)

Je laisse les commentaires activés, sans besoin d'adresse email, et je me réserve le droit de supprimer les messages injurieux, ainsi que ceux qui n'ont rien à faire sur ce site (pub).


Vie privée


Comme tous les sites web, le mien conserve les historiques des connexions comprenant la date, l’heure, l’adresse IP et la signature de votre navigateur. Ces données ne sont — et ne seront jamais — exploitées et encore moins diffusées ou vendues.

Certaines pages de ce site laissent des témoins de connexion (cookies) sur votre ordinateur. Ces cookies sont là d’un besoin technique. Aucun traçage n’est effectué sur ces données.