Show Posts
Pages: [1] 2
1  Community / Exhibition / Gallery / Hors Piste Tokyo - LED Immersion on: July 02, 2012, 05:57:15 pm
Hi everybody,

Last month we make an installation in Daikaynama Tokyo.
There is 25 elements make with aluminium profiles, led strip and some electronics components.
Leds are connected to an home-made box :

All was built in France and moved to Tokyo



Leds are drive with a visual c software which send serial command to the arduino arduino 2560

Built by Jean Michel Mercier aka Barbudor

Check the video
Hope you will like it
https://vimeo.com/44428571
http://rdvcollectif.com/
2  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 04:04:01 pm
alors le support adafruit me dit de commander par rouleau de 5 mètre.
ça va m'obliger à souder certains élements avec les mètres restant sur chaque bobine.
JM est-ce que tu me conseille de passer commande sur ce produit ?
3  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 01:35:41 pm
Ok merci du conseil, je pense avoir trouvé le produit adapté chez adafruit, on peut commander la longueur de notre choix, il me reste à connaitre les délais de livraison, je viens d'envoyer un mail.
Que pense tu de ce produit :
http://adafruit.com/products/306
4  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 12:56:00 pm
Oui du coup c'est fort dommage pour ces bandeaux non sectionnable.
Le délai est assez short, la structure doit être amené le 23 mai a tokyo, pour être opérationnelle le 10 juin.
Donc il faudrait que j'arrive à me décider rapidement sur le choix du modèle de bandeaux.
Sinon j'avais vu ce type de bandeau
j'avais vu ce produit, mais il n'est pas précisé si on peut le couper. http://www.kryona.fr/produit_detail?num_produit=19&famille=5
je n'ai pas l'impression que planetled propose du bandeau led par led.
http://www.planeteleds.fr/catalogue/130-bandes-a-leds-flexibles/219-bande-classique-au-metre/260-rgb/489-barre-flexible-rgb-de-1m.html
je vais faire une recherche plus approfondie en espérant trouver le produit de mes rêves.
5  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 12:05:14 pm
re alien
tu peux développer quand tu dis très grosse alim, je n'arrive pas du coup à me rendre compte
je suis nul en éléctricité  smiley-confuse

EDIT: petite précision, je ne sais pas si elle a son importance, mais la structure sera testée à Tokyo, le voltage est différent (110 V)
6  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 11:56:08 am
au temps pour moi,
si le bandeau est le même que celui utilisé par lab3 il doit avoir 150 led pour 5m soit 30 led par mètre
7  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 11:50:34 am
J'ai trouvé les particularités du produit utilisé ici :http://www.led-light-shop24.de/products/en/led-Strip-Band-digital-magic/Led-Band-Led-Strip-digital-wasserfest-%E2%80%9Emagic-strip%E2%80%9C-500cm.html
Tension: 12 V
Puissance: 14,4 watts / m
Dimensions: 10mm x2mm x500cm
angle: environ 120 °
distance: 14mm
la flexibilité: angle de 90 ° dans le rayon minimal R = 15mm
Puissance totale: 72Watt à distance totale de 5m

J'ai donc l'impression que la distance entre chaque led est de 1,4 cm soit environ 70 led au mètre et donc 140 led pour 2m (ce qui semble être beaucoup)
je vais essayer de voir comment fonctionne le SPI.

Niveau hardware, et surtout alimentation, tu penses que je doit alimenter chaque bandeaux indépendamment ?
8  International / Français / Re: Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 09:41:46 am
Salut barbudor,

En effet tu poses les bonnes questions !
Comme j'aimerai utiliser les bandeaux dans diverses configurations il se peut qu'il y'ai de grandes distances entre eux. J'imagine une surface max de 10m par 10m avec un espacement de minimum 1m entre chaque bandeaux. J'avais aussi envisager d'utiliser plusieurs arduino, cependant je ne me suis pas penché sur : comment elles communiquent entre elles.

