Chenillard anneau 16 LED Nano

Bonjour,
Je suis un débutant sur arduino depuis quelque mois.
Voici un premier projet fini et fonctionnel composer de
1 Arduino Nano
1 carte PCB 2.54 mm découpé en disque de 50mm
4 LED Vert 5mm
4 LED rouge 5mm
4 LED blanc 5mm
4 LED Bleu 5mm
16 résistance 220 Omhs
Le principe est simpliste c'est d'allumer l'une après l'autre les LED .
voici le code que j'ai fait (parmi tous les exemple que j'ai trouvé sur le net)

#include <EEPROM.h>
const int TEMPO = 100;
uint16_t data;
void dataWrite(uint16_t data);
// de S1 à S4 tableau des séquence 
int s1[] = { 257,514,1028,2056,4112,8224,16448,32896,257,514,1028,2056,4112,8224,16448,16512}; // Rotation de 2 LED diamètralement oppées
int s2[] = { 33153,771,1542,3084,6168,12336,24672,49344,33153,771,1542,3084,6168,12336,24672,49344};// Rotation de 4 LED diamètralement oppées
int s3[] = { 49601,33667,1799,3598,7196,14392,28784,57568,49601,33667,1799,3598,7196,14392,28784,57568};// Rotation de 6 LED diamètralement oppées
int s4[] = { 57825,50115,34695,3855,7710,15420,30840,61680,57825,50115,1927,3855,7710,15420,30840,61680};// Rotation de 8 LED diamètralement oppées
void setup() { // init des sortie D0 à D15 en sortie
  for (int i = 0; i < 16; i++) {
    pinMode(i, OUTPUT);
  }
}
void loop() {
  for (int j = 0; j < 16; j++) {// séquence S1
    dataWrite(s1[j]); // Mise a 1 des sorties
    delay(TEMPO);
  } 
  for (int j = 0; j < 16; j++) {
    dataWrite(s2[j]);
    delay(TEMPO);
  } 
   for (int j = 0; j < 16; j++) {
    dataWrite(s3[j]);
    delay(TEMPO);
  } 
  for (int j = 0; j < 16; j++) {
    dataWrite(s4[j]);
    delay(TEMPO);
  } 
}
void dataWrite(uint16_t data) {// fonction interpretant la valeur ex S1 [0]: décimal 257 en binaire 0000000100000001
  for (int i = 0; i < 16; i++) {
    digitalWrite(i, bitRead(data, i));
  }
}


Screen du tableau excel pour écrire les séquences tableau S1[] du code IDE

photo
du boitier print 3D

photo du montage



Photo en fonctionnement

cordialement
jeepee0407

Bonjour jeepee0407

Le moins que je puisse dire, c'est que tu débutes bien :wave:
L'impression 3D, superbe!

L'usage d'Excel, c'est malin!
Est ce que tu crées les lignes:

int s1[] = { 257,514,1028,2056,4112,8224,16448,32896,257,514,1028,2056,4112,8224,16448,16512}; // Rotation de 2 LED diamètralement oppées
int s2[] = { 33153,771,1542,3084,6168,12336,24672,49344,33153,771,1542,3084,6168,12336,24672,49344};// Rotation de 4 LED diamètralement oppées
int s3[] = { 49601,33667,1799,3598,7196,14392,28784,57568,49601,33667,1799,3598,7196,14392,28784,57568};// Rotation de 6 LED diamètralement oppées
int s4[] = { 57825,50115,34695,3855,7710,15420,30840,61680,57825,50115,1927,3855,7710,15420,30840,61680};// Rotation de 8 LED diamètralement oppées

directement via Excel ou tu retapes les valeurs. "En son temps" j'avais fait un feuille Excel qui me générai directement l'include avec le tableau des valeurs.

Beau boulot!
Cordialement
jpbbricole

Salut
et merci
Pour les tableaux de séquence S1[]. Je fais s du copier coller de Excel via IDE.
je ne sais pas si il y a un moyen d'inclure directement les tableaux Excel dans Arduino IDE (appelle du fichier Excel dans le Setup du code).
Si il y a une astuce je suis preneurs.
Cordialement

Tu peux écrire les tableaux directement en notation binaire, je ne vois pas l'intérêt d'utiliser excel..?

