[EFFACER] compteur covid v3

bonjour après suite a un vieux projet compteur de passage covid que j'avais mi en pause je lais repris avent que je m'arrête il marchais nikel manquais juste a l'installer mes voilla SA MARCHE PLUS ;( la partie affichage

avec l'aide de mon oncle j'ai reussi a opti

pour rapelle le fonctionnement
2detecteur de passage (laser photo resistance (a la suite (la personne passe devent le premier puis le 2 eme selon le quel est activer en premier il va faire plus 1 personne -1 personne)
en plus il est relier a l'ordi pour pouvoir communiquer avc pour le passer en fermer ouvert ou resset le nombre de personne height=500]https://zupimages.net/up/21/14/0y75.png[/img]talent sur paint/20

mon problème c'est que 2 module affichage 882 ne marche plus

lles deux dernier module allumer en rouge

jai essayer de le brancher appart sa marche de les inverser sa marche pas de le resouder sa marche pas
de tester avec multi metre normalement sa marche
j'ai de la continuité sur les bon branchement

#include <LedControlMS.h>
#include <Adafruit_NeoPixel.h>
#define NUM_LEDS 34
#define StripAffPin 8
#define NBTaff 9


//pin
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, StripAffPin, NEO_GRB + NEO_KHZ800);


//afficheur led
int   Select = 3;
bool  saturation = 1;




LedControl Module = LedControl(2, 3, 4, 8);


bool X = 0;
const byte A[8]   = { X, 0x18, 0x3B, 0x66, 0x66, 0x7E, 0x66, 0x66 };
const byte D[8]   = { X, 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8 };
const byte E[8]   = { X, 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE };
const byte F[8]   = { X, 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, B11110000 };
const byte M[8]   = { X, B11000110, B11101110, 0xFE, 0xFE, B11010110, B11000110, B11000110 };
const byte N[8]   = { X, B11000110, B11100110, B11110110, B11011110, B11001110, B11000110, B11000110 };
const byte O[8]   = { X, B00111000, 0x6C, B11000110, B11000110, B11000110, 0x6C, B00111000 };
const byte R[8]   = { X, B11111100, 0x66, 0x66, B01111100, 0x6C, 0x66, B11100110 };
const byte T[8]   = { X, 0x7E, B01011010, 0x18, 0x18, 0x18, 0x18, B00111100 };
const byte U[8]   = { X, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, B00111100 };
const byte V[8]   = { X, 0x66, 0x66, 0x66, 0x66, 0x66, B00111100, 0x18 };
const byte Z[8]   = { X, 0xFE, B10000110, B00001100, 0x18, B00110000, 0x62, 0xFE };
const byte Ea[8]  = { 0x18, 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE };
const byte Minus[8]  = { X, X, X, 0x7E, X, X, X, X };


const byte digits[10][8]  = {
{ B01111100, B10000010, B10000010, B10000010, B10000010, B10000010, B01111100, X },
{ B00010000, B00110000, B00010000, B00010000, B00010000, B00010000, 0x7E, X },
{ 0x7E, B00000010, B00000010, 0x7E, B01000000, B01000000, 0x7E, X },
{ 0x7E, B00000010, B00000010, 0x7E, B00000010, B00000010, 0x7E, X },
{ B01000000, B01000000, B01000000, 0x7E, B00010000, B00010000, B00010000, X },
{ 0x7E, B01000000, B01000000, 0x7E, B00000010, B00000010, 0x7E, X },
{ 0x7E, B01000000, B01000000, 0x7E, B01000010, B01000010, 0x7E, X },
{ B01111100, B00000100, B00000100, B00000100, B00000100, B00000100, B00000100, X },
{ 0x7E, B01000010, B01000010, 0x7E, B01000010, B01000010, 0x7E, X },
{ 0x7E, B01000010, B01000010, 0x7E, B00000010, B00000010, 0x7E, X },
};


const byte * tabOuvert[]    = { nullptr, O, U, V, E, R, T, nullptr };
const byte * tabFerme[]     = { nullptr, F, E, R, M, Ea, nullptr, nullptr };
const byte * tabAttendre[]  = { A, T, T, E, N, D, R, E };
const byte * tabEntrez[]    = { nullptr, E, N, T, R, E, Z, nullptr };
const byte * tabReset[]     = { nullptr, R, E, Z, E, T, nullptr, nullptr };


const byte ** words[] = { tabOuvert, tabFerme, tabAttendre, tabEntrez, tabReset };


enum idMessage {
OUVERT = 0,
FERME,
ATTENDRE,
ENTREZ,
RESET
};


//
int   idx = 0;
//
const int g_seuilCapteur = 200;
const int g_maxPersonnes = 20;
const int g_delayReset = 2000;


// Which pin on the Arduino is connected to the NeoPixels?
#define BANDEAU_PIN        5 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define BANDEAU_NUMLEDS   32 // Popular NeoPixel ring size


Adafruit_NeoPixel pixels(BANDEAU_NUMLEDS, BANDEAU_PIN, NEO_GRB + NEO_KHZ800);


void setup() {
Serial.begin(9600);   //innitialisation debugmode
strip.setBrightness(100);
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.


pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}


unsigned long lastTime = 0;


struct EtatCapteur {
public:
  EtatCapteur( int _id )
    : idInput(_id), prevValue(0), status(0) {
  }


  void Reset() {
    status = 0;
    prevValue = 0;
  }


  void Update() {
    int value = analogRead( idInput );
    int delta = value - prevValue;
    prevValue = value;


    // -> front bas
    if ( (status == 1) && (delta > g_seuilCapteur) ) {
      status = 2;
    }


    // -> front haut
    if ( (status == 0) && (delta < - g_seuilCapteur) ) {
      status = 1;
    }
  }


  bool SomethingHappened() {
    return status > 0;
  }


private:
  // data
  const int     idInput;
  int           status;
  int           prevValue;
};


struct EtatCapteurs {
enum idDirection {
  RIEN = 0,
  ENTREE,
  SORTIE
};


EtatCapteurs( int _idE, int _idI )
  : exterieur(_idE), interieur(_idI), counterMS(0), compteurPersonnes(19), direction(RIEN) {
}


void Update(unsigned int _deltaMS ) {
  interieur.Update();
  exterieur.Update();


  // Compteur pour reset si delai expiré
  if ( interieur.SomethingHappened() || exterieur.SomethingHappened() ) {
    counterMS += _deltaMS;
  }


  if ( direction == RIEN ) {
    if ( exterieur.SomethingHappened() && !interieur.SomethingHappened() ) {
      direction = ENTREE;
    }
    if ( interieur.SomethingHappened() && !exterieur.SomethingHappened() ) {
      direction = SORTIE;
    }
  }
// Entrée ?
  if ( direction == ENTREE && interieur.SomethingHappened() ) {
    compteurPersonnes++;
    direction = RIEN;
    counterMS = 0;
    interieur.Reset();
    exterieur.Reset();
  }


  // Sortie ?
  if ( direction == SORTIE && exterieur.SomethingHappened() ) {
    compteurPersonnes--;
    direction = RIEN;
    counterMS = 0;
    interieur.Reset();
    exterieur.Reset();
  }


  // Timeout ?
  if ( counterMS > g_delayReset ) {
    direction = RIEN;
    counterMS = 0;
    interieur.Reset();
    exterieur.Reset();
  }
}


// data
EtatCapteur   interieur;
EtatCapteur   exterieur;
unsigned long counterMS;
int           compteurPersonnes;
idDirection   direction;
};


bool magasinOuvert = true;
EtatCapteurs capteurs( A1, A2 );


int ledColorR = 255;
int ledColorG = 0;
int ledColorB = 0;
String inputConsole;


void loop() {
// Current time elapsed
unsigned long currTime = millis();
unsigned long deltaTimeMs = currTime - lastTime;
lastTime = currTime;


for (byte i = 0; i < 8; i++) {
  Module.shutdown(i, 0/*idx & 1*/);
  Module.setIntensity(i, 255 );
}


int boutton = digitalRead( A3 );


capteurs.Update( deltaTimeMs );


while( Serial.available() != 0 ) {
  char c = Serial.read();
  inputConsole = inputConsole + c;
}


if( inputConsole == "ouvert" ) {
  inputConsole = "";
  magasinOuvert = true;
} else if( inputConsole == "fermé" ) {
  inputConsole = "";
  magasinOuvert = false;
} else if( inputConsole == "reset" ) {
  inputConsole = "";
  capteurs.compteurPersonnes = 0;
  DisplayWord(RESET);
  delay(3000);
} else if( inputConsole != "" ) {
  inputConsole = "";
}


if ( magasinOuvert == false ) {
  // Le magasin est fermé, affiche le texte
  DisplayWord(FERME);
  ledColorR = 255;
  ledColorG = 0;
  ledColorB = 0;


  // Test si le bouton est poussé, affiche OUVERT 2 secondes
  if (boutton == 1) {
    DisplayWord(OUVERT);
    magasinOuvert = true;
    delay(2000);
  }
} else {
  if ( (idx & 3) == 0 ) {
    DisplayInteger( capteurs.compteurPersonnes );
  } else {
    if ( capteurs.compteurPersonnes >= g_maxPersonnes ) {
      DisplayWord(ATTENDRE);
      ledColorR = 100;
      ledColorG = 0;
      ledColorB = 0;
    } else if ( capteurs.compteurPersonnes < g_maxPersonnes ) {
      DisplayWord(ENTREZ);
      ledColorR = 0;
      ledColorG = 100;
      ledColorB = 0;
    }
  }
}


// Affichage du bandeau LEDs
for ( int i = 0; i < BANDEAU_NUMLEDS; i++) {
  pixels.setPixelColor(i, ledColorR, ledColorG, ledColorB );
}
pixels.show();   // Send the updated pixel colors to the hardware.


idx++;
delay(200);
}


void progressiveUp(int temps, int r, int v, int b) {
for (int lumi = 0 ; lumi < 255 ; lumi++)
{
  for (int i = 0 ; i < 150 ; i++)
  {
    strip.setPixelColor(i, r, v, b);
  }
  strip.setBrightness(lumi);
  strip.show();
  Serial.print("test");
}
}


void DisplayInteger(long value ) {
bool isNegative = value < 0;
int segment = 0;
value = abs(value);
while ( value >= 0 ) {
  byte * lettre = digits[ value % 10 ];
  for (int ligne = 0; ligne < 8; ligne++) {
    Module.setRow(segment, ligne, lettre[ ligne ]);
  }
  value /= 10;
  segment++;
  if (value == 0)
    break;
}
if ( isNegative ) {
  for (int ligne = 0; ligne < 8; ligne++) {
    Module.setRow(segment, ligne, Minus[ ligne ]);
  }
  segment++;
}
while ( segment < 8) {
  for (int ligne = 0; ligne < 8; ligne++) {
    Module.setRow(segment, ligne, 0);
  }
  segment++;
}
}


void DisplayWord( idMessage msg ) {
byte ** mot = words[ (int)msg ];
for (int module = 0; module < 8; module++) {
  const byte * lettre = mot[module];


  if ( lettre != nullptr ) {
    for (int ligne = 0; ligne < 8; ligne++) {
      Module.setRow(7 - module, ligne, lettre[ligne]);
    }
  } else {
    for (int i = 0; i < 8; i++) {
      Module.setRow(7 - module, i, 0);
    }
  }
}
}


void set_unit(byte number_of_unit, int intensity) { //innitialisation matrice
Module.shutdown(number_of_unit, false);
Module.setIntensity(number_of_unit, intensity);
}

materiele arduino mega
laser 2
recepteur 2
matrice led 8*8 max7219 *8
2 alimentation 1 arduino 1 bandeau led afficheur led
1 bandeau led 3 mètre (pas encor instaler)

librairie
<LedControlMS.h>
<Adafruit_NeoPixel.h>

connecter sur lordi pour controler l'affichage ouvert fermer resset
(bientot quand il seras fermer pouvoir metre l'heur du la prochaine ouverture)

quant tus marcheras je vais essayer de le passer sur un esp wroom32

d'un coter je pence pas que c'est le branchement parce que sa marchais avent et par moment il reagit mes de l'autre i marche que quand je le branche apart

je vien de tester avec un encient code sa marche toujour pas donc c'est mes soudure desoler pour ce post inutile;(

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.