- Par bandeaux j'aimerai avoir entre 60 et 100 led (sur 2m)
- Pour l'instant et pour simplifier le programme, j'aimerai piloter juste le bandeau en entier (couleur, on/off, fadeIn fadeOut), mais dans une logique d'évolution j'aimerai par la suite pouvoir controler chaque led. Etant donné que la différence de prix entre des led stip analogique et digital n'est pas très conséquente, peut être devrais-je investir directement dans du bandeaux digital.
Comme tu l'a dis, l'idée pour l'instant est d'arriver à créer des ambiances lumineuse, dans des contextes différents (intérieur, extérieur). C'est un projet que je mène dans le cadre de mon diplome en architecture smiley
- Les LED serait en RGB car le but est d'associer le ressenti des usagers en fonction du mode activé (couleur, dynamisme…)

9  International / Français / Programmer plusieurs bandeaux de LED (led strip) avec arduino on: May 08, 2012, 08:46:37 am
Salut à tous,

je vous explique mon projet,
je dispose de 30 bandeaux de led de 2m chacun.
j'aimerai grâce à arduino, programmer différents modes à la manière du projet de la table daft punk
http://www.geektoolbox.fr/2010/08/14/daftouf-table-kit-arduino-daft-punk-table/

une fois que les bandeaux sont disposés dans l'espace (ex: http://egeokal.files.wordpress.com/2010/06/volume011.jpg)
les gens peuvent donner leur ressenti en fonction du mode qui est joué.
pour cette partie "interactive" je récupère l'info de l'arduino via usb que j'envoi sur un serveur node.js.
j'ai testé avec un bandeau de led, aucun problème, ca marche.

voici un petit schéma qui résume le fonctionnement du projet et mes talents de graphiste


Maintenant j'aimerai appliquer ce principe avec 30 bandeaux. Et là niveau électronique je bloque.
Est-il préférable d'utiliser des bandeaux de led digital ou analogique ? (sans parler du cout, ou du fait que les bandeaux digital permettent aussi de piloter le bandeau led par led)
- bandeau digital : http://interface.khm.de/index.php/news/digital-addressable-led-strip-arduino/
- bandeau analogique : http://www.ladyada.net/products/rgbledstrip/

Comment je peux envoyer le signal a chaque bandeaux ? (comme sur le projet daftout table, les datasheet TLC5940 sont ils adaptés ?)
Dois-je alimenter chaque bandeaux indépendamment pour garder une bonne intensité lumineuse ?

En quelque sorte, es ce qu'un expert en électronique serait capable de m'aiguiller,
car étant donné le montant mis en jeu, j'aimerai ne pas me tromper dans mes choix techniques


10  International / Français / Re: Barrière Infrarouge + Waveshield on: February 06, 2012, 04:54:46 pm
OK désolé pour le temps de réponse.
J'utilise ce code à l'interieur d'une maquette d'architecture à échelle 1.

Dans la partie "case" j'ai remplacé la fonction playcomplete par la fonction playfile :

Code:
void loop() {
   int Song = random(0, 9);  // choose a random song
   int Coupure = digitalRead(PIN_DETECT);
   
   if (Coupure == LOW) {
   switch (Song)
   {
      case 0: playfile("1.WAV") ; break;
      case 1: playfile("2.WAV") ; break;
      case 2: playfile("3.WAV") ; break;
      case 3: playfile("4.WAV") ; break;
     case 4: playfile("5.WAV"); break;
     case 5: playfile("6.WAV"); break;
     case 6: playfile("7.WAV"); break;
     case 7: playfile("8.WAV"); break;
   }
}
}


Du coup lorsque la personne traverse le faisceau, le son s'enclenche. Cependant il est joué pendant la durée totale de la coupure du faisceau, soit quelque dixième de son (la personne passe, elle ne reste pas dans le champ du faisceau). Dans mon cas j'aimerai que le son joué dure au moins 10 secondes. j'ai donc pensé à procéder de cette manière :

Code:
case 0: playfile("1.WAV") ; delay(10000); break;

pour chacun des case... Le problème c'est que ça ne marche pas  :smiley-yell : le wave shield joue tout les sons 10 secondes, en les enchainant, et en plus sans être déclenché par le faisceau. (les sons se lancent dès que j'upload le code)

Je joint le code de la fonction playfile, si quelqu'un a une idée pour m'aider à m'avancer, ce serait chouette

