Modifications

StartUpGenerator

17 593 octets ajoutés, 3 avril 2018 à 15:29
aucun résumé de modification
{{Projet
|status=Prototype
|status_pub=BrouillonPublié|image=29856081 1827286557336729 554850370 n.png
|description=Projet réalisé ds le cadre d'un workshop de l'Ecole de design Nantes Atlantique
|license=CC-by-sa-3.0 - Creative Commons Attribution CC-by-sa-3.0 France
|contributeurs=Marc Launay, Lisa mouen, Valentine Milliand, Maëva Hemon,
|inspiration=Post Tumblr & StartUp nation
|machines=Laser-Smoothignstech,
}}
== Contraintes == Cube de 20cm * 20cm <bigbr />StartupGénérator Interactions avec l’utilisateur <br /> Utilisation de capteurs pour recueillir des données <br /big>
Dialogue entre la carte éléctronique et une interface web <br /> == Contraintes Concept == Cube permettant à l'utilisateur de trouver une idée pour un futur projet de Startup.A travers une série de tests improbables le cube va définir un concept de startup personnalisé.L'utilisateur recevra son idée de Startup sur un ticket qu'il pourra garder avec lui.<br />
Cube Le principe réside dans l'absurdité de 20cm * 20cm Interractions la proposition finale sur le ticket qui se compose de phrases crées à partir de variables aléatoires. On se retrouve alors avec l’utilisateurUtilisation de capteurs pour recceuillir une Startup définie par des "buzzwords", des donnéesDialogue entre la carte éléctronique et une interface webtermes tendances qui en eux même ne veulent pas dire grand chose.
== Réalisation ==
'''Réalisation d'une pré-maquette pour valider le positionnement des modules interactifs.'''<br />
[[File:20180328_190350(0).jpg|700px]]
'''Création de la maquette finale découpée au laser avec un système d’emboitement par encoches.'''<br />
 
[[File:Sans titre-1.jpg|700px]]
[[Fichier:Montage|vignette]]
== Fonctionnement ==
'''6 étapes réparties sur 5 faces du cube:'''<br />
1) (LANCEMENT du programme)
<h4>2) Défis d'AUDACE</h4>
<h4>3) Défis d'EFFICACITE </h4>
<h4>4) Défis d'INVESTISSEMENT </h4>
<h4>5) Test de PERSONNALITE</h4>
6)(IMPRESSION du ticket)
 
<h3>Code processing random pour la production du ticket:</h3>
int irole, iconcept, istartup, iqualificatif, icible, idestiny ;
 
