tableau

bonjour a tous

imaginons que on a un tableau

int repere[] ={0 ,2 ,4 ,6 ,8 ,10 ,12 ,14 ,16 ,18 ,20 ...}

qui va jusqu'a 60 il y a un moyens de faire plus simple ou plus compacte ??

for (byte i = 0; i<31; i++) repere[i] = i*2;

35 caractères sans les espaces. Plus compact, tu meurs... mais je lance le concours de compacité-geek sur la question...

merci pour la réponce rapide lesept :slight_smile:

for (int i = 0; i<31; i++) repere[i] = i*2;

34 !!

^^ bon je reviens car sa marche pas ;(

#include <Wire.h>
#include <RTClib.h>
#include <Adafruit_NeoPixel.h>
 
OneButton button1(A1, true);
int PIN = 13 ;
int PIXEL = 60 ;
int BOUTON = A1 ;
int fadeAmount = 35 ;
int i = 6;
int j = 0;
int luminositer = 127;
int appui1 = 0 ;
int appui2 = 0 ;
int appui3 = 0 ;

int repere[34];


int buttonState = 0;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL, PIN, NEO_GRB + NEO_KHZ800);

RTC_DS1307 RTC; // Establish clock object
DateTime Clock; // Holds current clock time

int hourval, minuteval, secondval;

//OneButton button1(A1, true);
void setup() {

 
 strip.setBrightness(luminositer);
 
 //pinMode (BOUTON, INPUT);
 
 Serial.begin(2000000);
   while (!Serial) {}
  Wire.begin();          // Begin I2C
  RTC.begin();   // begin clock


Serial.println("Starting TwoButtons...");

  button1.attachClick(click1);
  button1.attachDoubleClick(doubleappui1);
  button1.attachLongPressStart(longPressStart1);
  button1.attachLongPressStop(longPressStop1);
  button1.attachDuringLongPress(longPress1);
    
 
  //RTC.adjust(DateTime(__DATE__, __TIME__));
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  

}


void loop() {
  
 
 Horloge();

  Serial.println(luminositer);
  Serial.println(j);
  Serial.println(i);
  Serial.println(appui1);
  Serial.println(appui2);
  Serial.println(appui3);
  
}


void Horloge(){
Clock = RTC.now(); // get the RTC time
   
    secondval = Clock.second();  // get seconds
    minuteval = Clock.minute();  // get minutes
    hourval = Clock.hour();   // get hours
 
 for (byte i = 0; i<34; i++) repere[i] = i*2;

    if(hourval > 11) hourval -= 12;{ // This clock is 12 hour, if 13-23, convert to 0-11
    hourval = (hourval*60 + minuteval) / 12;   
    }
 
 strip.setPixelColor(repere, 0x008080);
 
 
 
 strip.setPixelColor(hourval, 0x008080);
 strip.setPixelColor(minuteval, 0x800080);
 strip.setPixelColor(secondval, 0x808000);

(j'ai pas tous mi)
sa téléverse
la partie heur marche mes sa affiche pas tous les point

'c'est toujours sur l'horloge

repere est un tableau, mais setPixelColor ne marche que sur un pixel. tu dois faire une boucle

for (byte i = 0; i<34; i++) strip.setPixelColor(repere[i], 0x008080);

Tu peux mettre l'initialisation de ton tableau repere dans le setup, inutile de le refaire à chaque fois.

sa dépendras d'une option que on choisi (avec un if) qui seras afficher ou non je vais faire pareil avec 5

pour quoi 34 et pas 30 ??

C'était dans ton code. J'ai copié collé...

a oui j'ai pas remarquer je sais pas dous sa vient XD

Roooooooô...

bon dernier question pour aujourd'hui comment on fait pour avoir deux couleur
(ex 5 , 15 , 25 , 35 ..... en rouge
et 10 , 20 , 30 , 40 ..... en bleu

j'ai tester sa

if (k == 3){
		for (int j = 0; j<30; j++) repere[j] = j*10+5;
		for (int l = 0; l<30; l++) repere[l] = l*10+10;

		for (byte j = 0; j<30; j++) strip.setPixelColor(repere[j], 0x000202);
		for (byte l = 0; l<30; l++) strip.setPixelColor(repere[l], 0xFF0202);
	}

mes sa effectue que l

Pour ton mémo personnel: void veut dire vide. C’est un type pas une fonction. Une fonction de type void sera une fonction qui ne renverra rien.

Je suppose que tu veux dire

  • 0 1 2 3 4 en bleu
  • 5 6 7 8 9 en rouge
  • 10 11 12 13 14 en bleu
  • Etc.
  • 25 26 27 28 29 en rouge
for (int i=0; i<3; i++) {
  for (int j=0 ;j<5;j++) {
    strip.setPixelColor(i*10+j, 0x0000ff); // bleu
    strip.setPixelColor(i*10+j+5, 0xff0000); // rouge
  }
}

non

5 15 25 ... en rouge
10 20 30 ... en bleu
et le reste 1 2 3 4 6 7 8 9 11 12 ... en off

juste en modifient les valeur sa a régler merci ^^

for (int i=0; i<1; i++) {
  for (int j=0 ;j<6;j++) {
    strip.setPixelColor(i*10+j, 0x0000ff); // bleu
    strip.setPixelColor(i*10+j+5, 0xff0000); // rouge
  }
}