Bonjour, j'ai acheté un cube 4x4x4 piloté par une carte Leonardo

Bonjour, j'ai acheté ceci Keyestudio 4x4x4 RGB LED KS0575 : super intéressant sur le papier, pour programmer des scripts limités seulement par votre imagination...!
Sauf que lorsque je le branche via USB sur mon ordi, il ne fait que l'alimenter et donc le script par défaut se lance et puis c'est tout !!!
Rien n'est détecté par Win 11 pro en tant que périphérique pour que je puisse tester les codes fournis.
Donc bien sûr l'IDE Arduino ne voit pas la carte Léonardo !
Ils ont fait un gros Wiki mais je n'ai pas trouvé la solution... https://docs.keyestudio.com/projects/KS0575/en/latest/index.html
J'ai acheté un convertisseur USB Série CH340 en pensant que cela pourrait servir...

Si quelqu'un avait une petite idée pour un petit coup de main ce serait super sympa :grinning:
Un grand merci,
Gilles.

Le driver a été correctement installé?

@fdufnews : Bonjour, Win ne m'a pas proposé l'installation d'un driver car à mon avis il n'a pas détecté de périphérique lorsque j'ai branché le Cube 4x4x4 !
J'ai essayé en pressant le bouton RESET de la carte en même temps que la brancher en USB, rien de plus !

Attention : certains câbles USB ne comportent que les 2 fils d'alimentation
Un tel fil donnerait ce que tu constates , @cassiope34
Utiliser un câble complet (4 fils)

Oui et bien il faudrait peut-être lire le wiki.
La première partie de "Arduino Tutorial" c'est l'installation du software dont justement l'installation du driver.
https://docs.keyestudio.com/projects/KS0575/en/latest/wiki/Arduino/arduino.html

Ben c'est à dire que j'ai utilisé le cable fourni avec !
Il a bien les 4 pattes cuivre côté USB A, difficile à voir côté USB-C !

Tu penses bien qu'avant de poster ici j'ai bien lu tout le Wiki et en particulier cette partie là !!!
Comme je l'ai dit, WIN ne me propose rien au branchement de la carte, je ne peux donc pas Updater de driver pour la carte Leonardo... c'est bien ça mon soucis !

onjour cassiope34

Peut être que ce n'est pas nécessaire parce que que le driver s'est installé avec l'IDE Arduino?

Si tu ouvres l'IDE Arduino, cube connecté, est ce que tu vois le port COM de ton cube?


Ce peut être autre chose que COM3.

A+
Cordialement
jpbbricole

Et ben voilà, c'était tout simple : y avait rien à faire du tout !!!
Mille merci @jpbbricole :grinning: :+1:

Je vais pouvoir imaginer plein d'effets lumineux :clap:
enfin, si je code bien le C++ .
Le Wiki me semble plutôt bien fait pour comprendre le codage des cubes.
https://docs.keyestudio.com/projects/KS0575/en/latest/wiki/Scratch/scratch.html#projects

Encore un grand merci à toi @jpbbricole

Bien cordialement,
Gilles.

Bonjour cassiope34

Avec plaisir :wink:
Bonne continuation.

Cordialement
jpbbricole

Hello, je suis donc en train d'analyser, comprendre et modifier les scripts fournis avec le cube.
Je n'avais pas encore rencontré cette syntaxe :slight_smile:

count = count > 2 ? 0 : count + 1;

pour la gestion d'une variable qui sert à gérer un bouton, et qui se trouve dans ce script:

#include "SPI.h"
#include "Cube.h"

#define ButtonPin 6 //Define the button pin

Cube cube;

int value = 0;      //Define a value to determine the button value
int count = 0;      //Define a loop count

void setup() {
    // Serial port options for control of the Cube using serial commands are:
  // 0: Control via the USB connector (most common).
  // 1: Control via the RXD and TXD pins on the main board.
  // -1: Don't attach any serial port to interact with the Cube.
  cube.begin(0, 115200); // Start on serial port 0 (USB) at 115200 baud
  //Set the pin mode to input
  pinMode(ButtonPin,INPUT);
}

