#include "web.h" void web_setup () { //Creation des différents styles //Les verts pour la mise en mrche de la seringue sprintf(couleur1, "background-color: #%06X;", (unsigned int) 0xb2dbbf); sprintf(couleur2, "background-color: #%06X;", (unsigned int) 0x5a8668); //Le rouge pour la seringue a l'arrêt sprintf(couleur3, "background-color: #%06X;", (unsigned int) 0xc97064); sprintf(couleur4, "background-color: #%06X;", (unsigned int) 0x762419); //Les marrons pour la config des seringues sprintf(couleur5, "background-color: #%06X;", (unsigned int) 0xce9f6f); sprintf(couleur6, "background-color: #%06X;", (unsigned int) 0x926448); sprintf(couleur7, "background-color: #%06X;", (unsigned int) 0x0a7477); sprintf(couleur8, "background-color: #%06X;", (unsigned int) 0x052a38); sprintf(couleur9, "background-color: #%06X;", (unsigned int) 0x044365); sprintf(couleur10, "background-color: #%06X;", (unsigned int) 0x58b8c3); //Create tabs uint16_t tab1 = ESPUI.addControl(ControlType::Tab, "Configurations", "Configurations"); uint16_t tab3 = ESPUI.addControl(ControlType::Tab, "Nouvelle Seringue", "Nouvelle seringue"); uint16_t tab4 = ESPUI.addControl(ControlType::Tab, "Caracteristiques du pousse-seringue", "Caracteristiques du pousse-seringue"); //***Above all***// //***Syringe-pump***// status_syringe_pump = ESPUI.label("Etat du pousse-seringue :", ControlColor::None, "A l'arrêt"); activation_syringe_pump = ESPUI.addControl(ControlType::Switcher, "Mise en marche", "Arrêt", ControlColor::None, status_syringe_pump, syringe_pump_callback, (void*)19); //Style style (status_syringe_pump, 2); style (activation_syringe_pump, 2); //***Syringe-filled***// status_syringe_filled = ESPUI.label("Etat de la seringue :", ControlColor::None, "Pas en place"); syringe_filled_placement = ESPUI.addControl(ControlType::Switcher, "Mise en marche", "Arrêt", ControlColor::None, status_syringe_filled, syringe_filled_placement_callback, (void*)19); //Style style (status_syringe_filled, 2); style (syringe_filled_placement, 2); //***Initialisation***// initialisation = ESPUI.button("Initialisation", initialisation_callback, ControlColor::None, ""); //ESPUI.updateVisibility(initialisation, false); //Style style (initialisation, 2); //Deplacement demandé du pousse-seringue position_choice = ESPUI.number("Choix du volume à echanger", position_choice_callback, ControlColor::None, 0, 0, 50, (void*)19); label_position_choice = ESPUI.addControl(ControlType::Label, "Distance", "0", ControlColor::None, position_choice, status_position_choice_callback); ESPUI.addControl(ControlType::Slider, "Distance", "0", ControlColor::None, position_choice, progress_move_callback, (void*)19); ESPUI.sliderContinuous = true; //Style style (position_choice, 3); style (label_position_choice, 3); //TAB1 = Configurations //Choix de la seringue 1 ESPUI.addControl(ControlType::Separator, "Seringue 1", "", ControlColor::None, tab1); select_syringe_maj(tab1); uint16_t carac1 = ESPUI.addControl( ControlType::Label, "Caractéristiques de la seringue 1 : ", "D = 4mm, V = 10µL", ControlColor::None, tab1); style (carac1, 3); //TAB3 : Nouvelle seringue ESPUI.addControl(ControlType::Text, "Nom de la seringue :", "", ControlColor::None, tab3, text_callback); ESPUI.addControl(ControlType::Number, "Diamètre interne de la seringue en mm", "5", ControlColor::None, tab3, number_callback); ESPUI.addControl(ControlType::Number, "Volume total de la seringue en µL", "5", ControlColor::None, tab3, number_callback); add_syringe = ESPUI.addControl(ControlType::Button, "Ajouter la seringue", "Valider", ControlColor::None, tab3, add_syringe_callback, (void*)19); //TAB4 : Configurations avancées //Diamètre de la vis ESPUI.addControl(ControlType::Number, "Diamètre de la vis sans fin", "5", ControlColor::None, tab4, number_callback); //Sens de rotation du moteur ESPUI.addControl(ControlType::Switcher, "Sens de rotation du moteur", "Horaire", ControlColor::None, tab4, other_switch_callback); //Lancement ESPUI.begin("ESPUI Control"); } /************CALLBACK_METHODS****************/ void number_callback(Control* sender, int type) { Serial.println(sender->value); } void text_callback(Control* sender, int type) { Serial.print("Text: ID: "); Serial.print(sender->id); Serial.print(", Value: "); Serial.println(sender->value); } void select_callback(Control* sender, int value) { Serial.print("Select: ID: "); Serial.print(sender->id); Serial.print(", Value: "); Serial.println(sender->value); } void other_switch_callback(Control* sender, int value) { switch (value) { case S_ACTIVE: Serial.print("Active:"); break; case S_INACTIVE: Serial.print("Inactive"); break; } Serial.print(" "); Serial.println(sender->id); } void button_seringue(Control* sender, int type) { switch (type) { case B_DOWN: Serial.println("Button DOWN"); break; case B_UP: Serial.println("Button UP"); break; } } //Methods that are really useful void on_off_callback (Control* sender, int value, void* param) { Serial.println(String("param: ") + String(long(param))); switch (value) { case S_ACTIVE: Serial.print("Active:"); ESPUI.print(status_syringe_pump, "En marche"); style (status_syringe_pump, 1); style (activation_syringe_pump, 1); syringe_filled.move(); break; case S_INACTIVE: Serial.print("Inactive"); ESPUI.print(status_syringe_pump, "A l'arrêt"); style (status_syringe_pump, 2); style (activation_syringe_pump, 2); syringe_filled.stop(); break; } Serial.print(" "); Serial.println(sender->id); } void syringe_pump_on_off() { if (syringe_filled.is_running()) { ESPUI.updateControlValue(activation_syringe_pump, "1"); } ESPUI.updateControlValue(activation_syringe_pump, "0"); } void initialisation_callback (Control *sender, int type) { if((type == B_UP)) { Serial.printf("Go to zero"); syringe_filled.go_to_zero(); ESPUI.updateSwitcher(activation_syringe_pump, true); ESPUI.print(status_syringe_pump, "En marche"); style (status_syringe_pump, 1); } } void syringe_filled_placement_callback (Control* sender, int value, void* param) { Serial.println(String("param: ") + String(long(param))); switch (value) { case S_ACTIVE: Serial.print("Active:"); ESPUI.print(status_syringe_filled, "En place"); //Style style (status_syringe_filled, 1); style (syringe_filled_placement, 1); //Action ESPUI.updateVisibility(initialisation, false); ESPUI.updateLabel(status_syringe_pump, "En marche"); ESPUI.updateSwitcher(activation_syringe_pump, true); style (status_syringe_pump, 1); style (activation_syringe_pump, 1); syringe_filled.move(); break; case S_INACTIVE: Serial.print("Inactive"); ESPUI.print(status_syringe_filled, "Enlevé"); //Style style (status_syringe_filled, 2); style (syringe_filled_placement, 2); //Action ESPUI.updateVisibility(initialisation, true); break; } Serial.print(" "); Serial.println(sender->id); } void position_choice_callback (Control* sender, int value, void* param) { Serial.printf("val=%s\n", sender->value.c_str()); syringe_filled.set_exchange_volume_mL(atof(sender->value.c_str())); } void progress_move_callback (Control* sender, int value, void* param) { } void status_position_choice_callback (Control* sender, int value) { } void add_syringe_callback (Control* sender, int value, void* param) { syringe_filled.write_Json(); } void select_syringe_maj(uint16_t tab) { uint16_t select1 = ESPUI.addControl(ControlType::Select, "Choix de la seringue :", "", ControlColor::None, tab, select_callback); ESPUI.addControl(ControlType::Option, "Seringue A", "Opt1", ControlColor::None, select1); ESPUI.addControl(ControlType::Option, "Seringue B", "Opt2", ControlColor::None, select1); ESPUI.addControl(ControlType::Option, "Seringue C", "Opt3", ControlColor::None, select1); style (select1, 3); } void style (uint16_t id, int style) //Change style (1 is active, green; 2 is inactive, red; 3 is neutral, brown) { switch (style) { case 1: ESPUI.setPanelStyle(id, couleurs[0]); ESPUI.setElementStyle(id, couleurs[1]); break; case 2: ESPUI.setPanelStyle(id, couleurs[2]); ESPUI.setElementStyle(id, couleurs[3]); break; case 3: ESPUI.setPanelStyle(id, couleurs[4]); ESPUI.setElementStyle(id, couleurs[5]); break; } } void web_loop () { //bool switchi = syringe.isRunning(); //bool a = syringe.isRunning(); if(millis() > last_time + 500) { //ESPUI.updateSlider(slider, syringe.currentPosition()*100/lengthSyringePump); last_time = millis(); //on_off(); //if (syringe.isRunning()) //ESPUI.updateControlValue(activation_syringe_pump, "1"); //else //ESPUI.updateControlValue(activation_syringe_pump, "0"); } }