Programme led binaire

Ducoup j'ai reussi

voici le code

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);  // Définir la broche de la LED en sortie
  Serial.begin(9600);            // Initialiser la communication série
}

void loop() {
  
  Serial.println("Entrer un mot de 4 bits");

  while (Serial.available() < 4) {
    // Attendre que les 4 caractères soient disponibles
  }

  if (Serial.available() >= 4) {
    char Tab[5];  // Le tableau doit être de taille 5 pour stocker les 4 caractères binaires et le caractère nul ('\0')
    
    for (int i = 0; i < 4; i++) {
      Tab[i] = Serial.read();  // Lire les caractères binaires entrés
    }
    //Tab[4] = '\0';  // Ajouter le caractère nul à la fin du tableau pour former une chaîne de caractères
    
    if (isValidBinary(Tab)) {
      if (Tab[3] == '0') {  // Utilisez des guillemets simples ('') pour les caractères, pas des guillemets doubles ("")
        digitalWrite(LED_BUILTIN, LOW);  // Éteindre la LED
        Serial.println("LED éteinte");
      } else if (Tab[3] == '1') {
        digitalWrite(LED_BUILTIN, HIGH);  // Allumer la LED
        Serial.println("LED allumé");
      } else {
        Serial.println("Mot binaire invalide");
      }
    } else {
      Serial.println("Caractère invalide");
    }
  }
}

bool isValidBinary(const char* Tab) {
  for (int i = 0; i < 4; i++) {
    if (Tab[i] != '0' && Tab[i] != '1') {
      return false;
    }
  }
  return true;
}

:warning: lire et prenez compte et mis en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

  • le post n'est pas dans la bonne catégorie, ce n'est pas un cours ni un tuto (je le déplace pour vous pour cette fois)
  • utilisez les balises de code SVP (éditez votre post et rajoutez les après avoir lu comment bien poster dans les bonnes pratiques)

pour votre code, testez uniquement le 4ème caractère si les autres n'importent pas...

Si tu as ton mot binaire dans une variable, disons mot, pour obtenir le dernier bit, tu peux faire :
int dernier = mot & 1;
Il te reste à tester la valeur de ce bit :

if (dernier == 1) {
  // action sur la led
}

c'est dans un tableau de char... donc il suffit de prendre le bon index...

mais pas de réponse précise tant que le code n'a pas été mis en forme proprement dans le post 1.

bonjour,

jusque là, ça va, je sais ce qu'est un quartet (nibble, ou nybble, en anglais)

isoler un bit par masquage est trivial, le décaler si besoin également, pour le recopier à sa bonne place dans le port gérant la DEL, ou l'utiliser comme argument, etc...

mais quand je vois ce type de commentaire

j'en déduis que le prof a fourni un squelette de programme, dans lequel il demande l'utilisation d'un tableau : où est sa logique ? quartet ou tableau ? ce ne sont pas les mêmes types d'objet, ils ne se gèrent pas avec les mêmes outils.

quand les choses seront enfin à plat dans l'énoncé, alors on pourra envisager une façon de traiter, pas avant.

et quand les balises de code et l'indentation seront OK aussi...

(même si la réponse est triviale)

Merci

Et le titre non conforme !
Alors maintenant ont ne repond plus s’il n’y a pas les balises codes mais on se fiche du fonctionnement du moteur de recherche du forum !

Il est spécifié dans le message d’accueil quels titres sont interdit, il est aussi spécifié que les messages aux titres non conformes seront supprimés.
Commençons par appliquer les règles et comme pour les balises codes ne pas repondre tant que le titre n’est pas corrigé

@xtvbabing
Pour corriger le titre il faut cliquer sur l’icone en forme de crayon dans la ligne du titre.

Il est important que le titre soit représentatif du sujet car les titres sont utilisés par le moteur de recherche du forum.
Avec le titre que tu as mis, les réponses qui te seront données ne pourront pas servir a d’autres.
Merci de modifier rapidement.

ca te va mieux

Ce serait plus simple avec du courant!

2 Likes

hello
j'arrive sur ce post avec du retard, en lisant les échanges, je ressens de l'agacement de ta part.
Quand on vient demander de l'aide, on doit être prêt à se montrer correct avec les intervenants et à respecter les règles du forum( ce qui t'a été demandé en #2,#4,#5,#6,#7.)

Malheureusement non, tu n'a pas mis l'intégralité de ton code dans une balise < code/> :frowning:

:rofl:
:joy: :crazy_face:

Je ne comprends pas trop ce qui te freine à faire la modification de la présentation de ton code.
Cela prend encore moins de temps que t'écrire des émoticônes :thinking:

jai dit que c'était ok

Tu réponds à qui ?

Voila c'est ok j'ai tout remis en forme désolé je suis sur 3 project en même temps donc j'avais pas fait attention

Cool :slight_smile:
Du coup tu as besoin de quoi :rofl: ?
Ton code n'est pas fonctionnel ?

1 Like

si j'ai mis le bon code j'ai reussi a faire le bon code :rofl:

Oui, c'est ce que j'ai supposé, donc tu n'a besoin de rien ?

Par contre si on veut être tatillon, tu ne gère pas ta LED vraiment en binaire :slight_smile:
puisque tu perd 7 bits pour chaque LED :japanese_ogre:
Du coup, pour être chieur, ton titre ne correspond pas à ton code :see_no_evil:

le code ASCII de '0' ou '1' c'est du binaire, juste pas sur un seul bit :slight_smile: