Bonjour à tous,
Nouveau depuis trois jours dans le monde de l'arduino.
J'ai créé un petit code pour faire fonctionner une matrice led 32x8 avec plusieurs animations déclenchées depuis des relais externes.
Quand mon relais se ferme ( 1 seconde ) mon animation se lance une seconde. Je souhaiterais mettre un délai sur la pin pour pouvoir jouer l'animation complètement. Si j'utilise la fonction délai mon animation reste en pause.
Merci de vos retours,
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define PIN 11
const int Gauche = 7; // Numéro de la broche à laquelle est connecté le bouton poussoir 1
const int Ok = 6; // Numéro de la broche à laquelle est connecté le bouton poussoir 2
const int Arret = 5; // Numéro de la broche à laquelle est connecté le bouton poussoir 3
int etatGauche = 0; // variable qui sera utilisée pour stocker l'état du bouton 1
int etatOk = 0; // variable qui sera utilisée pour stocker l'état du bouton 2
int etatArret = 0; // variable qui sera utilisée pour stocker l'état du bouton 3
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
const uint16_t colors[] = {
matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255)};
void setup() {
pinMode(Gauche, INPUT);
pinMode(Ok, INPUT);
pinMode(Arret, INPUT);
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(010);
matrix.setTextColor(colors[0]);
}
int x = matrix.width();
int pass = 0;
void loop() {
// lit l'état du bouton et stocke le résultat dans etatBouton
etatGauche = digitalRead(Gauche);
etatOk = digitalRead(Ok);
etatArret = digitalRead(Arret);
if (etatGauche == HIGH) {
const uint16_t colors[] = {
matrix.Color(0, 255, 0)};
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(5);
matrix.setTextColor(colors[0]);
matrix.fillScreen(0);
matrix.setCursor(x, 0);
matrix.print(F("OK <<<<<<<")); //Defilement
if (--x < -25
) {
x = matrix.width();
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(50);
}
else if (etatOk == HIGH) {
const uint16_t colors[] = {
matrix.Color(255, 0, 0) };
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(5);
matrix.setTextColor(colors[0]);
matrix.fillScreen(0);
matrix.setCursor(1, 0);
matrix.print(F("XXXXX")); // ARRET
if(--x < -30) {
x = matrix.width();
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(20);
}
else if (etatArret == HIGH) {
const uint16_t colors[] = {
matrix.Color(255, 0, 0) };
matrix.begin();
matrix.setBrightness(5);
matrix.drawLine(5, 1, 9, 1, matrix.Color(255, 0, 0));
matrix.drawLine(4, 2, 10, 2, matrix.Color(255, 0, 0));
matrix.drawLine(3, 3, 11, 3, matrix.Color(255, 0, 0));
matrix.drawLine(2, 4, 12, 4, matrix.Color(255, 0, 0));
matrix.drawLine(1, 5, 13, 5, matrix.Color(255, 0, 0));
matrix.drawLine(1, 6, 13, 6, matrix.Color(255, 0, 0));
matrix.drawLine(1, 7, 13, 7, matrix.Color(255, 0, 0));
matrix.drawLine(1, 8, 13, 8, matrix.Color(255, 0, 0));
matrix.drawLine(1, 9, 13, 9, matrix.Color(255, 0, 0));
matrix.drawLine(2, 10, 12, 10, matrix.Color(255, 0, 0));
matrix.drawLine(3, 11, 11, 11, matrix.Color(255, 0, 0));
matrix.drawLine(4, 12, 10, 12, matrix.Color(255, 0, 0));
matrix.drawLine(5, 13, 9, 13, matrix.Color(255, 0, 0));
matrix.show();
delay(20);
}
else {
const uint16_t colors[] = {
matrix.Color(0, 255, 0)};
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(5);
matrix.setTextColor(colors[0]);
matrix.fillScreen(0);
matrix.setCursor(0, 0);
matrix.print(F("<<<<<")); // Fixe
if (--x < -30
) {
x = matrix.width();
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(0);
}
}