Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Le 27/07/2022 début de la migration pour utiliser le PCB BELEN MUSIC BOX
- // Le 27/07/2022 OK fonctionne sur les fonctions principales
- // Le 27/07/2022 17H40 OK fonctionne avec 2 Touch supplémentaires : "BPPause" restart et "BPMosfetGate" : mise à zéro de la sortie 5 destinée infine à forir de la puissance au Neopixel
- // Restera à mettre une valeur fixe pour Outime ==>FAIT
- // Le 29/07/2022 13H43 : Réglage des Beeps OK
- // Le 29/07/2022 18H40 : Essai en cours infructueux de faire correspondre un DAC avec un Appui sur Touch
- // Le 30/07/2022 17H40 : Les DACs correspondent, quelques valeurs parasites subisistent, il faudra les rendre inoffensives, reste encore une petite anomalie sur Qt1
- // Le 12/08/2022 14H49 : Plus de problème "Touch" le support en bois a été remplacé par un système en PVC
- // Le 12/08/2022 21H06 : Tentative sans succés de mémoriser la teinte
- // Le 13/08/2022 11H26 : Recherche du pourquoi "Chroma plus" lors de l'arrêt automatique
- // Le 13/08/2022 11H33 : Résolu par modification de la valeur DAC de 186 à 744
- // Le 13/08/2022 16H25 : Résolu le chroma + et le chroma - qui comptaient dans le mauvais sens. Arrêt dans le prochaine version des recherches de mise en EEPROM de la teinte (irrésolu).
- // Le 13/08/2022 17H13 : Mise en place d'une butée descente et montée sur teinte chromatique, 2 nouveaux messages à venir
- // *************************************************************************************************************************************
- #include <Adafruit_NeoPixel.h> // Librairie pour la gestion des LED RGB NeoPixel de l'Objet NeoPixel
- #include "Adafruit_FreeTouch.h"
- Adafruit_FreeTouch qt_1 = Adafruit_FreeTouch(A8, OVERSAMPLE_4, RESISTOR_20K, FREQ_MODE_NONE); // UpChroma
- Adafruit_FreeTouch qt_2 = Adafruit_FreeTouch(A9, OVERSAMPLE_4, RESISTOR_20K, FREQ_MODE_NONE); // DownChroma
- Adafruit_FreeTouch qt_4 = Adafruit_FreeTouch(A7, OVERSAMPLE_4, RESISTOR_20K, FREQ_MODE_NONE); // RESET (coupure lumière)
- Adafruit_FreeTouch qt_3 = Adafruit_FreeTouch(A10, OVERSAMPLE_4, RESISTOR_20K, FREQ_MODE_NONE); // VccCoupure
- //#define BrocheDAC A0
- int ValueDAC = 0;
- #define BrochePotarLuminosite A4
- #define BrocheBuzzer 1
- #define BrocheDELPlusTeinteChroma 2
- #define BrocheDELMoinsTeinteChroma 3
- #define BrocheSortieActivationVcc 5
- #define BrocheObjetNeopixel 6
- int EtatTouchActivationVcc = HIGH;
- int EtatTouchActivationReset = HIGH;
- unsigned long interval = 2000000;
- bool Outtime = false;
- const int nombreLEDObjetNeopixel = 8; // Nombre de LED RGB NeoPixel de l'Objet NeoPixel
- int LuminositeCourante = 20; // Valeur de la luminosité courante de l'Objet NeoPixel (entre 0 et 255)
- int ValeurANALuminositeLue = 0; // Valeur analogique lue sur l'entrée du potentiomètre de réglage de la luminosité (entre 0 et 1023)
- long PasCourant = 0; // Valeur du pas courant de déplacement lors du parcours les valeurs des teintes de la roue chromatique
- int ValeurANAPasLue = 0; // Valeur analogique lue sur l'entrée du potentiomètre de réglage du pas (entre 0 et 1023)
- bool EtatBPPlusTeinteChroma = LOW; // Etat courant du bouton poussoir "BPPlusTeinteChroma"
- bool EtatBPMoinsTeinteChroma = LOW;
- //long TeinteRoueChromatique =65535;
- long TeinteRoueChromatique = 32768; // Valeur de la teinte courante de la roue chromatique
- //long TeinteRoueChromatique =16384;
- //long TeinteRoueChromatique =8192;
- //long TeinteRoueChromatique =4096;
- //long TeinteRoueChromatique =2048;
- //long TeinteRoueChromatique =1024;
- //long TeinteRoueChromatique =512;
- //long TeinteRoueChromatique =1;
- Adafruit_NeoPixel ObjetNeopixel(nombreLEDObjetNeopixel, BrocheObjetNeopixel, NEO_GRB + NEO_KHZ800); // Crée l'objet "ObjetNeopixel"
- void setup()
- {
- Serial.begin(115200);
- pinMode (A0, INPUT); // Artifice pour ne pas envoyer de tension aléatoire
- delay(10);
- analogReadResolution(10); // Spécification résolution à utiliser pour la lecture ANA
- analogWriteResolution(10); // Spécification résolution à utiliser pour l'écriture ANA (DAC)
- delay(2);
- SerialUSB.begin(115200);
- if (! qt_1.begin())
- SerialUSB.println("Failed to begin qt on pin A8");
- if (! qt_2.begin())
- SerialUSB.println("Failed to begin qt on pin A9");
- if (! qt_3.begin())
- SerialUSB.println("Failed to begin qt on pin A7");
- if (! qt_4.begin())
- SerialUSB.println("Failed to begin qt on pin A10");
- pinMode (BrocheDELPlusTeinteChroma, OUTPUT);
- pinMode (BrocheDELMoinsTeinteChroma, OUTPUT);
- pinMode (BrocheSortieActivationVcc, OUTPUT);
- pinMode (BrocheBuzzer, OUTPUT);
- #define BrocheDAC A0
- ValueDAC = 527;
- analogWrite(BrocheDAC, ValueDAC);
- delay(2000);
- //delay(100);
- digitalWrite (BrocheSortieActivationVcc, HIGH);
- delay(10);
- ValueDAC = 527;
- analogWrite(BrocheDAC, ValueDAC);
- delay(2000);
- // delay(100);
- //Buzzer(50, 120, 5);
- ObjetNeopixel.begin(); // Démarre la librairie NeoPixel pour la gestion des LED RGB NeoPixel de l'Objet NeoPixel
- ObjetNeopixel.show(); // Eteint toutes les LED RGB NeoPixel de l'Objet NeoPixel
- ObjetNeopixel.setBrightness(LuminositeCourante); // Définit la luminosité courante des LED RGB NeoPixel de l'Objet NeoPixel
- delay(10); // Temporise 10 millisecondes
- //interval = interval + millis();
- delay(5);
- }
- void loop()
- {
- /* if (analogRead (BrocheDAC) < 160)
- {
- analogWrite(BrocheDAC, 5);
- //delay(100);
- }*/
- Serial.print ("TEINTE : ");
- Serial.println (TeinteRoueChromatique);
- if ((millis() >= interval) && digitalRead (BrocheSortieActivationVcc) == HIGH) // Outime false permet de n'actionner la tempo qu'une fois parmi tous les cycles
- {
- Buzzer(130, 200, 8);
- //ValueDAC = 186;
- ValueDAC = 744;
- delay (10);
- analogWrite(BrocheDAC, ValueDAC); // Activation MSG01 : Arrêt en cours
- delay (2000);
- digitalWrite (BrocheSortieActivationVcc, LOW);
- EtatTouchActivationVcc = LOW;
- delay (10);
- interval = interval + millis();
- Outtime = false;
- }
- int qt1_Threshold = 750;
- int qt2_Threshold = 700;
- int qt3_Threshold = 700;
- int qt4_Threshold = 700;
- /*int qt1_Threshold = 800;
- int qt2_Threshold = 800;
- int qt3_Threshold = 800;
- int qt4_Threshold = 800;*/
- /*int qt1_Threshold = 790;
- int qt2_Threshold = 820;
- int qt3_Threshold = 800;
- int qt4_Threshold = 800;*/
- digitalWrite(LED_BUILTIN, HIGH);
- int qt1 = 0;
- int qt2 = 0;
- int qt3 = 0;
- int qt4 = 0;
- qt1 = qt_1.measure();
- qt2 = qt_2.measure();
- qt3 = qt_3.measure();
- qt4 = qt_4.measure();
- if (qt1 >= qt1_Threshold)
- {
- digitalWrite (BrocheDELPlusTeinteChroma, HIGH); // Activation MSG02 : Chroma Plus
- }
- else
- {
- digitalWrite (BrocheDELPlusTeinteChroma, LOW);
- }
- //delay(10);
- if (qt2 >= qt2_Threshold)
- {
- digitalWrite (BrocheDELMoinsTeinteChroma, HIGH); // Activation MSG03 : Chroma Moins
- }
- else
- {
- digitalWrite (BrocheDELMoinsTeinteChroma, LOW);
- }
- if (digitalRead(BrocheDELPlusTeinteChroma) == HIGH && digitalRead(BrocheDELMoinsTeinteChroma) == LOW && digitalRead (BrocheSortieActivationVcc) == HIGH)
- {
- ValueDAC = 279;
- analogWrite(BrocheDAC, ValueDAC);
- //delay(5);
- }
- if (digitalRead(BrocheDELPlusTeinteChroma) == HIGH && digitalRead(BrocheDELMoinsTeinteChroma) == LOW && digitalRead (BrocheSortieActivationVcc) == LOW)
- {
- ValueDAC = 837;
- analogWrite(BrocheDAC, ValueDAC);
- //delay(5);
- }
- /*if (analogRead (BrocheDAC) < 160)
- {
- analogWrite(BrocheDAC, 0);
- //delay(5);
- }*/
- if (digitalRead(BrocheDELPlusTeinteChroma) == LOW && digitalRead(BrocheDELMoinsTeinteChroma) == LOW)
- {
- ValueDAC = 0;
- analogWrite(BrocheDAC, ValueDAC);
- //delay(5);
- }
- /*if (analogRead (BrocheDAC) < 160)
- {
- analogWrite(BrocheDAC, 0);
- //delay(5);
- }*/
- //if (digitalRead(BrocheDELMoinsTeinteChroma)==HIGH && digitalRead(BrocheDELPlusTeinteChroma)==LOW)
- if (digitalRead(BrocheDELMoinsTeinteChroma) == HIGH && digitalRead(BrocheDELPlusTeinteChroma) == LOW && digitalRead (BrocheSortieActivationVcc) == HIGH)
- {
- ValueDAC = 434;
- analogWrite(BrocheDAC, ValueDAC);
- //delay(5);
- }
- if (digitalRead(BrocheDELMoinsTeinteChroma) == HIGH && digitalRead(BrocheDELPlusTeinteChroma) == LOW && digitalRead (BrocheSortieActivationVcc) == LOW)
- {
- ValueDAC = 837;
- analogWrite(BrocheDAC, ValueDAC);
- //delay(5);
- }
- /*if (analogRead (BrocheDAC) < 160)
- {
- //delay(5);
- }*/
- if ((qt4 >= qt4_Threshold) && digitalRead (BrocheSortieActivationVcc) == LOW)
- { // Activation MSG04 : Redémarrage Système
- Buzzer(150, 200, 4);
- delay(5);
- analogWrite(BrocheDAC, 0);
- delay(10);
- Serial.print ("TEINTE : ");
- Serial.println(TeinteRoueChromatique);
- Serial.print ("Longueur mémoire");
- delay(2000);
- NVIC_SystemReset();
- digitalWrite (BrocheSortieActivationVcc, HIGH);
- EtatTouchActivationVcc = HIGH;
- }
- if ((qt4 >= qt4_Threshold) && (EtatTouchActivationVcc == HIGH))
- {
- Buzzer(1000, 500, 1);
- delay(5);
- EtatTouchActivationVcc = HIGH;
- delay (500);
- ValueDAC = 651;
- analogWrite(BrocheDAC, ValueDAC); // Activation MSG05 : Système déjà en Marche
- delay (2000);
- ValueDAC = 0;
- analogWrite(BrocheDAC, ValueDAC);
- //EtatTouchActivationVcc = LOW;
- //delay (50);
- }
- /*if (analogRead (BrocheDAC) < 160)
- {
- //delay(5);
- }*/
- if ((qt3 >= qt3_Threshold) && EtatTouchActivationVcc == HIGH)
- {
- delay(5);
- Buzzer(100, 100, 3);
- ValueDAC = 744;
- analogWrite(BrocheDAC, ValueDAC); // Activation MSG06 : Arrêt Système
- delay(2000);
- ValueDAC = 0;
- analogWrite(BrocheDAC, ValueDAC);
- delay(10);
- digitalWrite (BrocheSortieActivationVcc, LOW);
- delay(10);
- Serial.print ("TEINTE : ");
- Serial.println (TeinteRoueChromatique);
- delay(100);
- Serial.print ("TEINTE : ");
- Serial.println (TeinteRoueChromatique);
- delay(10);
- EtatTouchActivationVcc = LOW;
- qt3 = 0;
- delay(100);
- }
- /*if (analogRead (BrocheDAC) < 160)
- {
- analogWrite(BrocheDAC, 0);
- //delay(5);
- }*/
- //if ((qt3 >= qt3_Threshold) && digitalRead (BrocheSortieActivationVcc) == LOW)
- if ((qt3 >= qt3_Threshold) && EtatTouchActivationVcc == LOW)
- {
- Buzzer(1000, 500, 1);
- delay (5);
- EtatTouchActivationVcc = LOW;
- digitalWrite (BrocheSortieActivationVcc, LOW);
- ValueDAC = 837;
- analogWrite(BrocheDAC, ValueDAC); // Activation MSG07 : Système déjà arrêté
- delay (2000);
- ValueDAC = 0;
- analogWrite(BrocheDAC, ValueDAC);
- EtatTouchActivationVcc = LOW;
- }
- /*if (analogRead (BrocheDAC) < 160)
- {
- analogWrite(BrocheDAC, 0);
- //delay(5);
- }*/
- ValeurANALuminositeLue = analogRead(BrochePotarLuminosite); // *** // Lit la valeur analogique sur l'entrée du potentiomètre de réglage de la luminosité (entre 0 et 1023)
- //LuminositeCourante = map(ratio1024, 0, 1023, 10, 255);
- LuminositeCourante = map(ValeurANALuminositeLue, 0, 1023, 3, 255); // Convertit la valeur analogique lue en valeur de la luminosité courante (entre 1 et 255)
- ObjetNeopixel.setBrightness(LuminositeCourante); // Définit la luminosité courante des LED RGB NeoPixel de l'Objet NeoPixel
- //ValeurANAPasLue = analogRead(BrochePotarPas); // **************** // Lit la valeur analogique sur l'entrée du potentiomètre de réglage du pas (entre 0 et 1023)
- ValeurANAPasLue = 1023;
- //PasCourant = map(ValeurANAPasLue, 0, 1203, 0, 254); // Convertit la valeur analogique lue en valeur de pas courant (entre 1 et 254)
- PasCourant = 350;
- //*****************************************************************************************************************************************************************
- //TeinteRoueChromatique = EEPROM.read (address);
- EtatBPPlusTeinteChroma = digitalRead(BrocheDELPlusTeinteChroma); // ******************* // Lit le bouton poussoir "BPPlusTeinteChroma"
- delay(50);
- //if (EtatBPPlusTeinteChroma == LOW) // ************************************ // Si pression sur le bouton poussoir "BPPlusTeinteChroma"
- if (EtatBPPlusTeinteChroma == HIGH) // ************************************ // Si pression sur le bouton poussoir "BPPlusTeinteChroma"
- {
- TeinteRoueChromatique = TeinteRoueChromatique + PasCourant; // Incrémente d'un pas la valeur de la teinte courante de la roue chromatique
- //EEPROM.update (address, TeinteRoueChromatique);
- //EEPROM.write (address,TeinteRoueChromatique);
- //Serial.println (TeinteRoueChromatique);
- if (TeinteRoueChromatique > 65535) // +++++++++ // Si la valeur de la teinte courante de la roue chromatique est supérieure à 65535
- {
- //TeinteRoueChromatique = 0; // Borne la valeur de la teinte courante de la roue chromatique
- TeinteRoueChromatique = 65535; // Stoppe la montée et bloque à 65535
- Buzzer(1000, 500, 1);
- delay (5);
- //EtatTouchActivationVcc = LOW;
- //digitalWrite (BrocheSortieActivationVcc, LOW);
- ValueDAC = 837; // Value DAC à changer, MSG pour signaler la butée haute et invitation à utiliser le bouton de descente
- analogWrite(BrocheDAC, ValueDAC); // Activation MSG07 : Système déjà arrêté!!! A REVOIR#########################
- delay (2000);
- ValueDAC = 0;
- analogWrite(BrocheDAC, ValueDAC);
- //EtatTouchActivationVcc = LOW;
- }
- delay(50); // Temporise 50ms
- }
- //*****************************************************************************************************************************************************************
- //*****************************************************************************************************************************************************************
- //TeinteRoueChromatique = EEPROM.read (address);
- EtatBPMoinsTeinteChroma = digitalRead(BrocheDELMoinsTeinteChroma); // **************** // Lit le bouton poussoir "BPMoinsTeinteChroma"
- delay(50);
- if (EtatBPMoinsTeinteChroma == HIGH) // ********************************** // Si pression sur le bouton poussoir "BPMoinsTeinteChroma"
- {
- TeinteRoueChromatique = TeinteRoueChromatique - PasCourant; // Décrémente d'un pas la valeur de la teinte courante de la roue chromatique
- if (TeinteRoueChromatique < 0) // +++++++++++++++++ // Si la valeur de la teinte courante de la roue chromatique est inférieure à 0
- {
- //TeinteRoueChromatique = 65535; // Borne la valeur de la teinte courante de la roue chromatique
- TeinteRoueChromatique = 0; // Stoppe la descente et bloque à zero
- Buzzer(1000, 500, 1);
- delay (5);
- ValueDAC = 837; // Value DAC à changer, MSG pour signaler la butée basse et invitation à utiliser le bouton de montée
- analogWrite(BrocheDAC, ValueDAC); // Activation MSG07 : Système déjà arrêté!!! A REVOIR#########################
- delay (2000);
- ValueDAC = 0;
- analogWrite(BrocheDAC, ValueDAC);
- //EtatTouchActivationVcc = LOW;
- }
- delay(50); // Temporise 50ms
- }
- EtatBPMoinsTeinteChroma = digitalRead(BrocheDELMoinsTeinteChroma); // ******************* // Lit le bouton poussoir "BPPlusTeinteChroma"
- delay(50);
- //*****************************************************************************************************************************************************************
- for (int numeroLED = 0; numeroLED < ObjetNeopixel.numPixels(); numeroLED++) // ************************************ // Parcourt les LED RGB NeoPixel de l'Objet NeoPixel
- {
- ObjetNeopixel.setPixelColor(numeroLED, ObjetNeopixel.gamma32(ObjetNeopixel.ColorHSV(TeinteRoueChromatique))); // Active la LED RGB NeoPixel de rang "numeroLED" avec une correction gamma de la teinte "TeinteRoueChromatique"
- }
- ObjetNeopixel.show(); // Rafraîchit l'affichage des LED RGB NeoPixel de l'Objet NeoPixel
- delay(100);
- }
- void Buzzer (int TempsH, int TempsL, int nb) // TempsH => délai buzzer ON, TempsL => délai buzzer OFF, nb => nombre de bips
- {
- for (int x = 1; x <= nb; x++) // Boucle le nombre de fois voulu passé par l'argument "int nb"
- {
- digitalWrite(BrocheBuzzer, HIGH); // Active le buzzer
- delay (TempsH); // Temporisation à l'état haut du buzzer pendant la durée passée par l'argument "int TempsH"
- digitalWrite(BrocheBuzzer, LOW); // Désactive le buzzer
- delay (TempsL); // Temporisation à l'état bas du buzzer pendant la durée passée par l'argument "int TempsL"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement