Outils pour utilisateurs

Outils du site


wiki:flossmanuals:imprimante-thermique-esoterique:accueil

Boite à histoire ésotérique

  • Porteur(s) du projet : Léa GONTHIER (DSAA DG1), Damien MUTI (Prof. de Numérique)
  • Date : 03/2021
  • Contexte : Projet “Mémoire”
  • Fichiers :
  • Liens :
  • Capteurs/Actionneurs :
    • Bouton poussoir
    • Imprimante thermique

Intentions : explication du projet et objectifs

L'objectif est de réaliser une boite à histoire ésothérique afin de susciter la curiosité. À l'aide d'une imprimante thermique et d'un bouton groove, des histoires seront générés et imprimées grâce a Arduino lorsque l'utilisateur appuieras sur celui-ci. Ces histoires sont choisies aléatoirement dans une liste et imprimées.

Plans et schémas de fonctionnement

Programmes

ARDUINO

 //appel de la bibiothèque de l'imprimante, voir le tutoriel d'utilisation de l'imprimante sur adafruit : https://learn.adafruit.com/mini-thermal-receipt-printer

#include "Adafruit_Thermal.h"
#include "SoftwareSerial.h"
#define TX_PIN 6 
#define RX_PIN 5

SoftwareSerial mySerial(RX_PIN, TX_PIN); 
Adafruit_Thermal printer(&mySerial);    

 //une led est utilisée pour vérifier le bon fonctionnement du bouton. Ce n'est pas obligatoire. 
const int buttonPin = 2;     // le numéro de la broche utilisée par le bouton
const int ledPin =  13;      // le numéro de la broche utilisée par la led
int buttonState = 0;         // variable pour vérifier l'état du bouton 


//placez ici le titre de l'oeuvre
const char string_0[] PROGMEM = "TITRE \n";   
const char string_1[] PROGMEM = "TITRE \n";
const char string_2[] PROGMEM = "TITRE \n";
const char string_3[] PROGMEM = "TITRE \n";

// placez le texte de votre histoire/poème ici
// le texte doit être sur une seule ligne, voir le wiki du projet pour le formatage du texte et des caractères spéciaux
const char string_4[] PROGMEM = "Histoire,\n histoire.\n Histoire, \n histoire. \n";   
const char string_5[] PROGMEM = "Histoire,\n histoire.\n Histoire, \n histoire. \n";
const char string_6[] PROGMEM = "Histoire,\n histoire.\n Histoire, \n histoire. \n";
const char string_7[] PROGMEM = "Histoire,\n histoire.\n Histoire, \n histoire. \n";

//fin du mode histoire


// Tableau des textes

const char* const string_table[] PROGMEM = {string_0, string_1,string_2,string_3,}; // si besoin compléter les valeurs string manquantes 
const char* const string_table1[] PROGMEM = {string_4, string_5,string_6, string_7,}; // si mode cadavre exquis commentez pour désactiver

char buffer[1040];    // assurez-vous que la valeur indiquée soit supérieure au nombre maximum de caractères d'un string

int chiffreal = 0; // définit le nom de la valeur aléatoire pour déterminer le texte à utiliser


//fonction intégrant les différents textes à imprimer appelés ici vers 1, vers 2, ...
void vers1 () {

chiffreal = random(0,4); // sélectionne un string entre 0 et 4 

  {
    strcpy_P(buffer, (char*)pgm_read_word(&(string_table[chiffreal]))); // copie le string sélectionné aléatoirement de la table string_table
    printer.println(buffer); //imprime le string situé dans le buffer de la carte
    delay( 1000 ); // patiente une seconde
   }
  }

  void vers2 () {
  {
    strcpy_P(buffer, (char*)pgm_read_word(&(string_table1[chiffreal]))); // copie le string sélectionné aléatoirement de la table string_table1
    printer.println(buffer);
    delay( 1000 );
   }
  }

void setup() {
  // défini la broche de la led comme une sortie
  pinMode(ledPin, OUTPUT);
  // défini la broche du bouton comme une entrée
  pinMode(buttonPin, INPUT);
  // initialise l'imprimante
  mySerial.begin(19200);
  printer.begin();
}

void loop() {
  // vérifier l'état du bouton
  buttonState = digitalRead(buttonPin);

  // Si le bouton est pressé
  if (buttonState == HIGH) {
    // Allume la led
    digitalWrite(ledPin, HIGH);
    printer.wake(); //réveille l'imprimante
    printer.feed(1); // déroule le papier sans imprimer
    printer.boldOn(); // met le texte en gras
    vers1(); // imprime le premier texte
    vers2(); // imprime le second texte ...
//    vers3(); // en fonction du nombre d'éléments à afficher décommentez cette ligne. Si vous souhaitez afficher plus d'éléments pensez à créer la fonction correspondante plus haut (ex ici void vers4)
    printer.feed(1);
    printer.println("Laurent Colomb \n Vocabul\x82s"); // placez ici votre signature
    printer.boldOff(); // fin du texte en gras
    printer.feed(2);
  printer.sleep(); //met en sommeil l'imprimante
    
  } 
  else {
    // éteins la led et ne fais rien 
    digitalWrite(ledPin, LOW);


 }
  
 }

Réalisation de la maquette

vidéos, photos du making of…

wiki/flossmanuals/imprimante-thermique-esoterique/accueil.txt · Dernière modification: 2021/05/25 11:50 de lea_gonthier