Code:
void playfile(char *name) {
 
  // see if the wave object is currently doing something
  if (wave.isplaying) { // already playing something, so stop it!
   wave.stop();// stop it
  }
  // look in the root directory and open the file
  if (!f.open(root, name)) {
    putstring("Couldn't open file "); Serial.print(name); return;
  }
  // OK read the file and turn it into a wave object
  if (!wave.create(f)) {
    putstring_nl("Not a valid WAV"); return;
  }
 
  // ok time to play! start playback
   wave.play();
}
11  International / Français / Re: Barrière Infrarouge + Waveshield on: January 25, 2012, 08:28:09 am
Du coup pour fusionner le programme de la barrière IR,
j'importe la librairie dans le premier programme + les define

Code:
#include <FatReader.h>
#include <SdReader.h>
#include <avr/pgmspace.h>
#include "WaveUtil.h"
#include "WaveHC.h"
#include <IRremote.h>


SdReader card;    // This object holds the information for the card
FatVolume vol;    // This holds the information for the partition on the card
FatReader root;   // This holds the information for the filesystem on the card
FatReader f;      // This holds the information for the file we're play

WaveHC wave;      // This is the only wave (audio) object, since we will only play one at a time

#define DEBOUNCE 100  // button debouncer
#define PIN_IR 3
#define PIN_DETECT 7
#define PIN_STATUS 13

IRsend irsend;
// this handy functi