String role[] = { "Idea Shaper", "CEO", "DRH", "Happiness officer", "Disruptive Cofounder", "Digital Storyteller", "Head of Talent", "Disruptive Coach", "Ninja Consultant", "Assistante Marketing", "Software Engineer", "Team Leader", "Digital Influencer", "Talent Hunter", "Growthhacker", "Blockchain Guru", "Scrum Master", "Agile Specialist", "Collective Intelligence Booster", "Design Thinker", "Marketing Philosopher", "Super Weapon", "Emotion Creator", "Experience Designer", "Cosmic Dataminer", "Robot Pilot", "Trader de deals", "VR Architect", "Data Scientist", "Virtual Sociologist", "Community Manager", "Lead Brainstormer", "Data Analyst", "Digital Creator" };
String concept[] = { "Tinder", "Uber", "Deliveroo", "Bracelet connecte", "Activity tracker", "Fablab", "Incubateur", "Facebook", "Poele connectee", "Frigo connectee", "Robot", "Bitcoin", "Casque VR", "Imprimante 3D", "Crypto-monnaie", "Cigarette electronique", "Messagerie instantanee", "Airbnb", "Espace de coworking", "Hackathon", "Intelligence artificielle", "Paiement sans contact", "Blockchain", "Linkedin", "SmartTV", "Objet connecte", "Wearable", "Lunette de realite augmentee", "Brosse a dents connectee", "Serious game", "Plateforme de e-learning", "Outil de brainstorming", "Drone", "Chatbot" };
String startup[] = { "disruptif(ve)", "diabolique", "innovant(e)", "inspirant(e)", "sexy", "illegal(e)", "immersif(ve)", "malveillant(e)", "gamifie(e)", "viral(e)", "toxique", "ingenieux(se)", "virtuel(le)", "agressif(ve)", "agile", "tyrannique", "sonore", "dynamique", "hardcore", "violent(e)", "emouvant(e)", "geant(e)", "mignon(ne)", "vocal(e)", "en bluetooth", "auto-destructeur(ice)", "seduisant(e)", "polyvalent(e)", "genant(e)", "sportif(ve)", "social(e)", "gamifie(e)", "personnalise(e)", "emotionnel(le)" };
String cible[] = { "millenials", "animaux de compagnie", "la generation Y", "employes d usine", "enfants", "commerciaux", "directeurs d entreprises", "nouveaux-nes", "nourissons", "alcooliques", "collegiens", "professeurs", "depressifs", "orphelins", "ministres", "stagiaires sous-payes", "graphistes", "animaux en voie d extinction", "policiers", "macronistes", "gauchistes", "CRS", "secretaires", "lyceens", "enthousiastes du crossfit", "influenceurs Linkedin", "intermittents du spectacle", "enfants en bas age", "personnes agees", "fans de Johnny Hallyday", "Nazis", "Heterosexuels", "Robots", "Les 2000"};
String destiny[] = { "vous êtes rachete par Google car votre idee est trop innovante", "vous êtes rachete par Facebook car votre idee est trop innovante", "vous manquez de financements : votre startup coule", "vos fonds sont épuises : vous n'avez pas prevu assez large", "les investisseurs vous lachent : votre projet prend fin brutalement ", "le public n'etait pas pret pour autant d'innovation : personne n'achete votre produit", "la France n'etait pas prete pour votre innovation : votre startup rencontre un echec cuisant", "votre innovation tue un utilisateur : vous etes contraint de fermer boutique", "vous n'avez pas respecte le Code du Travail : votre startup croule sous les procès", "vos employes portent plainte contre vous pour exploitation abusive", "vous etes accuses de plagiat et perdez le proces", "vous avez trop de concurrence : impossible de vendre votre concept", "le prix que vous avez fixe est trop haut : personne n'achete votre produit", "vous vous disputez avec votre associe et il quitte la startup", "votre concept est inutile : votre startup coule", "votre concept est trop dangereux et nocif pour ses utilisateurs : votre startup fait faillite", "vos utilisateurs ne sont pas à la hauteur de votre concept : votre startup coule", "votre concept releve du genie mais vous etes incompris", "l'incubateur qui vous heberge vous vire des locaux", "le stagiaire de votre startup efface la sauvegarde du cloud qui contenait tous vos fichiers d'entreprise", "le community manager a supprime la page Linkedin de votre startup : vous n'existez plus", "le scrumboard est tombe sur vos collaborateurs : vous perdez 80% de votre effectif et etes contraint de fermer votre startup", "vous mourrez ecrase par votre livraison mensuelle de post-its : sans CEO, votre startup ne peut pas survivre", "un brief avec vos investisseurs tourne mal : vous projetez vos photos de vacances au lieu de votre powerpoint convaincant", "votre business model n'est pas rentable : vous faites faillite", "vous n’etes ni passionne, ni passionant : votre startup tombe à l'eau", "votre concept est totalement illegal : vous êtes arrete par la police, vous et vos collaborateurs", "vous perdez un proces contre votre ancien stagiaire qui vous accuse de l'avoir exploite", "vous etes invites au CES mais votre concept est moque par toutes les autres startups : vous perdez en credibilite et faites faillite", "votre scrum master vous lache : plus personne ne travaille et votre startup coule", "vous vendez des donnees confidentielles sur vos utilisateurs a d'autres entreprises mais un lanceur d'alerte vous denonce : votre reputation est ruinee", "vous avez besoin de designers mais aucun d'eux n'accepte d'être paye en influence et en experience : votre projet ne peut pas avancer", "votre community manager poste accidentellement des photos compromettantes de vous sur le compte Twitter de la startup : vous perdez en credibilite", "vous procrastinez trop et le projet finit par ne jamais voir le jour" };
String text1, text2, text3, text4;
 
void setup()
{
noLoop();
}
 