uint16_t s1[] =
{
  0b0000000100000001,
  0b0000001000000010,
  ...

Et puis, pour des séquences si simples, il n'y a même pas besoin de tableaux en fait :slight_smile:

Bonsoir jeepee0407

Dans Excel, faire une macro qui crée un fichier tableaux_S.h par exemple, tableau qui est écrit dans le répertoire du sketch et qui est appelé:

// de S1 à S4 tableau des séquence
#include "tableaux_S.h"

Je recherche ce que j'ai déjà fait.

A+
Cordialement
jpbbricole

bonsoir,
l'avantage de prendre Excel c'est que je peux aisément remplir mon tableau S1[] en saisissant dans la matrice excel de 16x16 cellules seulement les "1" qui correspondent aux LED à l'état 1.
je peux avoir facilement un visu des séquences
et une formule "=concatainer()" me donne le code pour l'arduino IDE (copier coller).
la ligne : uint16_t S1 [] { 0b10001000, etc
est aussi plus longues à saisir
cordialement

Bonsoir jeepee0407

J'ai retrouvé la feuille Excel que j'avais faite, j'en tire un exemple pour ton chenillard.

A+
Cordialement
jpbbricole

Bonjour jeepee0407

Voilà, la "mécanique" du paramétrage d'un sketch Arduino depuis une feuille Excel.
Pour l'exercice, le sketch se trouve dans le répertoire
C:\ArduinoDev\Projets\ARDFR_jeepee0407_ChenillardAnneau

La feuille Excel sert à gérer et recréer ces lignes:

int s1[] = { 257,514,1028,2056,4112,8224,16448,32896,257,514,1028,2056,4112,8224,16448,16512}; // Rotation de 2 LED diamètralement oppées
int s2[] = { 33153,771,1542,3084,6168,12336,24672,49344,33153,771,1542,3084,6168,12336,24672,49344};// Rotation de 4 LED diamètralement oppées
int s3[] = { 49601,33667,1799,3598,7196,14392,28784,57568,49601,33667,1799,3598,7196,14392,28784,57568};// Rotation de 6 LED diamètralement oppées
int s4[] = { 57825,50115,34695,3855,7710,15420,30840,61680,57825,50115,1927,3855,7710,15420,30840,61680};// Rotation de 8 LED diamètralement oppées

dans un fichier nommé tableaux_S.h qui sera mis automatiquement dans le répertoire du sketch.
Ces lignes seront remplacées par un:
#include "tableaux_S.h"
et, dans l'IDE Arduino, au lancement du sketch, il y aura un onglet supplémentaire:
image

Le nom du fichier complet y compris son chemin est à mettre ici:

Pour générer une nouvelle version du fichier, cliquer sur:
image

A chaque nouvelle génération, il faudra quitter et relancer l'IDE Arduino avec le sketch.

La feuille Excel:
ARDFR_jeepee0407_ChenillardAnneau.zip (24.4 KB)

A+
Cordialement
jpbbriucole

Bonjour,
J'aime bien cette réalisation. Et chapeau pour l'impression 3D.

Merci pour ton message
Cordialement

salut
encore un gros merci pour l'astuce.
je vais pouvoir inclure ma matrice binaire 16x16 dans le fichier *.xlsm
cordialement
jeepee0407

Merci pour ce projet,je compte le faire puis l'adapte sur un truc de + grande envergure,pourrait tu poster des shcemas de ton montage? :space_invader:
J'amire ceux qui creé par leur main!! :star_struck: :+1:

C'est mieux,merci!!
Au fait,pourquoi utilise tu des nombres,au lieu de donner simplement des valeurs HIGH ou LOW a tes broches?
Loin de vouloir critiquer,je me renseigne,je suis moi meme un amateur!!

Bonjour,
J'ai un UNO, est ce que le programme est compatible?

Evidemmant,les projet sur NANO sont tous compatible sur UNO!!! C'est le meme microcontrolleur!

1 Like

Dans l'instruction digitalWrite ("Nom de la PinOut", "Etat de la sortie") Arduino IDE considère que la Valeur numérique 1 coresespont a l'État " HIGH et 0 Pour LOW

Ok,merci!!

Le programme, c'est bien celui du post 1?

oui
voici le lien pour autre version (commande avec bouton poussoir)
les séquences de défilement des LED est défini par la pression sur Les Bp