======= 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 ...