======= Fabriquer une etoile avec un arduino =======

===== etoile exemple ====

[[https://youtu.be/OGeh2y7sKUc|La Video]]

le code arduino :

<code cpp etoile.ino>

long portPotentiometre = A0;
long valeurPotentiometre;

void setup() 
{
Serial.begin(9600); pinMode(13, OUTPUT); 
} // boucle d'allumage 


void loop() {
  valeurPotentiometre = analogRead(A0); 
  delay(1); 
  digitalWrite(10, HIGH);
  delay(valeurPotentiometre); 
  valeurPotentiometre = analogRead(A0);
  delay(1); digitalWrite(11, HIGH);
  delay(valeurPotentiometre); valeurPotentiometre = analogRead(A0);
  delay(1); digitalWrite(12, HIGH);
  delay(valeurPotentiometre); valeurPotentiometre = analogRead(A0); 
  delay(1); digitalWrite(13, HIGH);
  delay(valeurPotentiometre); valeurPotentiometre = analogRead(A0);
  delay(1); digitalWrite(14, HIGH); 
  delay(valeurPotentiometre); // boucle d'arret 
  digitalWrite(10, LOW); delay(valeurPotentiometre);
  valeurPotentiometre = analogRead(A0);
  delay(1); digitalWrite(11, LOW);
  delay(valeurPotentiometre); valeurPotentiometre = analogRead(A0);
  delay(1); digitalWrite(12, LOW); 
  delay(valeurPotentiometre); valeurPotentiometre = analogRead(A0); 
  delay(1); digitalWrite(13, LOW);
  delay(valeurPotentiometre); valeurPotentiometre = analogRead(A0); 
  delay(1); digitalWrite(14, LOW);
  delay(valeurPotentiometre); }
}

</code>


==== etoile exemple 2 ====
Ceci est un code pour l'Arduino permettant de faire clignoter deux leds
à des fréquences différentes sans l'utilisation de la fonction delay()




<code cpp LEDS_clignotent.ino>

// on déclare les périodes des deux leds 
float period1 = 1000; // un clignotement par seconde
float period2 = 1000/3.0; // un clignotement par tiers de seconde

void setup() {
  // on utilise les sorties 9 et 10 pour les leds
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() {
  long t = millis();

  // la fonction getStateAtTimeWithPeriod() retourne l'état que doit prendre la led au temps t 
  // et à la période donnée.
  digitalWrite(9, getStateAtTimeWithPeriod(t, period1));
  digitalWrite(10, getStateAtTimeWithPeriod(t, period2));
}

boolean getStateAtTimeWithPeriod(long t, float period) {
  boolean onOrOff = ((int)(t / period)) % 2;
  return onOrOff;
}
</code>

==== fichiers STL d'etoiles ====
{{ :start:arduino:etoiles.stl.zip |Fichiers .stl  d'etoiles}}


==== Exemples avec Mblock pour 4 LEDs ====


{{ :start:arduino:mblok_leds_exemple001.jpg?500 |Mblock et LEDs}}



==== Exemples avec Mblock pour 6 LEDs ====


{{ :start:arduino:etoile_scratch_uno_001.jpg?direct&400 |}}

Le même programme mais en utilisant une boucle

{{ :start:arduino:etoile_scratch_uno_002.jpg?direct&400 |Avec une boucle FOR}}



==== Réalisations ====

[[start:arduino:peinture_conductrice|realiser sa propre peinture conductrice]]

[[https://www.tinkercad.com/things/8Mc0ho3KdWA-attiny-85-charlymultiplexing/editel?sharecode=aRWKuFs_9n71lHlAN_QI_RzG4HGlZuoSkm19hTroFgg=|Attiny et Charlieplexingavec 6 leds]]

{{ :start:arduino:etoile003l.jpg?direct&400 |}}


{{ :start:arduino:schema-attiny-85_6leds3.jpg?direct&500 |}}

{{ :start:arduino:arduino-charlieplex-leds.jpg?direct&600 |}}


Un exemple de programme

<code cpp  Un_exemple_de_programme_Attiny_6LEDS_CharliePlexing.ino>

#define LED_1 0 // Pin 0 de l'attiny85 , broche 5 arduino Uno
#define LED_2 1 // Pin 1 de l'attiny85 , broche 6 arduino Uno
#define LED_3 2 // Pin 2 de l'attiny85 , broche 7 arduino Uno

void setup()
{
   pinMode(LED_1, INPUT);
   pinMode(LED_2, INPUT);
   pinMode(LED_3, INPUT);
}

void loop()
{
   set_pins(LED_1, LED_2);
   delay(100);
   set_pins(LED_2, LED_1);
   delay(100);
   set_pins(LED_3, LED_1); 
   delay(100);
   set_pins(LED_1, LED_3);
   delay(100);
   set_pins(LED_2, LED_3);
   delay(100);
   set_pins(LED_3, LED_2);
   delay(100); 
}

void set_pins(int high_pin, int low_pin)
{
   reset_pins();
   pinMode(high_pin, OUTPUT);
   pinMode(low_pin, OUTPUT);
   digitalWrite(high_pin, HIGH);
   digitalWrite(low_pin,LOW);
}

void reset_pins()
{
   pinMode(LED_1, INPUT); 
   pinMode(LED_2, INPUT);
   pinMode(LED_3, INPUT);
   digitalWrite(LED_1, LOW);
   digitalWrite(LED_2, LOW);
   digitalWrite(LED_3, LOW);
}
</code>

Etoile pour un arduino Uno sans charliePlexing


{{ :start:arduino:swanky_krunk-juttuli.png?direct&600 |}}

Code pour un arduino Uno sans charliePlexing

[[https://create.arduino.cc/editor/gl37/7a235a79-a6d0-459f-9824-11ffdb8543c4/preview|Lien IDE arduino en ligne]]

<code c Uno-sans_charlieplexing.ino>
// ce programme allulme les leds une par une
int pin[6]={3,4,5,6,7,8};
int temp0=200; //tempo pour allumer les leds
int temp1=100; // tempo pour eteindre

void setup(){
for (int i = 0 ; i<=5 ; i++){
   pinMode(pin[i], OUTPUT);
   }
}

void loop(){
for (int i = 0 ; i<=5 ; i++){ // boucle for pour allumer les leds une par une
   digitalWrite(pin[i], HIGH);
   delay(temp0);
   }
for (int i = 5 ; i>=0 ; i--){
   digitalWrite(pin[i], LOW);
   delay(temp1);
   }
}
</code>

A suivre ...