======= Fabriquer une etoile avec un arduino =======
===== etoile exemple ====
[[https://youtu.be/OGeh2y7sKUc|La Video]]
le code arduino :
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); }
}
==== 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()
// 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;
}
==== 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
#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);
}
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]]
// 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);
}
}
A suivre ...