Ensuite dans le void setup je rajoute les fonction pinMode du PIN_DETECT et PIN_STATUS ainsi que irsend...
Code:
  pinMode(2, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(PIN_DETECT, INPUT);
  pinMode(PIN_STATUS, OUTPUT);
  irsend.enableIROut(38);
  irsend.mark(0);
 

Dans la partie void_loop pour le moment je n'ai rien changé j'ai ça :
Code:
void loop() {
  //putstring(".");            // uncomment this to see if the loop isnt running
  switch (check_switches()) {
        case 1:
    {
   int Song = random(0, 4);  // choose a random song
   switch (Song)
   {
      case 0: playcomplete("1.WAV"); break;
      case 1: playcomplete("2.WAV"); break;
      case 2: playcomplete("3.WAV"); break;
      case 3: playcomplete("4.WAV"); break;
      case 4: playcomplete("5.WAV"); break;
   }
}
      break;
    case 2:
      playcomplete("2.WAV");
      break;
    case 3:
      playcomplete("3.WAV");
      break;
    case 4:
      playcomplete("4.WAV");
      break;
    case 5:
      playcomplete("5.WAV");
      break;
    case 6:
      playcomplete("6.WAV");
  }
}

byte check_switches()
{
  static byte previous[6];
  static long time[6];
  byte reading;
  byte pressed;
  byte index;
  pressed = 0;

  for (byte index = 0; index < 6; ++index) {
    reading = digitalRead(14 + index);
    if (reading == LOW && previous[index] == HIGH && millis() - time[index] > DEBOUNCE)
    {
      // switch pressed
      time[index] = millis();
      pressed = index + 1;
      break;
    }
    previous[index] = reading;
  }
  // return switch number (1 - 6)
  return (pressed);
}

J'imagine que je peut virer la partie byte check_switches() car cette variable ne m'est plus utile. il me reste donc
Code:
void loop() {
  //putstring(".");            // uncomment this to see if the loop isnt running
  switch (check_switches()) {
        case 1:
    {
   int Song = random(0, 4);  // choose a random song
   switch (Song)
   {
      case 0: playcomplete("1.WAV"); break;
      case 1: playcomplete("2.WAV"); break;
      case 2: playcomplete("3.WAV"); break;
      case 3: playcomplete("4.WAV"); break;
      case 4: playcomplete("5.WAV"); break;
   }
}

j'aimerai remplacer le switch (check_switches()) par la condition suivante : si le PIN_DETECT ne détecte rien, alors il joue un son aléatoire…
es-ce que quelqu'un aurait une idée ?
12  International / Français / Barrière Infrarouge + Waveshield on: January 24, 2012, 05:47:58 pm
Bonjour à tous.

J'ai monté un waveshield sur ma carte arduino.
La carte SD du waveshield contient 5 fichiers wave.
A côté, j'ai un petit circuit relié sur le waveshield intégrant une barrière infrarouge.
L'idée est que lorsqu'une personne coupe le faisceau infrarouge, un son est joué aléatoirement.

Au préalable j'ai testé cela sans la barrière infrarouge avec un simple boutton à partir du code suivant :

Code:
#include <FatReader.h>
#include <SdReader.h>
#include <avr/pgmspace.h>
#include "WaveUtil.h"
#include "WaveHC.h"


SdReader card;    // This object holds the information for the card
FatVolume vol;    // This holds the information for the partition on the card
FatReader root;   // This holds the information for the filesystem on the card
FatReader f;      // This holds the information for the file we're play

WaveHC wave;      // This is the only wave (audio) object, since we will only play one at a time

#define DEBOUNCE 100  // button debouncer

// this handy function will return the number of bytes currently free in RAM, great for debugging!   
int freeRam(void)
{
  extern int  __bss_end;
  extern int  *__brkval;
  int free_memory;
  if((int)__brkval == 0) {
    free_memory = ((int)&free_memory) - ((int)&__bss_end);
  }
  else {
    free_memory = ((int)&free_memory) - ((int)__brkval);
  }
  return free_memory;
}

void sdErrorCheck(void)
{
  if (!card.errorCode()) return;
  putstring("\n\rSD I/O error: ");
  Serial.print(card.errorCode(), HEX);
  putstring(", ");
  Serial.println(card.errorData(), HEX);
  while(1);
}

void setup() {
  // set up serial port
  Serial.begin(9600);
  putstring_nl("WaveHC with 6 buttons");
 
   putstring("Free RAM: ");       // This can help with debugging, running out of RAM is bad
  Serial.println(freeRam());      // if this is under 150 bytes it may spell trouble!
 
  // Set the output pins for the DAC control. This pins are defined in the library
  pinMode(2, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
 
  // pin13 LED
  pinMode(13, OUTPUT);
 
  // enable pull-up resistors on switch pins (analog inputs)
  digitalWrite(14, HIGH);
  digitalWrite(15, HIGH);
  digitalWrite(16, HIGH);
  digitalWrite(17, HIGH);
  digitalWrite(18, HIGH);
  digitalWrite(19, HIGH);
 
  //  if (!card.init(true)) { //play with 4 MHz spi if 8MHz isn't working for you
  if (!card.init()) {         //play with 8 MHz spi (default faster!) 
    putstring_nl("Card init. failed!");  // Something went wrong, lets print out why
    sdErrorCheck();
    while(1);                            // then 'halt' - do nothing!
  }
 
  // enable optimize read - some cards may timeout. Disable if you're having problems
  card.partialBlockRead(true);
 
// Now we will look for a FAT partition!
  uint8_t part;
  for (part = 0; part < 5; part++) {     // we have up to 5 slots to look in
    if (vol.init(card, part))
      break;                             // we found one, lets bail
  }
  if (part == 5) {                       // if we ended up not finding one  :(
    putstring_nl("No valid FAT partition!");
    sdErrorCheck();      // Something went wrong, lets print out why
    while(1);                            // then 'halt' - do nothing!
  }
 
  // Lets tell the user about what we found
  putstring("Using partition ");
  Serial.print(part, DEC);
  putstring(", type is FAT");
  Serial.println(vol.fatType(),DEC);     // FAT16 or FAT32?
 
  // Try to open the root directory
  if (!root.openRoot(vol)) {
    putstring_nl("Can't open root dir!"); // Something went wrong,
    while(1);                             // then 'halt' - do nothing!
  }
 
  // Whew! We got past the tough parts.
  putstring_nl("Ready!");
}

void loop() {
  //putstring(".");            // uncomment this to see if the loop isnt running
  switch (check_switches()) {
        case 1:
    {
   int Song = random(0, 4);  // choose a random song
   switch (Song)
   {
      case 0: playcomplete("1.WAV"); break;
      case 1: playcomplete("2.WAV"); break;
      case 2: playcomplete("3.WAV"); break;
      case 3: playcomplete("4.WAV"); break;
      case 4: playcomplete("5.WAV"); break;
   }
}
      break;
    case 2:
      playcomplete("2.WAV");
      break;
    case 3:
      playcomplete("3.WAV");
      break;
    case 4:
      playcomplete("4.WAV");
      break;
    case 5:
      playcomplete("5.WAV");
      break;
    case 6:
      playcomplete("6.WAV");
  }
}

byte check_switches()
{
  static byte previous[6];
  static long time[6];
  byte reading;
  byte pressed;
  byte index;
  pressed = 0;

  for (byte index = 0; index < 6; ++index) {
    reading = digitalRead(14 + index);
    if (reading == LOW && previous[index] == HIGH && millis() - time[index] > DEBOUNCE)
    {
      // switch pressed
      time[index] = millis();
      pressed = index + 1;
      break;
    }
    previous[index] = reading;
  }
  // return switch number (1 - 6)
  return (pressed);
}


// Plays a full file from beginning to end with no pause.
void playcomplete(char *name) {
  // call our helper to find and play this name
  playfile(name);
  while (wave.isplaying) {
  // do nothing while its playing
  }
  // now its done playing
}

void playfile(char *name) {
  // see if the wave object is currently doing something
  if (wave.isplaying) {// already playing something, so stop it!
    wave.stop(); // stop it
  }
  // look in the root directory and open the file
  if (!f.open(root, name)) {
    putstring("Couldn't open file "); Serial.print(name); return;
  }
  // OK read the file and turn it into a wave object
  if (!wave.create(f)) {
    putstring_nl("Not a valid WAV"); return;
  }
 
  // ok time to play! start playback
  wave.play();
}

Ok problème, lorsque j'appuye sur le bouton, un son est joué.

Puis j'ai récupéré un code afin de tester ma barrière IR sur ma carte,
voici le code récupéré à cette addresse http://www.arcfn.com/2010/03/detecting-ir-beam-break-with-arduino-ir.html

Code:
#include <IRremote.h>

#define PIN_IR 3
#define PIN_DETECT 7
#define PIN_STATUS 13

IRsend irsend;
void setup()
{
  pinMode(PIN_DETECT, INPUT);
  pinMode(PIN_STATUS, OUTPUT);
  irsend.enableIROut(38);
  irsend.mark(0);
}

void loop() {
  digitalWrite(PIN_STATUS, !digitalRead(PIN_DETECT));
}

Lorsque le faisceau est coupé, la LED 13 s'allume.
Voilà maintenant j'aimerai l'intégrer au premier programme.
Du coup je voudrai que lorsque le faisceau se coupe, le waveshield joue un son aléatoirement.
Comme je débute, je n'ai aucune idée de comment modifier le programme.

Quelqu'un aurait-il une idée ?  smiley

13  International / Français / Re: Ventilateurs 12V actionné par bouton poussoir on: January 10, 2012, 08:32:54 am
Ok :/
Étant donné que je dois présenter une petite maquette jeudi, j'aurai aimé savoir si c'est "grave" de faire varier la vitesse du ventilateur via un potentiomètre le tout branché directement sur la carte en 5V en utilisant le AnalogInOutSerial example ?
A part le fait que le ventilateur tourne moins vite, es-ce que je risque d'abimer la carte ?
14  International / Français / Re: Ventilateurs 12V actionné par bouton poussoir on: January 10, 2012, 08:16:13 am
Ok du coup je me suis procuré les composants pour réaliser ce montage.
Le problème c'est que je ne comprend pas quels sont les 2 fils du ventilateur qui sont reliés sur la board,
si tu dis qu'il faut alimenter le ventilateur de manière externe, il devrait alors y avoir seulement le 3eme cable de commande rattaché non ?
désolé pour mon inexpérience…
15  International / Français / Re: Ventilateurs 12V actionné par bouton poussoir on: January 10, 2012, 07:16:04 am
pour un premier exemple type maquette j'ai essayé avec l'exemple AnalogInOutSerial avec un potentiomètre branché en A0, le ventilateur est branché sur le digital pin 9.
ça marche, mais le ventilateur ne tourne pas vite, ce qui semble logique vu que le ventilateur marche en 12V et que je le fait fonctionner avec du 5V.

Du coup je cherche à savoir comment je pourrait le faire tourner à pleine puissance.
je suis tombé sur le schéma suivant

sur cette page :
http://arduino-for-beginners.blogspot.com/2011/03/controlling-12v-dc-motorfan-with.html

le probleme c'est que j'arrive pas à savoir sur le schéma quelles sont les polarités sur le ventilateur. Mon ventilateur est un ventilo d'ordinateur avec 3 fils, +/- et commande.
Dois-je l'alimenter de manière externe ?

Merci
Pages: [1] 2