void loop() {
  //Defien a value to store the button value
  int ReadValue = digitalRead(ButtonPin); 
  //Determine whether the button is pressed
  if (ReadValue == 0) {
    //Eliminate the button jitter
    delay(10);  
    if (ReadValue == 0) {
      value = !value;
      //Accumulate count and cycle it within 0-2
      //Ternary arithmetic
      //If count is greater than 3, count = 0
      //If count is smaller than 3, count + 1
      count = count > 2 ? 0 : count + 1;
      Serial.print("The current status of the button is : ");
      Serial.println(value);
      Serial.println(count);
    }
    //Again, determine whether the button is still pressed
    //Pressed: execute the loop; Released: exit the loop to run next code
    while (digitalRead(ButtonPin) == 0); 
  }
  //When count = 0, water flow light in axis x
  //When count = 1, water flow light in axis y
  //When count = 2, water flow light in axis z
  xaxis(count);
  yaxis(count);
  zaxis(count);

}

//water flow light in axis X
void xaxis(int count){
  int x = 0;
  int y = 0;
  int z = 0;
  //
  if (count == 0) {
    for (int i = 0; i < 4; i++){
      cube.line(x, y, z, x, y , z + 3, YELLOW);
      cube.line(x, y + 1, z, x, y + 1, z + 3, GREEN);
      cube.line(x, y + 2, z, x, y + 2, z + 3, RED);
      cube.line(x, y + 3, z, x, y + 3, z + 3, WHITE);
      x++;
      if(x > 4){
        x = 0;
      }
      delay(200);
    }
    cube.all(BLACK);
  }
}

//water flow light in axis y
void yaxis(int count){
  int x = 0;
  int y = 0;
  int z = 0;
  if(count == 1){
    for (int i = 0; i < 4; i++){
      cube.line(x, y, z, x, y, z + 3, PURPLE);
      cube.line(x + 1, y, z, x + 1, y, z + 3, PINK);
      cube.line(x + 2, y, z, x + 2, y, z + 3, BLUE);
      cube.line(x + 3, y, z, x + 3, y, z + 3, WHITE);
      y++;
      if(y > 4){
        y = 0;
      }
      delay(200);
    }
    cube.all(BLACK);
  }
}

//water flow light in axis z
void zaxis(int count){
  int x = 0;
  int y = 0;
  int z = 0;
  if (count == 2){
    for (int i = 0; i < 4; i++){
      cube.line(x, y, z, x + 3, y, z, BLUE);
      cube.line(x, y + 1, z, x + 3, y + 1, z, RED);
      cube.line(x, y + 2, z, x + 3, y + 2, z, ORANGE);
      cube.line(x, y + 3, z, x + 3, y + 3, z, PURPLE);
      z++;
      if(z > 4){
        z = 0;
      }
      delay(200);
    }
    cube.all(BLACK);
  }
}

quelqu'un saurait-il me traduire la phrase ?

Je cherche aussi un référenciel français des commandes C++ : tout ceux que je trouve amène aux descriptions des commandes en anglais, et je ne suis pas trop à l'aise avec...

Mon but, in fine, est de regrouper quelques un des scripts fournis qui me plaisent (modifiés si nécessaire) dans un même code qui me permettrait de changer de script en pressant un bouton. En espérant bien sûr de ne pas dépasser la capacité mémoire de la carte Leonardo !
Je pensais utiliser la commande SWITCH ... CASE ... mais en lisant la phrase en question je me dis qu'on peut optimiser le truc !

Cordialement,
Gilles.

Cette ligne de code utilise l'opérateur ternaire

condition ? expression_1 : expression_2
si condition == True
     faire expression_1
sinon
     faire expression_2

Donc la ligne de code peut se traduire en

if (count > 2){
   count = 0;
} else {
   count = count + 1;

A noter qu'un commentaire dans le code est faux

//If count is greater than 3, count = 0

devrait être

//If count is greater than 2, count = 0

@fdufnews : Merci beaucoup.
Que penses-tu de mon idée d'utiliser SWITCH CASE pour mon projet ?

Pourquoi pas.
En programmation, il y a différentes manières de faire la même chose switch... case ... est l'une d'elles.

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