tout nouveau sur ce forum et ...... totalement novice avec les arduino j'ai commencé un projet et je suis bloqué pour mon fonctionnement souhaité....
en fait j'ai réalisé le code suivant en récupérant des morceaux ici et là sur le net.
Je souhaite donc commander 6 relais par l'intermédiare d'un unique bouton poussoir (chaque impulsion commande le relais suivant en boucle avec à chaque fois un seul relais qui est en fonctionnement) tout cela fonctionne comme je le souhaite avec ce code.
Mais je voudrais pouvoir lui ajouter un afficheur OLED en version i2c(128*64 car le l'ai sous la main) afin de lui faire afficher une ligne de texte pour mon fonctionnement.... mais malgré toutes mes recherches, je n'arrive pas a faire se fonctionnement !!!
par exemple "Relais 1" "Relais 2" etc...
Et donc un coup de main sympa serait le bienvenue afin de m'aider sur ce point et me permettre de comprendre pour l'avenir
Par avance un grand Merci pour le coup de main
voici mon code fonctionnel sans cet afficheur:
#define SORTIE_1_PIN 11
#define SORTIE_2_PIN 10
#define SORTIE_3_PIN 9
#define SORTIE_4_PIN 8
#define SORTIE_5_PIN 3
#define SORTIE_6_PIN 2
#define BUTTON_PIN 1
#define SORTIE_NUMBER 6
byte SORTIEPinArray[SORTIE_NUMBER] = { SORTIE_1_PIN, SORTIE_2_PIN, SORTIE_3_PIN, SORTIE_4_PIN, SORTIE_5_PIN, SORTIE_6_PIN };
unsigned long debounceDuration = 50; // millis
unsigned long lastTimeButtonStateChanged = 0;
byte lastButtonState = HIGH;
int SORTIEIndex = 0;
void initAllSORTIEs()
{
for (int i = 0; i < SORTIE_NUMBER; i++) {
pinMode(SORTIEPinArray[i], OUTPUT);
}
}
void powerOnSelectedSORTIEOnly(int index)
{
for (int i = 0; i < SORTIE_NUMBER; i++) {
if (i == index) {
digitalWrite(SORTIEPinArray[i], HIGH);
}
else {
digitalWrite(SORTIEPinArray[i], LOW);
}
}
}
void setup()
{
initAllSORTIEs();
pinMode(BUTTON_PIN, INPUT_PULLUP);
digitalWrite(SORTIEPinArray[SORTIEIndex], HIGH);
}
void loop()
{
unsigned long timeNow = millis();
if (timeNow - lastTimeButtonStateChanged > debounceDuration) {
byte buttonState = digitalRead(BUTTON_PIN);
if (buttonState != lastButtonState) {
lastTimeButtonStateChanged = timeNow;
lastButtonState = buttonState;
if (buttonState == HIGH) { // button has been released
SORTIEIndex++;
if (SORTIEIndex >= SORTIE_NUMBER) {
SORTIEIndex = 0;
}
powerOnSelectedSORTIEOnly(SORTIEIndex);
}
}
}
}
C'est donc le moment idéal pour consulter ceci pour découvrir où et comment demander de l'aide :
Je viens de retirer ton message de la zone exclusivement réservée aux réalisations finies pour le mettre dans la partie principale du Forum Francophone
Explique clairement ce tu as fait et pourquoi ça ne marche pas.
Si tu as suivi le tutoriel, tu devrais voir les résultats annoncés. Sinon, c'est soit que tu as mal suivi les instructions soit que ton matériel est défectueux.
Comme on n'est pas avec toi pour vérifier, il faut que tu décrives avec le maximum de détails ce que tu as fait et ce que tu vois (messages d'erreur, ou autres).
@al1fch t'a demandé de lire et appliquer ce qui est demandé dans le message épinglé (voir post #2).
As-tu fait ton essai rien qu'avec le programme du document indiqué ?
Il faut systématiquement faire les programmes d'exemples fournis avec les bibliothèques de composants.
Sans rien y ajouter. Les exemples sont vérifiés et garantis fonctionnels.
Quand cela fonctionne, tu assembles avec le premier code et si cela ne fonctionne plus, tu ne te poseras pas mille questions : ce ne sera pas le composant, ce ne sera pas le câblage, c'est que, probablement, il y a une erreur dans, ou entre, les deux codes.
Merci de vos réponses
ma question initiale concerne le rajout d'un afficheur OLED pour avoir l'indiquation du relais en service,
dans le lien envoyé rien trouvé concernant cela....
NB le pb programme du lien oui j'ai testé et mon materiel fonctionne avec celui-ci.
Tu ne crois pas que l'on va trouver un article te concernant exclusivement !
Nous te donnons des pistes et des méthodes de travail.
Ce que je dis, c'est que si tu t'entêtes à vouloir travailler sur ton programme complet, tu risques de te décourager avant d'avoir trouvé la solution.
Il n'y a donc pas de raison que cela ne fonctionne pas, c'est un bon point.
Déjà ce que tu veux envoyer sur l'écran, est-ce que cela s'affiche dans le moniteur série ?
Je parle de n’importe quel exemple certifié, soit random, soit de la bibliothèque.
Quand tu utilises un composant pour la première fois, faire un exemple certifié est la première operation a faire.
Ne pas le faire est perdre du temps.