Gestion des ports 1 à 13

Bonjour,

pour initié ma fille à l'electronic

j'ai monté une resistant de 220 ohms, un led sur chacun des port 9 et7

juste pour test passe à 5v le port 9, 0v le port 7, j'attend 0.5 secondes, je fait le contraire et je boucle.

Et j'ai les deux led qui s'allume en même temps.

il y aurait il un truc que j'ai pas compris sur le fonctionne de ces ports.

on a fait cela avec mbloc et j'ai essayé aussi avec C++ mais pareille. donc je pense qu'il y a un truc qui m'échape.

best,

Luc

Bonjour

Comment attendez vous 0.5s par exemple ? avez vous fait delay(0.5); ?
➜ postez le code (avec les balises de code) et/ou une copie d'écran du mblock
➜ un petit dessin à main levée du circuit serait bien aussi.

le bon code

const byte brocheLed1 = 7;
const byte brocheLed2 = 9;

void setup() {
  pinMode(brocheLed1, OUTPUT);
  pinMode(brocheLed2, OUTPUT);
}

void loop() {
  digitalWrite(brocheLed1, HIGH);
  digitalWrite(brocheLed2, LOW);
  delay(500); // 500 ms = 0,5 s
  digitalWrite(brocheLed1, LOW);
  digitalWrite(brocheLed2, HIGH);
  delay(500);
}

c'est exctement le code que je fait.

pour les LED

la cathode sur le GND, l'anode connecter sur la resistance te de 220ohms et l'autre bout de la resistance sur le port 7

pour l'autre led, pareille sauf que c'est sur le port 9

donc j'utilise deux resistance et deux led.

j'ai aussi un bouton poussoir sur le port 13, connecter à une resistance de 10k ohmes qui est connecter au 5v. le port 13 etant lui connecter sur la resistant et le bouton poussoir.

c'est correct


photo ?

De nombreux boutons ont 4 broches, connectées 2 à 2. Pour être sûr de choisir les bones broches, câblez le bouton en croix .

Sinon Les pins ont un pullup intégré, autant l'utiliser.

La broche 13 est la LED interne de la carte (si vous êtes sur une UNO, ce n'est pas la meilleur broche pour un bouton à cause de ce circuit qui est derrière aussi).

un exemple simple (simpliste) qui fait à peu près clignoter les LEDs quand on tient le bouton appuyé

const byte brocheBouton = 13;
const byte brocheLed1 = 7;
const byte brocheLed2 = 9;

void setup() {
  pinMode(brocheBouton, INPUT_PULLUP);
  pinMode(brocheLed1, OUTPUT);
  pinMode(brocheLed2, OUTPUT);
}

void loop() {
  if (digitalRead(brocheBouton) == LOW) { // LOW = appuyé car INPUT_PULLUP
    digitalWrite(brocheLed1, HIGH);
    digitalWrite(brocheLed2, LOW);
    delay(500); // 500 ms = 0,5 s
    digitalWrite(brocheLed1, LOW);
    digitalWrite(brocheLed2, HIGH);
    delay(500);
  }
}

PS: c'est pas top car on bloque une seconde pour l'animation avant d'aller relire le bouton mais c'est OK pour une démo (et quand on relâche le bouton, la LED qui était allumée reste allumée ==> petit projet pour modifier cela :slight_smile: )

si les port sont en pull up, je peu connecter directement le poussoir entre la masse et le port 13 sans resistance ?

Merci pour le simulateur je regarderai ce soir.

Rajouter un "if" pour dire

Si aucun BP appuyé, éteindre toutes les LED

oui c'est l'idée (comme vous voyez dans mon schéma, le bouton bleu).

Comme c'est un pullup, la lecture de la broche dira LOW quand le bouton est appuyé et HIGH quand il n'est pas appuyé.