void draw() {
//entiers aléatoires
int entier1 = int(random(0, 34));
int entier2 = int(random(0, 34));
int entier3 = int(random(0, 34));
int entier4 = int(random(0, 34));
int entier5 = int(random(0, 34));
int entier6 = int(random(0, 34));
//role
text1 = "Role : " + role[entier1];
text2 = "Concept : " + concept[entier2] + " " + startup[entier3] + " pour " + cible[entier4];
text3 = "Duree de vie : " + entier5 + " mois";
text4 = "Cause de faillite : " + destiny[entier6] ;
//print
println(text1);
println(text2);
println(text3);
println(text4);
println("_");
}
 
void keyPressed() {
redraw();
}
 
== //0 Lancement ==
 
'''Objectifs:''' <br //0 Lancement>Démarrer le programme<br />
Objectifs'''Matériels: Démarrer ''' <br />Panneau de bois suivant le programmemodel ci-dessous <br />
Matériels'''Principe: Panneau de bois suivant le model ci-dessous''' <br />
Principe:
si l'utilisateur appuie sur le bouton
--> jouer Piste_1<br />
'''Speech: '''<br /> Vous pensez être le Steve Jobs ou le Elon Musk de demain ? Vous êtes accro à LinkedIn, vous n’avez peur de rien, et êtes prêt à tout sacrifier pour faire partie de la Start-up Nation ?Vous avez tout, sauf une idée révolutionnaire ? Notre générateur de start-up est là pour vous aider.
Pour avoir un aperçu de votre futur, il vous faudra passer un test pour évaluer les 4 qualités qui feront de vous l’entrepreneur le plus disruptif de l’année.<br />
== //1 Audace ==
[[File:29884403_1846219175423453_355768318_o.jpg|700px]]
'''Objectifs:''' <br />
Tester la capacité de l’utilisateur à prendre un risque.
Capter l’appuit sur un bouton insérer dans un piège à sourits <br />
 
'''Matériels:''' <br />
Panneau de bois suivant ce model -->
Bouton
LED
Piège à sourits armé mais sécurisé pour ne pas se déclencher<br />
 
'''Principe:''' <br />
 
<capter la pression>
Si l’utilisateur appuie sur le bouton pendant 3 secondes
=> Led s’allume
=> Joue Piste 2<br />
 
'''Speech:'''<br />
Un bon startupper doit être audacieux et prêt à relever tous les défis : vous n’avez peur de rien. Alors prenez votre courage à 2 mains et restez appuyé sur ce bouton pendant 3 secondes. Rester appuyé au min 3 s sur un bouton sous un piège à souris.<br />
 
 
 
== //2 Efficacité ==
'''Objectifs:''' <br />
Concours d’ajout de contact sur Linkedin en 10 secondes.
Compter le nombre clics sur le bouton dans le temps impartis à l’utilisateur. <br />
 
'''Matériels:''' <br />
Panneau de bois suivant ce model
Bouton
LED<br />
 
'''Principe:''' <br />
 
Si l’utilisateur appuie sur le bouton 1 2 3 4 fois pendant 10 secondes
<capter la pression>
while 10 sec:
=> int = int + 1
=> return Led s’allume
=> Joue Piste 3<br />
 
'''Speech:'''<br />
L’audace n’est rien sans un bon réseau. Vous aimez étendre votre reach, et vous passez vos journées à growthhacker vos comptes de réseaux sociaux? Combien de demandes d’ajouts LinkedIn pouvez-vous accepter en 10 secondes?
<br />
 
== //3 Investissement ==
'''Objectifs:''' <br />
Inviter l’utilisateur à investir dans sa startup pour la lancer.
Déposer une pièce dans une fente sur la face de la boite.
<br />
 
'''Matériels:''' <br />
Panneau de bois suivant ce model
Detecteur optique «HOA1881-012»
LED<br />
 
'''Principe:''' <br />
 
Si l’utilisateur met une pièce
<capter la presence>
=> Led s’allume
=> Joue Piste 4
<br />
 
