Modifications

StartUpGenerator

13 802 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 /big>
Utilisation de capteurs pour recueillir des données <br /> 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 ==
'''Matériels:''' <br />
Panneau de bois suivant le model ci-dessous<br />
'''Principe:''' <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.
'''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 />
Tester la capacité Concours d’ajout de l’utilisateur à prendre un risquecontact sur Linkedin en 10 secondes.Capter l’appuit Compter le nombre clics sur un le bouton insérer dans un piège le temps impartis à sourits l’utilisateur. <br />
'''Matériels:''' <br />
Panneau de bois suivant ce model -->
Bouton
LEDPiè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 1 2 3 4 fois pendant 3 10 secondes<capter la pression>while 10 sec:=> int = int + 1=> return Led s’allume=> Joue Piste 23<br />
'''Speech:'''<br />
Un L’audace n’est rien sans un bon startupper doit être audacieux réseau. Vous aimez étendre votre reach, et prêt vous passez vos journées à relever tous les défis : growthhacker vos comptes de réseaux sociaux? Combien de demandes d’ajouts LinkedIn pouvez-vous n’avez peur de rien. Alors prenez votre courage à 2 mains et restez appuyé sur ce bouton pendant 3 accepter en 10 secondes. ?Rester appuyé au min 3 s sur un bouton sous un piège à souris.<br /> 
== //3 Investissement ==
'''Objectifs:''' <br />
Tester la capacité de Inviter l’utilisateur à prendre un risqueinvestir dans sa startup pour la lancer.Capter l’appuit Déposer une pièce dans une fente sur un bouton insérer dans un piège à sourits la face de la boite.<br />
'''Matériels:''' <br />
Panneau de bois suivant ce model Detecteur optique «HOA1881-->Bouton012»LEDPiège à sourits armé mais sécurisé pour ne pas se déclencher<br />
'''Principe:''' <br />
Si l’utilisateur met une pièce<capter la pressionpresence> Si l’utilisateur appuie sur le bouton pendant 3 secondes
=> Led s’allume
=> Joue Piste 24<br />
'''Speech:'''<br />
Un bon startupper doit être audacieux et prêt à relever tous Pour carry un projet solide, votre network ne suffira pas, il faut faire le leap of faith financier nécessaire pour planter les défis : vous n’avez peur graines de rienla réussite. Alors prenez votre courage à 2 mains et restez appuyé sur ce bouton pendant 3 secondesMettez une pièce dans la fente pour continuer le test. Rester appuyé au min 3 s sur un bouton sous un piège à souris.<br />
== //4 Personnalité ==
[[File:5.jpg|700px]]
'''Objectifs:''' <br />
Tester la capacité «Lire» les lignes du doigt de l’utilisateur à prendre un risque.Capter l’appuit la pression sur une plaque en verre, terminer le processus de tests, imprimer le ticket et envoyer un bouton insérer dans un piège à sourits 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 -->BoutonAnneau LED «NEO PIXEL RING»Capteur de pression rondLEDHaut-parleurPiège à sourits armé mais sécurisé pour ne pas se déclencher<br />
'''Principe:''' <br />
Si l’utilisateur pose son doigt<capter la pressionune force> Si l’utilisateur appuie sur le bouton => collier de Led s’allume pendant 3 secondes5 sec=> Led s’allumeEnvoyer à IFFTT tweet<br /> => Role (« random »)=> Concept (« random » + « random » + »random »)=> Durée de vie ( « (random(2 - 24) « + « mois »)=> Cause (« random » + « random » )<br /> => Joue Piste 25<br />
'''Speech:'''<br />
Un bon startupper doit être audacieux 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 prêt à relever tous les défis : exceptionnelle, tout comme vous n’avez peur de rien. Alors prenez Posez votre courage à 2 mains et restez appuyé main sur ce bouton pendant 3 secondesle scanner de personnalité pour générer votre startup de demain. Rester appuyé au min 3 s sur un bouton sous un piège à souris.<br /> == //5 Imprimer ==[[File:4.jpg|700px]] 
'''Objectifs:''' <br />
Tester la capacité de l’utilisateur Imprimer un ticket résumant sa startup générée à prendre un risquepartir des tests réalisés au préalable.Capter l’appuit sur un bouton insérer dans un piège à sourits <br />
'''Matériels:''' <br />
Panneau de bois suivant ce model Imprimante thermale «YM TECH BT-->Bouton2 THERMAL PRINTER»LEDRouleau de papierPiège à sourits armé mais sécurisé pour ne pas se déclencherAssemblage Shield + Arduino Mega <br />
'''Principe:''' <br />
<capter Le ticket doit contenir:Le concept de start-up --> Nous + “Variable1” + “Variable2” + “Variable3”+»Variable4»Le rôle dans la pressionstart-up --> Variable1Si l’utilisateur appuie sur le bouton pendant 3 secondes=La cause de faillite --> Led s’allume=La durée d’existence de la startup --> Joue Piste 224 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);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}
 
 
//imprimer une led : test
 
 
/*buttonState1 = digitalRead(22);
//Serial.println(buttonState1);
if (buttonState1 == HIGH) {
// turn LED on:
digitalWrite(ledPin13, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin13, LOW);
}*/
906
modifications