Rep Price : Différence entre versions

De fablabo
Aller à : navigation, rechercher
(Une version avec Processing ?)
Ligne 203 : Ligne 203 :
 
   nav.trans.set(width/2, height/2, 0);
 
   nav.trans.set(width/2, height/2, 0);
 
    
 
    
   model = Primitive.sphere(50,18);
+
   model = Primitive.cylinder(121, 5, 100, true);
 
}  
 
}  
  

Version du 10 janvier 2013 à 17:31


fabrication de disque pour platine jouet de type Fisher Price avec boîte à musique.

JoliAfficheur.jpg

Contributeur·ice·s

User:[[contributeur::Thomas
La propriété « Contributeur » (comme le type de page) avec la valeur d’entrée « User:[[contributeur::Thomas » contient des caractères non valides ou est incomplète, et donc peut provoquer des résultats inattendus lors d’une requête ou d’un processus d’annotation.
|Thomas]]

Statut du projet

experimental

Statut de la publication

License

GPL v3.0

Inspiration

Fichiers source

Machines

Matériaux

Lien





Concept

Au début des années 1970, Fisher Price met en vente son magnifique 'record player': tourne disque qui permet de lire des chansons au doux son mécanique des lames métalliques de la boite à musique embarquée dans le bras de lecture. le Record Player Fisher Price


https://fr.wikipedia.org/wiki/Bo%C3%AEte_%C3%A0_musique

Parmi les petites ritournelles présentes sur les disques, on trouve des tubes intemporels pour les nenfants: vive le vent, souris verte et autres hymnes enfantins.

Pour Rep Price l'idée est de pouvoir produire de nouveaux disques sur lesquels serait imprimée les talents d'aujourd'hui: britney spears, justin bieber ou encore la fouine !

(À noter que fisher price réédite ses record player pour la Noél 2012 ! c'est dire la puissance intemporelle de ces petites machines : http://www.perpetualkid.com/fisher-price-record-player.aspx)

Comme les idées sont dans l'air, et que les inventions ne sont pas issues de l'esprit de quelques génies romantiques mais de travaux collectifs et d'échanges entre 'bidouilleurs', catalysé aujourd'hui par Internet (l'Histoire cependant retiendra un nom pour la postérité c'est plus simple pour les manuels scolaires), le jour ou j'ai décidé de graver mon premier disque pour le Record Player, un type à mis cette vidéo en ligne : http://hackaday.com/2012/05/24/fisher-price-record-player-plays-stairway-to-heaven/

Le travail était déjà fait... :-/

Tout de même fred27 a partagé une documentation pour réaliser à son tour un magnifique disque, ici sur intstructables: http://www.instructables.com/id/Custom-records-for-a-70s-toy-record-player/?ALLSTEPS

Merci à lui !

Mais heureusement pour nous, fred27 a donné de quoi faire tout ça en utilisant un logiciel propriétaire fonctionnant sur vindoze !!

Super, tout n'était donc pas perdu pour nous, il nous restait à faire une version libre pour les mellowmans amateurs de pingouins.

Expérimentations

J'ai tout d'abord tenté de réaliser un disque en utilisant la ReprapPrusa de PiNG ainsi qu'OpenScad pour créer la forme initiale.

Voici ici le code utilisé pour imprimer mon premier modèle de disque:

//REP_PRICE v.0.1 //Copyright (C) 2012 ((Thomas Bernardi)) // //Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon //les termes de la Licence Publique Générale GNU publiée par la Free Software //Foundation //(version 2 ou bien toute autre version ultérieure choisie par vous).

//Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, //ni explicite ni implicite, y compris les garanties de commercialisation ou //d'adaptation //dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.

//Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps que ce programme ; //si ce n'est pas le cas, écrivez à la Free Software //Foundation, Inc., 59 Temple Place, Suite 330, //Boston, MA 02111-1307, États-Unis.

rayonDisque=60.5; paroi = 0.5; $fn = 75; // pour affiner les contours (nbr de facettes) dans tout le prog


// méthode pour construire les 11 pistes module piste(rayon){

translate([0,0,3]){ difference(){ cylinder(r=rayon, h=2); cylinder(r=(rayon-paroi), h=2.1); }

} // on tire des valeurs aléatoires entre 0 et 360 degré randomVal = rands(0, 360, 6, rayon); randomVal2 = rands(0, 360, 6, rayon+2);

// je place des dents de façon aléatoire for( i = [0 : 5]){ dents(rayon, randomVal[i]); //dent d'un côté de la piste dents(rayon-1.4, randomVal2[i]); //dent de l'autre côté echo(randomVal[i]); }

} // création d'un module pour les 'dents' module dents(xPos, angle){ color([255,0,0]){ rotate(a=[0,0,angle]){ translate([xPos, 0, 3]){ cube([1.4, 1, 2]); } } } //echo( "Random Vector: ",angle, "xPos: ", xPos); }


//---------------------------------------------------------- // dessin de la forme principale difference(){ union(){ // le disque principal cylinder(r=rayonDisque,h=3);

// l'anneau extérieur translate([0,0,3]){ difference(){ cylinder(r=rayonDisque, h=2); cylinder(r=(rayonDisque-2.4), h=2.1); } }

// l'anneau intérieur translate([0,0,3]){ difference(){ cylinder(r=26.7, h=2); cylinder(r=(26.7-2.4), h=2.1); } }

// on execute la méthode piste avec une boucle for (i = [58.1 : 2.9 : 29.59]) { piste(i); }

} // les perçage du milieu union(){ cylinder(r=3.2, h=8, center=true); translate([21, 0, 0]){ cylinder(r=1.3, h=8, center=true); } translate([0, 21, 0]){ cylinder(r=1.3, h=8, center=true); } translate([-21, 0, 0]){ cylinder(r=1.3, h=8, center=true); } translate([0, -21, 0]){ cylinder(r=1.3, h=8, center=true); } } }


Pour l'instant le rendu d'impression avec la RepRap manque de précision, surement la qualité serait plus optimale avec la CNC... Une fois qu'elle sera réparée j'essaierai avec.

Vinyles numériques imprimés

Entre temps, une hackeuse (Amanda Ghassaei) a réussi à imprimer un vinyle avec une imprimante 3D:

http://www.rue89.com/zapnet/2012/12/27/pixies-nirvana-daft-punk-des-vinyles-crees-par-une-imprimante-3d-238137

Le premier vinyle numérique (qualité audio très modeste), la plupart des vinyles étant analogiques et reproduisant fidèlement le son.

La bonne nouvelle, c'est que le travail d'encodage a été réalisé avec Processing et la librairie modelbuilder :

http://www.instructables.com/id/3D-Printed-Record/step7/Make-Your-Own-Records/

Une version avec Processing ?

Une librairie développée par Marius Watz pour Processing permet d'exporter des fichiers .STL :

http://workshop.evolutionzone.com/2011/04/06/code-modelbuilder-library-public-release/

Après moult tentatives pour utiliser la librairie modelBuilder dans Processing 2b3, Processing 2b6 et Processing 2b7, je suis confronté à des problèmes de compatibilité :

NoSuchMethodError: You may be using a library that's incompatible to this version of Processing

Le problème viendrait de la classe MouseNav3D.java qui utilise une classe Java plus usité dans la dernière version de Processing

Event Handling has changed significantly in 2.0b7. Due to necessary changes in the OpenGL renderer, and to provide better compatibility with Android and JavaScript modes, we've added actual MouseEvent and KeyEvent classes to Processing. In previous releases, the MouseEvent and KeyEvent classes referred to the automatically imported "java.awt.MouseEvent" and "java.awt.KeyEvent". This is no longer the case, so your code will behave a little differently. The OpenGL renderer no longer uses AWT (and therefore doesn't use java.awt events), so it's a necessary change there. On Android, there's no such thing as java.awt. More details on this as I have time to write them up.

This also has implications for libraries, and the library developer pages have more information.

Je repasse donc avec succès sur Processing 1.5.1

Premier essai d'un export d'une forme simple en .STL

import unlekker.util.*; import unlekker.modelbuilder.*;

MouseNav3D nav; UGeometry model;

void setup () {

 size(600, 600, P3D);
 nav = new MouseNav3D(this);
 nav.trans.set(width/2, height/2, 0);
 
 model = Primitive.cylinder(121, 5, 100, true);

}

void draw() {

 background(100);
 lights();
 // call MouseNav3D transforms
 nav.doTransforms();
 fill(255);
 model.draw(this);

}

public void mouseDragged() {

 nav.mouseDragged();

}


public void keyPressed() {

 nav.keyPressed();
 if(key=='s') {
   model.writeSTL(this, "sphere.stl");
 }

}