Projet:STROBODISQUE

De Le Glitch Wiki
Aller à : navigation, rechercher

Photos

Schéma

Croquis Arduino

/* 
 *  ATTINY85, internal 16MHz
 *  
 */
#include <TimerOne.h>

#define led_pin 1
#define OptoPin 2
#define InterruptPin2 0
#define TimePin A3
volatile int Strobe = 0 ;
int StrobTime=0 ;

void flash(boolean output)
{
  digitalWrite(led_pin, output);
}

void setup() {
  pinMode(led_pin, OUTPUT);
  pinMode(OptoPin, INPUT_PULLUP);

  delay(500) ;
  for (byte x=0 ; x<2 ; x++) {  
    flash(HIGH) ; delay(10) ;
    flash(LOW) ; delay(10) ;
  }
  
  Timer1.initialize(10); //0.1ms
  Timer1.attachInterrupt(OneMs);

  attachInterrupt(InterruptPin2,Opto,FALLING) ;
}

void loop() {
  StrobTime=analogRead(TimePin) + 1 ; 
  delay(10) ;
}

void Opto(void) {
  Strobe=StrobTime ;
}
void OneMs(void) {
  if (Strobe>0) {
    Strobe-- ;
    flash(HIGH) ;
  }
  else flash(LOW) ;
}

Pièces mécaniques

OpenSCAD

DCY=60 ;
E=2 ;
E2=3 ;
C=7 ;
NbFentes=20 ;
R=7 ;

module CubeIn() {
    color("green")
    cube([D,D,10],center=true) ;
}

module CubeOut() {
    color("Blue")
    cube([C,C,E+.1],center=true) ;
}

module Cercle1() {
    difference() {
        union() {
            cylinder(E,d=DCY,center=true) ;
            cylinder(E2,d=11) ;    
            cylinder(E2+R,d=7.9) ; //8mm   
        }
        cylinder(100,d=3.5,center=true) ;
        CubeOut() ;
        for(A=[0:360/NbFentes:359]) rotate([0,0,A]) 
            translate([DCY/2,0,0]) cube([10,3,E+1],center=true) ;
    }
}

//Cercle1() ;
D=5 ;
E3=10.5 ;
Ep=3 ;
module Cercle2() {
    difference() {
        union() {
            cylinder(Ep,d1=DCY,d2=DCY-4,center=true) ;
            cylinder(E3,d=11) ;    
            cylinder(E3+R,d=8) ; //8mm   
            translate([0,0,E3+R]) CubeIn() ;
        }
        cylinder(100,d=3.5,center=true) ;
        CubeOut() ;
        for(A=[0:360/6:359]) rotate([0,0,A]) 
            translate([DCY/3,0,0]) cylinder(100,d=3,center=true) ;
    }
}

L=35 ;
module Axe(){
    difference() {
        union() {
            cylinder(L,d=11) ;    
            translate([0,0,L+E/2-.1]) scale(0.9) CubeOut() ;
        }
        cylinder(100,d=4,center=true) ;
        scale(1.1) translate([0,0,2]) CubeIn() ;
    }
}


Cercle2() ;

translate([0,0,23])  Axe() ;

translate([0,0,70]) Cercle1() ;


module portepotard() {
    X=18 ;
    Y=58 ;
    Z=16 ;
    difference() {
        cube([X,Y,Z],center=true) ;
        for(C=[1,-1])
            translate([0,C*(Y-7),2]) cube([X+.1,Y,Z],center=true) ;
        for(C=[1,-1])
            translate([0,C*(Y/2-3),0]) cylinder(Z+.1,d=3.5,center=true) ;
        translate([0,0,-2]) cube([X+.1,Y-17,Z],center=true) ;
        
        cylinder(Z+.1,d=7,center=true) ;
        translate([0,8,0]) cylinder(Z+.1,d=3,center=true) ;
    }
    
    difference() {
        union() {
            translate([0,0,-Z/2]) cylinder(3,d=40) ;
            translate([0,0,-Z/2]) cylinder(8,d=9) ;
        }
        translate([0,0,-Z/2]) cylinder(Z,d=6) ;
         
        for(A=[0:360/60:359]) rotate([0,0,A])
            translate([20,0,-Z/2-.1]) cylinder(5,d=1.5) ;
   }
}

translate([0,-60,0]) portepotard() ;