'''Speech:'''<br />
Pour carry un projet solide, votre network ne suffira pas, il faut faire le leap of faith financier nécessaire pour planter les graines de la réussite. Mettez une pièce dans la fente pour continuer le test.
<br />
== //4 Personnalité ==
[[File:5.jpg|700px]]
'''Objectifs:''' <br />
«Lire» les lignes du doigt de l’utilisateur.
Capter la pression sur une plaque en verre, terminer le processus de tests, imprimer le ticket et envoyer un tweet avec le contenu du ticket sur le compte «Startupr».
Enceinte guidant l’utilisateur avec une bande son. <br />
 
'''Matériels:''' <br />
Panneau de bois suivant ce model
Anneau LED «NEO PIXEL RING»
Capteur de pression rond
Haut-parleur
<br />
 
'''Principe:''' <br />
 
Si l’utilisateur pose son doigt
<capter une force>
=> collier de Led s’allume pendant 5 sec
=> Envoyer à IFFTT tweet
<br />
 
=> Role (« random »)
=> Concept (« random » + « random » + »random »)
=> Durée de vie ( « (random(2 - 24) « + « mois »)
=> Cause (« random » + « random » )
<br />
 
=> Joue Piste 5<br />
 
'''Speech:'''<br />
Dans la start-up nation, rien n’est plus précieux que votre personnalité. Vous êtes unique, vous êtes l’élite, mais plus important encore : vous êtes vous-mêmes. Votre entreprise est irremplaçable et exceptionnelle, tout comme vous. Posez votre main sur le scanner de personnalité pour générer votre startup de demain.
<br />
 
== //5 Imprimer ==
[[File:4.jpg|700px]]
 
'''Objectifs:''' <br />
Imprimer un ticket résumant sa startup générée à partir des tests réalisés au préalable.<br />
 
'''Matériels:''' <br />
Panneau de bois suivant ce model
Imprimante thermale «YM TECH BT-2 THERMAL PRINTER»
Rouleau de papier
Assemblage Shield + Arduino Mega <br />
 
'''Principe:''' <br />
 
Le ticket doit contenir:
Le concept de start-up --> Nous + “Variable1” + “Variable2” + “Variable3”+»Variable4»
Le rôle dans la start-up --> Variable1
La cause de faillite -->
La durée d’existence de la startup --> 24 mois <br />
 
'''Speech:'''<br />
Un bon startupper doit être audacieux et prêt à relever tous les défis : vous n’avez peur de rien. Alors prenez votre courage à 2 mains et restez appuyé sur ce bouton pendant 3 secondes.
Rester appuyé au min 3 s sur un bouton sous un piège à souris.<br />
[[File:6.jpg|700px]]
 
== Branchement & Programmation ==
 
[[File:29894325_1825262810872437_162955786_o.png|700px]]<br />
<br />
 
 
//START UP GENERATOR
// le Cube connecté qui prédit l'avenir de votre startup
 
//LIBRAIRIES IMPRIMANTES : les ports peuvent être redéfinis ci-dessous
#include "SoftwareSerial.h"
#include "Adafruit_Thermal.h"
#include <avr/pgmspace.h>
 
//LIBRAIRIES AUDIO : attention à ne pas utiliser les ports ci-dessous
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>
#define BREAKOUT_RESET 9 // VS1053 reset pin (output)
#define BREAKOUT_CS 10 // VS1053 chip select pin (output)
#define BREAKOUT_DCS 8 // VS1053 Data/command select pin (output)
// These are the pins used for the music maker shield
#define SHIELD_RESET -1 // VS1053 reset pin (unused!)
#define SHIELD_CS 7 // VS1053 chip select pin (output)
#define SHIELD_DCS 6 // VS1053 Data/command select pin (output)
// These are common pins between breakout and shield
#define CARDCS 4 // Card chip select pin
// DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
#define DREQ 3 // VS1053 Data request, ideally an Interrupt pin
Adafruit_VS1053_FilePlayer musicPlayer =
// create shield-example object!
Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
 
 
 
//BOUTONS
 
//bouton piste 1
const int buttonPin1 = 39;
int buttonState1 = 0;
 
//bouton piste 2
const int buttonPin2 = 2;
int buttonState2 = 0;
 
//bouton piste 3
const int buttonPin3 = 16;
int buttonState3 = 0;
 
//capteur imprimer
const int buttonPressure = A0;
int pressureState = 0;
 
//tweet
//const int tweetPin = 41;
//int tweetState = 0;
 
//led
const int ledPin13 = 13;
 
 
//PRINTER
//Paramètres de l'imprimante
String s;
int n;
boolean b = false;
Adafruit_Thermal printer(5, 22); //ports utilisés : 5 = fil rouge, 22 = fil jaune;
 
 
//millis
unsigned long previousMillis = 0;
unsigned long currentMillis;
unsigned long interval = 5000; //delay pour la led
 
 
void setup() {
 
//PRINTER
Serial.begin(9600);
printer.begin();
 
//Initialisation entrée et sorties
pinMode(ledPin13, OUTPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPressure, INPUT);
pinMode(buttonPin3, INPUT);
//pinMode(tweetPin, OUTPUT);
 
//AUDIO
if (! musicPlayer.begin()) { // initialise the music player
Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
while (1);
}
Serial.println(F("VS1053 found"));
if (!SD.begin(CARDCS)) {
Serial.println(F("SD failed, or not present"));
while (1); // don't do anything more
}
// list files
printDirectory(SD.open("/"), 0);
musicPlayer.setVolume(20, 20);
musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // DREQ int
 
}
 
void loop() {
 
//Initiatlisation - Vérifications
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
//tweetState = digitalRead(tweetPin);
pressureState = analogRead(buttonPressure);
//Serial.print("val:");
//Serial.println(pressureState);
 
//algorithme
 
//PART 1 : La piste 1 se lance
if (buttonState1 == HIGH) {
digitalWrite(ledPin13, HIGH);
musicPlayer.playFullFile("track001.mp3");
Serial.println("bouton1appuyé");
}
 
//PART 2 : la piste 2 se lance
if (buttonState2 == HIGH) {
musicPlayer.playFullFile("track002.mp3");
Serial.println("bouton2appuyé");
/*au bout de 3 secondes la led s'allume
currentMillis = millis();
 
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
//Led
digitalWrite(ledPin13, LOW);
unsigned long currentMillis = millis();
}
musicPlayer.playFullFile("track003.mp3");*/
}
 
//PART 3 : la piste 3 se lance
//Serial.println(buttonState3);
 
if (buttonState3 == HIGH) {
digitalWrite(ledPin13, HIGH);
musicPlayer.playFullFile("track004.mp3");
Serial.println("bouton3appuyé");
}
 
 
//PART 4 : l'imprimante imprime + envoie IFFTT
if (pressureState > 500) {
digitalWrite(ledPin13, LOW);
b = true; // lancer l'impression
//tweetState = 1;
//tweetState = 0;
}
 
 
//FONCTION IMPRIMANTE
if (b) {
Serial.println("button2");
//Serial.println("hello");
n = random(34);
ligne1(n);
printer.feed(1);
printer.boldOn();
n = random(34);
ligne2(n);
n = random(34);
printer.boldOff();//text en gras
ligne3(n);
printer.feed(1);
n = random(34);
ligne4(n);
printer.feed(1);
n = random(34);
ligne5(n);
 
printer.feed(5); //space
printer.sleep(); // Tell printer to sleep
printer.wake(); // MUST call wake() before printing again, even if reset
printer.setDefault(); // Restore printer to defaults
b = false;
}
 
 
}
 
 
/// File listing helper
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile(); if (! entry) { //no more files //Serial.println("*nomorefiles*"); break; } for (uint8_t i = 0; i < numTabs; i++) { Serial.print('\t'); } Serial.print(entry.name()); if (entry.isDirectory()) { Serial.println("/"); printDirectory(entry, numTabs + 1 Audace ); } else { // files have sizes, directories do not Serial.print("\t\t"); Serial.println(entry.size(), DEC); } entry.close(); }}
//2 Efficacité
//3 Investissementimprimer une led : test
//4 Personnalité
/*buttonState1 = digitalRead(22); //Serial.println(buttonState1); if (buttonState1 == HIGH) { // turn LED on: digitalWrite(ledPin13, HIGH); } else { // turn LED off: digitalWrite(ledPin13, LOW); }*/5 Imprimer
906
modifications