Jump to: navigation, search

Système Technique Simple - BA3:John Curez

Pixeleate

MATRIX LED.jpeg

Note d'intention artistique

Le pixel est a la base une unité de mesure numérique, mais elle est maintenant detournée avec le pixel art et autre. En utilisant cette matrice a led, je refais du pixel art mais sans l'utilisation d'écran. Il n'est pas encore physique comme dans mon projet, c'est un hybride entre mon projet personnel et le pixel comme on le connais. Je veux montré au spectateur que le pixel peut etre partout, même en dehors de l'écran, et que grace a ces pixel, il est possible de generer ce que l'on veut, soit controllé par l'homme, ou en laissant l'ordinateur faire.

De plus, en contre partie de la programmation, il est possible de changer l'ordre des chose juste en intervertissant les cables rouge, bleu ou vert et modifier la façon de faire.

Synthèse technique détaillant la mise en oeuvre du dispositif technique choisi

  • 1 Arduino Uno;
  • 1 matrice RGB CILE 2088RGB-5;
  • 4 Shift Register 74HC595N;
  • Environ 70 câbles mâle-mâle;

Fritzing

Matrixrgb schéma.png

Arduino

int SER_Pin = 8;   //pin 14 on the 75HC595
int RCLK_Pin = 9;  //pin 12 on the 75HC595
int SRCLK_Pin = 10; //pin 11 on the 75HC595

//Nombre de shift register
#define number_of_74hc595s 4

//ON TOUCHE PAS
#define numOfRegisterPins number_of_74hc595s * 8 

boolean registers[numOfRegisterPins];

void setup() {
  pinMode(SER_Pin, OUTPUT);
  pinMode(RCLK_Pin, OUTPUT);
  pinMode(SRCLK_Pin, OUTPUT);
  //reset all register pins
  clearRegisters();
  writeRegisters();
}

//set all register pins to LOW
void clearRegisters() {
  for (int i = numOfRegisterPins - 1; i >=  0; i--) {
    registers[i] = LOW;
  }
}

//Set and display registers
//Only call AFTER all values are set how you would like (slow otherwise)
void writeRegisters() {

  digitalWrite(RCLK_Pin, LOW);

  for (int i = numOfRegisterPins - 1; i >=  0; i--) {
    digitalWrite(SRCLK_Pin, LOW);

    int val = registers[i];

    digitalWrite(SER_Pin, val);
    digitalWrite(SRCLK_Pin, HIGH);

  }
  digitalWrite(RCLK_Pin, HIGH);

} 

//set an individual pin HIGH or LOW
void setRegisterPin(int index, int value) {
  registers[index] = value;
}

void loop() {
//On passe toute les pin à l'état OFF ( LOW pour les anodes et en HIGH pour les pin de couleurs
  for (int i = 0; i < 8; i++) setRegisterPin(i, LOW);
  for (int i = 8; i < 32 ; i++) setRegisterPin(i, HIGH);
  setRegisterPin(7, LOW);
  delay(100);
  writeRegisters();
 //Carré bleu evolutif
  for (int j = 0; j <= 3; j++) {
    for (int i = 3 - j; i < 5 + j; i++) setRegisterPin(i, HIGH);
    for (int i = 27 - j; i < 29 + j ; i++)setRegisterPin(i, LOW);
    writeRegisters();
    delay(100);
  }
//Transfert vers le vert
  for (int j = 0; j <= 3; j++) {
    for (int i = 27 - j; i < 29 + j ; i++)setRegisterPin(i, HIGH);
    for (int i = 11 - j; i < 13 + j ; i++)setRegisterPin(i, LOW);
    writeRegisters();
    delay(100);
  }
//Bleu et rouge rencontre
  for (int i = 16; i < 23; i++) {
    setRegisterPin(i, LOW);
    setRegisterPin(i + 8, LOW);
    writeRegisters();
    delay(100);
  }
//Bleu et rouge separation
  for (int i = 23; i > 15; i--) {
    setRegisterPin(i, HIGH);
    setRegisterPin(i + 8, HIGH);
    writeRegisters();
    delay(100);
  }
//Eteinte des led
  for (int i = 7; i > -1; i--) {
    setRegisterPin(i, LOW);
    writeRegisters();
    delay(100);
  }
//Passage en aléatoire
  for (int ale = 0; ale < 50; ale++) {
    for (int i = 0; i < 8; i++) setRegisterPin(i, LOW);
    for (int i = 8; i < 32 ; i++) setRegisterPin(i, HIGH);
    for (int i = 0; i < 3; i++) setRegisterPin(random(0, 7), HIGH);
    for (int i = 0; i < 20 ; i++) setRegisterPin(random(8, 31), LOW);
    writeRegisters();
    delay(100);

  }
}

Références