Outils pour utilisateurs

Outils du site


start:arduino:etoile

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
start:arduino:etoile [2018/08/17 10:34] – [Réalisations] gerardadminstart:arduino:etoile [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +======= 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 ...