User Tools

Site Tools


projets:fuz:ac_giant_led_matrix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
projets:fuz:ac_giant_led_matrix [2019-02-15 22:42] – created barziprojets:fuz:ac_giant_led_matrix [2023-02-02 22:06] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Ac giant led matrix ======+====== AC giant led matrix ======
  
 <WRAP round box 60%> <WRAP round box 60%>
Line 7: Line 7:
  
 ===== Ressources ===== ===== Ressources =====
-  * collab [[user:jeanneret|nico]] , [[user:barzi]], [[user:fabien]] +  * collab [[user:jeanneret|nico]] , [[user:barzi]], [[user:drix]], [[user:fabien]] 
-  * +  * [[https://hackaday.io/project/163657-hdmi-to-fpga-to-apa102|giant led panel with fpga]] .. interesting RS485 data transmitter for long distances (with board) 
 ===== Ressources ===== ===== Ressources =====
-  * ...+  * [[https://www.vishay.com/docs/83608/h11aa1.pdf|Optocoupleur/capteur 240V du secteur]] 
 +  * [[https://hackspark.fr/fr/electronique/1310-relay-module-solid-state-high-level-8-channel-5v-dc-.html|solid state relayX8]] qui est zerocrossing 
 + 
 +===== Dev log ===== 
 + 
 +==== session 22 fev 2019 ==== 
 +{{:projets:fuz:acmatrix_leds_action.jpg?400|}} 
 +{{:projets:fuz:acmatrix_zero_crossing.jpg?400|hint: the code is not working here...(should be waiting for HIGH)}} 
 +{{:projets:fuz:acmatrix_relays.jpg?400|}} 
 +{{:projets:fuz:acmatrix_scanlines.jpg?400|}} 
 + 
 +===== Code ===== 
 + 
 +++++ Code arduino 240V lettres 2 colonnes | 
 +<code c> 
 + 
 +#include <DIO2.h> 
 +#define DEBUG false 
 + 
 +#define COL_NB 2 
 +#define LIN_NB 7 
 + 
 +int pin_col[COL_NB] = {3, 2}; 
 +int pin_lin[LIN_NB] = {4, 5, 6, 7, 8, 9, 10}; 
 + 
 +int seg[2][7] = { {0, 1, 0, 1, 0, 0, 0},{1, 0, 1, 0, 1, 0, 0} }; 
 + 
 +//AC 
 +#define  pinACsense A0 
 +int last_AC_detect = LOW; 
 + 
 +void setup() { 
 +  //AC 
 +  pinMode2(pinACsense, INPUT); 
 +  pinMode2(LED_BUILTIN, OUTPUT); 
 + 
 +  for (int i = 0; i < COL_NB; i++) { 
 +    pinMode2(pin_col[i], OUTPUT); 
 +  } 
 + 
 +  for (int i = 0; i < LIN_NB; i++) { 
 +    pinMode2(pin_lin[i], OUTPUT); 
 +  } 
 + 
 +  if (DEBUG) Serial.begin(115200); 
 +  if (DEBUG) Serial.println("let's rock!"); 
 +
 + 
 + 
 +int letter[7]; 
 + 
 +void loop() { 
 +  //int digitNb = ((long)millis / 1000) % 2; 
 + 
 +  // COLONNES < 2 
 +  for (int j = 0; j < 2; j++) { 
 + 
 +    // copy current letter 
 +    /* 
 +    for (int k = 0; k < 7; k++) { 
 +      letter[k] = seg[j][k]; 
 +      if (DEBUG) Serial.print(letter[k]); 
 +      if (DEBUG) Serial.print("\t"); 
 +    } 
 +    if (DEBUG) Serial.println(""); 
 +    */ 
 +    //////////////////// 
 + 
 +    // allume une colonne 
 +    int b = pin_col[j]; 
 +    digitalWrite2(b, HIGH); 
 + 
 + 
 +    // LIGNES < 7 
 +    for (int i = 0; i < 7; i++) { 
 + 
 +      int a = pin_lin[i]; 
 + 
 +      //if (letter[i] == 1) { 
 +      if (seg[j][i] == 1) { 
 +        digitalWrite2(a, HIGH); 
 +        if (DEBUG) Serial.print("HIGH"); 
 +      } 
 +      else { 
 +        digitalWrite2(a, LOW); 
 +        if (DEBUG) Serial.print("LOW"); 
 +      } 
 +      if (DEBUG) Serial.println(""); 
 + 
 +    } // end lines 
 + 
 + 
 +    // persistence retinienne (env 40ms) 
 +     
 +    delayMicroseconds(9000); 
 +     
 +    // Wait for AC sync... 
 +    int AC_detect = LOW; 
 +    while ( AC_detect !=  HIGH) { 
 +      AC_detect = digitalRead2(pinACsense); 
 +    } 
 + 
 + 
 +    // cols down 
 +    digitalWrite2(b, LOW); 
 +      
 +    // lines down 
 +    for (int t = 0; t < 7; t++) { 
 +      int z = pin_lin[t]; 
 +      digitalWrite2(z, LOW); 
 +    } 
 +     
 +  } // end cols 
 + 
 +
 +</code> 
 +++++ 
 + 
 +++++ Code arduino 240V led matrix test simple  |  
 +<code c> 
 +#define COL_NB 2 
 +#define LIN_NB 7 
 + 
 +int pin_col[COL_NB] = {2, 3}; 
 +int pin_lin[LIN_NB] = {4, 5, 6, 7, 8, 9, 10}; 
 + 
 + 
 + 
 +void setup() { 
 +  for (int i = 0; i < COL_NB; i++) { 
 +    pinMode(pin_col[i], OUTPUT); 
 +  } 
 + 
 +  for (int i = 0; i < LIN_NB; i++) { 
 +    pinMode(pin_lin[i], OUTPUT); 
 +  } 
 + 
 +  Serial.begin(114200); 
 +  Serial.println("let's rock!"); 
 +
 + 
 +void loop() { 
 + 
 +  for (int i = 0; i < 2; i++) { 
 +    int a = random(2) + 2; 
 +    //int a=pin_col[i]; 
 + 
 +    digitalWrite(a, HIGH); 
 +    Serial.print("col= "); 
 +    Serial.println(a); 
 + 
 +    for (int j = 0; j < LIN_NB; j++) { 
 +      int b = random(7) + 4; 
 +      //int a=pin_lin[j]; 
 + 
 +      digitalWrite(b, HIGH); 
 +      Serial.print("line= "); 
 +      Serial.println(pin_lin[j]); 
 +      delay(50); 
 +       
 +      random(5)==0?digitalWrite(b, LOW):digitalWrite(b, HIGH); 
 +    } 
 + 
 +    digitalWrite(a, LOW); 
 + 
 +    /* 
 +        for (int j = 0; j < LIN_NB; j++) { 
 +          //digitalWrite(pin_lin[j], HIGH); 
 +          Serial.print("line= "); 
 +          Serial.println(pin_lin[j]); 
 +          delay(10); 
 +          digitalWrite(pin_lin[j], LOW); 
 +        } 
 + 
 +        digitalWrite(pin_col[i], LOW); 
 +    */ 
 +  } 
 + 
 +
 +</code> 
 +++++ 
 + 
 +++++ Code arduino 240V led matrix with AC sensing and FastIO |  
 +<code c> 
 +#include <DIO2.h> 
 + 
 + 
 +#define COL_NB 2 
 +#define LIN_NB 7 
 + 
 +int pin_col[COL_NB] = {2, 3}; 
 +int pin_lin[LIN_NB] = {4, 5, 6, 7, 8, 9, 10}; 
 + 
 +//AC 
 +#define  pinACsense A0 
 +int last_AC_detect = LOW; 
 + 
 +void setup() { 
 +  //AC 
 +  pinMode2(pinACsense, INPUT); 
 +  pinMode2(LED_BUILTIN, OUTPUT); 
 + 
 +  for (int i = 0; i < COL_NB; i++) { 
 +    pinMode2(pin_col[i], OUTPUT); 
 +  } 
 + 
 +  for (int i = 0; i < LIN_NB; i++) { 
 +    pinMode2(pin_lin[i], OUTPUT); 
 +  } 
 + 
 +  //Serial.begin(114200); 
 +  //Serial.println("let's rock!"); 
 +
 + 
 +int intensity_time = 0; 
 +int step = 40; 
 +//  bool back_from_last_scan = false; 
 +   
 +void loop() { 
 +   
 +  // LIGNES < 7 
 +  for (int i = 0; i < 4; i++) { 
 + 
 +/* 
 +    int AC_detect = LOW; 
 +    // Wait for AC sync... 
 +    while ( AC_detect !=  HIGH || back_from_last_scan) { 
 +      AC_detect = digitalRead(pinACsense); 
 +    } 
 +*/ 
 +    int a = pin_lin[i]; 
 + 
 +    digitalWrite2(a, HIGH); 
 + 
 +    // COLONNES < 2 
 +    for (int j = 0; j < 2; j++) { 
 + 
 +      int b = pin_col[j]; 
 +      digitalWrite2(b, HIGH); 
 + 
 +    } 
 + 
 +    int AC_detect = LOW; 
 +    // Wait for AC sync... 
 +    while ( AC_detect !=  HIGH) { 
 +      AC_detect = digitalRead2(pinACsense); 
 +    } 
 +     
 +    //delayMicroseconds(9000); 
 +    /* 
 +        delayMicroseconds(intensity_time); 
 +        intensity_time += step; 
 +        if(abs(intensity_time) > 9000) step=-step; 
 +    */ 
 +    // ligne down 
 +    digitalWrite2(a, LOW); 
 + 
 +    // cols down 
 +    for (int j = 0; j < 2; j++) { 
 +      int b = pin_col[j]; 
 +      digitalWrite2(b, LOW); 
 +    } 
 + 
 +//    back_from_last_scan = true; 
 + 
 +  } 
 + 
 +
 +</code> 
 +++++ 
  
 ===== Roadmap ===== ===== Roadmap =====
projets/fuz/ac_giant_led_matrix.1550270535.txt.gz · Last modified: 2023-02-02 22:06 (external edit)