From 71753703e85ca1cae3524a7634883a58075ed5d6 Mon Sep 17 00:00:00 2001 From: jearz Date: Fri, 8 May 2026 00:37:26 +0200 Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20version=20du=20code=20du=20minu?= =?UTF-8?q?teur=20et=20sch=C3=A9ma=20d'implantation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- minuteur/bitmaps.h | 102 +++++++++++ minuteur/concepdoc/etats_InsoLab.dot | 77 ++++++++ minuteur/concepdoc/etats_InsoLab.dot~ | 77 ++++++++ minuteur/concepdoc/etats_InsoLab.png | Bin 0 -> 81859 bytes minuteur/displays.h | 122 +++++++++++++ minuteur/ledRGB.h | 115 ++++++++++++ minuteur/minuteur.ino | 252 ++++++++++++++++++++++++++ minuteur/pt.h | 80 ++++++++ schéma/schema_minuteur.fzz | Bin 0 -> 40189 bytes 9 files changed, 825 insertions(+) create mode 100644 minuteur/bitmaps.h create mode 100755 minuteur/concepdoc/etats_InsoLab.dot create mode 100755 minuteur/concepdoc/etats_InsoLab.dot~ create mode 100644 minuteur/concepdoc/etats_InsoLab.png create mode 100644 minuteur/displays.h create mode 100644 minuteur/ledRGB.h create mode 100644 minuteur/minuteur.ino create mode 100644 minuteur/pt.h create mode 100644 schéma/schema_minuteur.fzz diff --git a/minuteur/bitmaps.h b/minuteur/bitmaps.h new file mode 100644 index 0000000..2d13677 --- /dev/null +++ b/minuteur/bitmaps.h @@ -0,0 +1,102 @@ +/*---------------------------------------------------------------------- + Project: InsoL@b + Author : user@B0 Tetalab.org + File : bitmaps.h 2025-05-21 + This work is copyrighted under CERN Open Hardware Licence Version 2 +------------------------------------------------------------------------ +----------------------------------------------------------------------*/ +#ifndef _INSOLAB_BITMAP_H_ +#define _INSOLAB_BITMAP_H_ + +#define LOGO_COLOR 1 // display SSD1306 black +#define LOGO_X0 0 // logo bitmap width offset to center bitmap +#define LOGO_Y0 0 // logo bitmap height offset to center bitmap +#define LOGO_WIDTH 128 +#define LOGO_HEIGHT 32 +// logoBN128x32.png | 128x32 | 1-bit vertical bytes (LSB=top) +const unsigned char logo_bmp[] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xe0, 0x0f, + 0xa0, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x0f, 0xff, 0xff, 0xff, 0xe8, 0x0f, + 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xe0, 0x0f, + 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x81, 0xff, 0xff, 0xff, 0xe3, 0x81, + 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x81, 0xff, 0xff, 0xff, 0xe3, 0x81, + 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x81, 0xff, 0xff, 0xff, 0xe3, 0x81, + 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xf1, 0xff, 0xff, 0xff, 0xeb, 0xf1, + 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xf1, 0xff, 0xff, 0xff, 0xe3, 0xf1, + 0xfe, 0x3f, 0xc7, 0x00, 0x60, 0x00, 0x30, 0x38, 0x03, 0xe3, 0xf1, 0x80, 0x00, 0x03, 0xff, 0xf1, + 0xfe, 0x3f, 0xd7, 0x01, 0x60, 0x00, 0xb0, 0xb8, 0x0b, 0xeb, 0xf1, 0xa0, 0x00, 0x0b, 0xff, 0xf1, + 0xfe, 0x3f, 0xc7, 0x00, 0x60, 0x00, 0x30, 0x38, 0x03, 0xe3, 0xf1, 0x80, 0x00, 0x03, 0xff, 0xf1, + 0xfe, 0x3f, 0xc7, 0x1c, 0x63, 0xfe, 0x31, 0xf8, 0xe3, 0xff, 0xf1, 0x8f, 0xff, 0xe3, 0xe3, 0x81, + 0xfe, 0x3f, 0xc7, 0x1c, 0x6b, 0xfe, 0x31, 0xf8, 0xe3, 0xff, 0xf1, 0x8f, 0xff, 0xe3, 0xeb, 0x81, + 0xfe, 0x3f, 0xc7, 0x1c, 0x63, 0xfe, 0x31, 0xf8, 0xe3, 0xff, 0xf1, 0x8f, 0xff, 0xe3, 0xe3, 0x81, + 0xfe, 0x3f, 0xc0, 0x1c, 0x7f, 0xfe, 0x31, 0xf8, 0xe3, 0xe3, 0x81, 0x8e, 0x00, 0xe3, 0x00, 0x0f, + 0xfe, 0x3f, 0xc0, 0x1c, 0x7f, 0xfe, 0x31, 0xfa, 0xe3, 0xeb, 0x81, 0x8e, 0x00, 0xe3, 0x40, 0x0f, + 0xfe, 0x3f, 0xc0, 0x1c, 0x7f, 0xfe, 0x31, 0xf8, 0xe3, 0xe3, 0x81, 0x8e, 0x00, 0xe3, 0x00, 0x0f, + 0xfe, 0x3f, 0xc7, 0xfc, 0x60, 0x00, 0x31, 0xff, 0xe3, 0x00, 0x0f, 0x8e, 0x38, 0xe3, 0xe3, 0xff, + 0xfe, 0x3f, 0xc7, 0xfc, 0x60, 0x00, 0x31, 0xff, 0xe3, 0x40, 0x0f, 0x8e, 0x38, 0xe3, 0xe3, 0xff, + 0xfe, 0x3f, 0xc7, 0xfc, 0x60, 0x00, 0x31, 0xff, 0xe3, 0x00, 0x0f, 0x8e, 0x38, 0xe3, 0xe3, 0xff, + 0xfe, 0x3f, 0xc7, 0xfc, 0x63, 0xff, 0xf1, 0xff, 0xe3, 0xe3, 0xff, 0x8e, 0x00, 0x03, 0xe3, 0x81, + 0xfe, 0x3f, 0xc7, 0xfc, 0x63, 0xff, 0xf1, 0xff, 0xe3, 0xe3, 0xff, 0x8e, 0x00, 0x03, 0xe3, 0x85, + 0xfe, 0x3f, 0xc7, 0xfc, 0x63, 0xff, 0xf1, 0xff, 0xe3, 0xe3, 0xff, 0x8e, 0x00, 0x03, 0xe3, 0x81, + 0xfe, 0x3f, 0xc7, 0xfc, 0x63, 0xfe, 0x31, 0xff, 0xe3, 0xe3, 0xf1, 0x8f, 0xff, 0xff, 0xe3, 0x8f, + 0xfe, 0x3f, 0xc7, 0xfc, 0x63, 0xfe, 0xb1, 0xff, 0xe3, 0xe3, 0xf5, 0x8f, 0xff, 0xff, 0xe3, 0x8f, + 0xfe, 0x3f, 0xc7, 0xfc, 0x63, 0xfe, 0x31, 0xff, 0xe3, 0xe3, 0xf1, 0x8f, 0xff, 0xff, 0xe3, 0x8f, + 0x80, 0x00, 0xc7, 0xfc, 0x60, 0x00, 0x30, 0x00, 0x03, 0xe0, 0x01, 0x80, 0x00, 0x03, 0xe0, 0x0f, + 0xa0, 0x02, 0xd7, 0xfd, 0x68, 0x00, 0x34, 0x00, 0x0b, 0xe8, 0x01, 0xa0, 0x00, 0x0b, 0xe8, 0x0f, + 0x80, 0x00, 0xc7, 0xfc, 0x60, 0x00, 0x30, 0x00, 0x03, 0xe0, 0x01, 0x80, 0x00, 0x03, 0xe0, 0x0f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +// RTTTL sounds +#include +#include +#include + +const char * _missip1_= +"mip:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f"; +const char * _count_= +"Pacman:d=32,o=6,b=112:b.5,b.,f#.,d#.,b.,f#.,16p,16d#,c.,c.7,g.,e.,c.7,g.,16p,16e,b.5,b.,f#.,d#.,b.,f#."; +const char * _finish_= +"LightMyFire:d=4,o=5,b=140:8b,16g,16a,8b,8d6,8c6,8b,8a,8g,8a,16f,16a,8c6,8f6,16d6,16c6,16a#,16g,8g#,8g,8g#,16g,16a,8b,8c#6,16b,16a,16g,16f,8e,8f,1a,a"; +const char * _logo_ = "Star Trek:o=5,d=16,b=63,b=63:8f.,a#,4d#6.,8d6,a#.,g.,c6.,4f6"; +const char * _neon_ = +"Neonligh:d=4,o=5,b=100:8e#7,16p,16d#7,8d#7,8p,16c#7,8c#6,16a#6,8e#7,16p,16d#7,8d#7,8p,8c#7,16a#6,8e#7,16p,16a#6,8a#6,8p,16c#7,8d#7,16e#7,8e#7,16p,8d#7"; + +void playRTTTL (screen_t itune){ +//#ifdef SOUND_ON + switch (itune) { // ugly code to manage SOUND off + case sNONE : noTone(PIEZO); // PIEZO defined in main + return; + case sLOGO : anyrtttl::blocking::play(PIEZO, _logo_); break; + case sTITRE : ; break; //rtune = _missip1_ + case sCHOIX : anyrtttl::blocking::play(PIEZO, _neon_); break; + case sEXPOS : anyrtttl::blocking::play(PIEZO, _finish_); break; + case sREGLE : ; break; //tune = _count_ + default : ; break; + } + +} + +/* +// flower +static const unsigned char PROGMEM flower_bmp[] = { + 0b00000000, 0b11000000, + 0b00000001, 0b11000000, + 0b00000001, 0b11000000, + 0b00000011, 0b11100000, + 0b11110011, 0b11100000, + 0b11111110, 0b11111000, + 0b01111110, 0b11111111, + 0b00110011, 0b10011111, + 0b00011111, 0b11111100, + 0b00001101, 0b01110000, + 0b00011011, 0b10100000, + 0b00111111, 0b11100000, + 0b00111111, 0b11110000, + 0b01111100, 0b11110000, + 0b01110000, 0b01110000, + 0b00000000, 0b00110000 }; +*/ +#endif // _INSOLAB_BITMAP_H_ diff --git a/minuteur/concepdoc/etats_InsoLab.dot b/minuteur/concepdoc/etats_InsoLab.dot new file mode 100755 index 0000000..9e822aa --- /dev/null +++ b/minuteur/concepdoc/etats_InsoLab.dot @@ -0,0 +1,77 @@ +/*------------------------------------------------------------------- + Project: InsoL@b + Author : user@B0 mail@nowhere.void + File : etats_InsoLab.dot 2026-04-26 + This work is copyrighted under CERN Open Hardware Licence Version 2. +---------------------------------------------------------------------- + +--------------------------------------------------------------------*/ +digraph InsoLab { + graph [ + rankdir=TB, // Top Bottom, BT,LR,Rl + overlap=false, splines=true, sep="+0.5", + ranksep=1.4, // in top down mode => Vert distance between nodes + nodesep=1.4, // in top down mode => horz distance between nodes + fontname="Arial", fontsize=50, + style=filled, fillcolor="#FFC0A0", color = "#FFC0A0" + ]; + size="7,6"; // h,l + pad=1; // margins / clusters + label="\nDiagramme d'enchaînement des écrans."; + +subgraph cluster_ecrans { + fontsize=60; + style=filled; fillcolor="#FFFFFF"; + label="Le minuteur de l'InsoL@b\n"; + color = "#FFFFFF";//"#FFC0A0";//"#FFFFFF"; +/* =============================== Noeuds ===============================*/ + VCC [shape=circle, style="filled", fillcolor="black"]; + node [ shape=box,style="filled,setlinewidth(2)",fontsize=30, + afixedsize=true, height=2.5, width=3.8 ]; + edge [style="filled,setlinewidth(8)" fontsize=30 arrowsize=2 ] + CHOIX [label="CHOIX\nBoutton avec:\n- exposer UV\n+ régler durées", + fillcolor="#FFA550"]; + EXPOS [label="EXPOS\nDécompte de\nla durée avec\nexposition UV", + fillcolor="#FFC0CB:#FF69B4", style=radial]; + REGLE [label="REGLE\nRéglages avec:\n- changer le pas\n+ changer la durée", + fillcolor="#FFF080"] ; + + node [ shape=box,style="filled,setlinewidth(2)",fontsize=30, + afixedsize=true, height=1.8, width=3.8 ]; + LOGO [label="LOGO\nÉcran d'accueil\naffiché 4s", fillcolor="#FFFFFF"]; + TITRE [label="TITRE\nAttente appui\nd'un boutton", fillcolor="#7CFC60"]; + DUREE [label="DUREE\nChange la\ndurée sous UV", fillcolor="#FF98FF"] ; + INCRE [label="INCRE\nChange le pas\nréglant la durée", fillcolor="aqua"]; + { rank = same LOGO TITRE INCRE } + { rank = same EXPOS CHOIX REGLE } //node [group = "R"] //REGLE; DUREE; INCRE; + node [shape=box, afixedsize=true, height=.7, width=3.8]; + Réveil ; Veille;//[shape=box, afixedsize=true, height=.8, width=3.8]; + + +/* ================================ Arcs ================================*/ + VCC:s -> LOGO:n [ taillabel ="Mise\nsous\ntension " ]; + Réveil:s -> TITRE:n [ taillabel= "\nSortie \nde veille ",label=" Bouton +" ]; + LOGO:e -> TITRE:w [ taillabel =" Fin délai\n" ]; + TITRE:e -> INCRE:w [ style=invis]; + TITRE:s -> CHOIX:n [ taillabel ="\nBoutton + " ] ; + CHOIX:w -> EXPOS:e [ taillabel ="\nBoutton - " ]; + CHOIX:e -> REGLE:w [ taillabel =" Boutton +" ] ; + CHOIX:s -> Veille:n [ + taillabel= "\nMise en veille au\ndélai d'activité expiré " ]; + EXPOS:n -> CHOIX:nw [ taillabel ="Fin du\ndécompte\n" ]; + EXPOS:n -> LOGO:s [ style=invis]; + REGLE:n -> INCRE:s [ taillabel=" - \n\n" ]; + REGLE:s -> CHOIX:se [ taillabel ="\nFin délai inactif " ]; + REGLE:s -> DUREE:n [ taillabel="\n + " ]; + INCRE:w -> INCRE:nw [ taillabel="- " ]; + INCRE:e -> INCRE:ne [ taillabel=" +" ]; + INCRE:se -> REGLE:ne [ headlabel="\n\n Fin\n délai" ]; + DUREE:w -> DUREE:sw [ taillabel="- \n\n" ]; + DUREE:e -> DUREE:se [ taillabel=" +\n\n" ]; + DUREE:ne -> REGLE:se [ headlabel=" Fin\n délai" ]; + { rank = same Veille DUREE }; + EXPOS -> Veille [ style=invis]; + Veille:e -> DUREE:w [ style=invis]; +// n e s w = top right bottom left decorate=true =>line between label & edge + } // cluster_ecrans +} diff --git a/minuteur/concepdoc/etats_InsoLab.dot~ b/minuteur/concepdoc/etats_InsoLab.dot~ new file mode 100755 index 0000000..4351708 --- /dev/null +++ b/minuteur/concepdoc/etats_InsoLab.dot~ @@ -0,0 +1,77 @@ +/*------------------------------------------------------------------- + Project: InsoL@b + Author : user@B0 mail@nowhere.void + File : etats_InsoLab.dot 2026-04-26 + This work is copyrighted under CERN Open Hardware Licence Version 2. +---------------------------------------------------------------------- + +--------------------------------------------------------------------*/ +digraph InsoLab { + graph [ + rankdir=TB, // Top Bottom, BT,LR,Rl + overlap=false, splines=true, sep="+0.5", + ranksep=1.4, // in top down mode => Vert distance between nodes + nodesep=1.4, // in top down mode => horz distance between nodes + fontname="Arial", fontsize=50, + style=filled, fillcolor="#FFC0A0", color = "#FFC0A0" + ]; + size="7,6"; // h,l + pad=1; // margins / clusters + label="\nDiagramme d'enchaînement des écrans."; + +subgraph cluster_ecrans { + fontsize=60; + style=filled; fillcolor="#FFFFFF"; + label="Le minuteur de l'InsoL@b\n"; + color = "#FFFFFF";//"#FFC0A0";//"#FFFFFF"; +/* =============================== Noeuds ===============================*/ + VCC [shape=circle, style="filled", fillcolor="black"]; + node [ shape=box,style="filled,setlinewidth(2)",fontsize=30, + afixedsize=true, height=2.5, width=3.8 ]; + edge [style="filled,setlinewidth(8)" fontsize=30 arrowsize=2 ] + CHOIX [label="CHOIX\nBoutton avec:\n- exposer UV\n+ régler durées", + fillcolor="#FFA500"]; + EXPOS [label="EXPOS\nDécompte de\nla durée avec\nexposition UV", + fillcolor="#FFC0CB:#FF69B4", style=radial]; + REGLE [label="REGLE\nRéglages avec:\n- changer le pas\n+ changer la durée", + fillcolor="#FFF030"] ; + + node [ shape=box,style="filled,setlinewidth(2)",fontsize=30, + afixedsize=true, height=1.8, width=3.8 ]; + LOGO [label="LOGO\nÉcran d'accueil\naffiché 4s", fillcolor="#FFFFFF"]; + TITRE [label="TITRE\nAttente choix\ndu boutton +", fillcolor="#7CFC00"]; + DUREE [label="DUREE\nChange la\ndurée sous UV", fillcolor="#FFF030"] ; + INCRE [label="INCRE\nChange le pas\nréglant la durée", fillcolor="#FFF030"]; + { rank = same LOGO TITRE INCRE } + { rank = same EXPOS CHOIX REGLE } //node [group = "R"] //REGLE; DUREE; INCRE; + node [shape=box, afixedsize=true, height=.7, width=3.8]; + Réveil ; Veille;//[shape=box, afixedsize=true, height=.8, width=3.8]; + + +/* ================================ Arcs ================================*/ + VCC:s -> LOGO:n [ taillabel ="Mise\nsous\ntension " ]; + Réveil:s -> TITRE:n [ taillabel= "\nSortie \nde veille ",label=" Bouton +" ]; + LOGO:e -> TITRE:w [ taillabel =" Fin délai\n" ]; + TITRE:e -> INCRE:w [ style=invis]; + TITRE:s -> CHOIX:n [ taillabel ="\nBoutton + " ] ; + CHOIX:w -> EXPOS:e [ taillabel ="\nBoutton - " ]; + CHOIX:e -> REGLE:w [ taillabel =" Boutton +" ] ; + CHOIX:s -> Veille:n [ + taillabel= "\nMise en veille au\ndélai d'activité expiré " ]; + EXPOS:n -> CHOIX:nw [ taillabel ="Fin du\ndécompte\n" ]; + EXPOS:n -> LOGO:s [ style=invis]; + REGLE:n -> INCRE:s [ taillabel=" - \n\n" ]; + REGLE:s -> CHOIX:se [ taillabel ="\nFin délai inactif " ]; + REGLE:s -> DUREE:n [ taillabel="\n + " ]; + INCRE:w -> INCRE:nw [ taillabel="- " ]; + INCRE:e -> INCRE:ne [ taillabel=" +" ]; + INCRE:se -> REGLE:ne [ headlabel="\n\n Fin\n délai" ]; + DUREE:w -> DUREE:sw [ taillabel="- \n\n" ]; + DUREE:e -> DUREE:se [ taillabel=" +\n\n" ]; + DUREE:ne -> REGLE:se [ headlabel=" Fin\n délai" ]; + { rank = same Veille DUREE }; + EXPOS -> Veille [ style=invis]; + Veille:e -> DUREE:w [ style=invis]; +// n e s w = top right bottom left decorate=true =>line between label & edge + } // cluster_ecrans +} diff --git a/minuteur/concepdoc/etats_InsoLab.png b/minuteur/concepdoc/etats_InsoLab.png new file mode 100644 index 0000000000000000000000000000000000000000..83dfd82b8c68faba43a64273ae2dd43f71d0fb71 GIT binary patch literal 81859 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 IXQh7eFP51llmGw# literal 0 HcmV?d00001 diff --git a/minuteur/displays.h b/minuteur/displays.h new file mode 100644 index 0000000..0770924 --- /dev/null +++ b/minuteur/displays.h @@ -0,0 +1,122 @@ +/*---------------------------------------------------------------------- + Project: InsoL@b + Author : user@B0 Tetalab.org + File : displays.h 2026-04-21 + This work is copyrighted under CERN Open Hardware Licence Version 2 +------------------------------------------------------------------------ + Management of the I2C oled SH1306 for RP2040 Zero clone +----------------------------------------------------------------------* + +------------------ Functions for Oled display ---------------------*/ +#ifndef _INSOLAB_DISPLAYS_H_ +#define _INSOLAB_DISPLAYS_H_ +#include "bitmaps.h" +#include "ledRGB.h" +#include +#include +#include + + +// Declaration for SSD1306 display on I2C (SDA, SCL pins) +// The pins for I2C are defined by the Wire-library. +// Default on RP2040 Zero: SDA GPIO 4 SCL GPIO 5 +#include +#define OLED_WIDTH 128 // OLED display width, in pixels +#define OLED_RST -1 // Reset pin + +#ifdef ESSAIS +#define OLED_HEIGHT 64 // OLED display height, in pixels +#define OLED_ADR 0x3D //Address 0x3D/0x3C to 128x64, 0x3C to 128x32 +#else +#define OLED_HEIGHT 32 // OLED display height, in pixels +#define OLED_ADR 0x3C +#endif +Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, OLED_RST); + +char _oledmsg[32]; // general purpose character buffer + +void showTxt1(uint8_t x, uint8_t y, char* txt) { + oled.clearDisplay(); + oled.setTextSize(1); oled.setTextColor(SSD1306_WHITE); + oled.setCursor(x,y); // O,0 at top-left corner + sprintf(_oledmsg,"CR:%s",txt); + oled.println(txt); + oled.display(); +} +void showText(String l1, String l2) { + oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); + oled.setTextSize(2); oled.setCursor(0,0); oled.println(l1); + oled.setTextSize(1); oled.setCursor(0,18); oled.println(l2); + oled.display(); +} + +void showInit() { + ledInit(); ledRGB(BLANK); //ledRGB(RED); + if(!oled.begin(SSD1306_SWITCHCAPVCC, OLED_ADR)) { + Serial.begin(115200); delay(100); + Serial.println(F("SSD1306 allocation failed")); + ledRGB(RED); + for(;;); // Don't proceed, loop forever + } + //sprintf(_oledmsg, "SSD1306 @ %2d OK", OLED_ADR); oledTxt1(0,0,_oledmsg); + delay(100); // Serial.println(_oledmsg); +} +void showLOGO(int16_t gt) { /*--------- logo on SSD1306 -------------*/ + oled.clearDisplay(); + oled.drawBitmap( + LOGO_X0, LOGO_Y0,logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, LOGO_COLOR); + oled.display(); + playRTTTL(sLOGO); + delay(gt); +} +void showTITRE() { // TextSize(2)=>10char, TextSize(1)=>22char, + oled.clearDisplay(); + oled.setCursor(0,0); oled.setTextSize(2); // doble scale + oled.setTextColor(SSD1306_WHITE); + oled.println(F("InsoLab UV")); // 10 chars max + oled.setTextSize(1); oled.setCursor(0,18); // Normal 1:1 pixel scale + oled.println(F(" Any button to start")); // 21 chars max + oled.display(); +} +void showCHOIX(uint16_t t) { + oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); + oled.setCursor(0,0); oled.setTextSize(2); + sprintf(_oledmsg,"Expo: %3ds",t); // 10 chars max + oled.println(_oledmsg); + oled.setCursor(0,18); oled.setTextSize(1); // 21 chars max + oled.println(F("- goto UV, + settings")); + oled.display(); +} +void showEXPOS(uint16_t t, int16_t m) { + oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); + oled.setCursor(0,0); oled.setTextSize(2); + sprintf(_oledmsg,"Count:%3ds",t); oled.println(_oledmsg); + oled.setCursor(0,18); oled.setTextSize(1); + sprintf(_oledmsg,"- stop, + add up %3ds",m); oled.println(_oledmsg); + oled.display(); delay(200); +} +void showREGLE() { + oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); + oled.setCursor(0,0); oled.setTextSize(2); + oled.println(F("Set values")); + oled.setCursor(0,18); oled.setTextSize(1); + sprintf(_oledmsg,"- UVtime, + step time"); oled.println(_oledmsg); + oled.display(); +} +void showDUREE(uint16_t t) { + oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); + oled.setCursor(0,0); oled.setTextSize(2); + sprintf(_oledmsg,"Time: %3ds",t); oled.println(_oledmsg); + oled.setCursor(0,18); oled.setTextSize(1); + sprintf(_oledmsg,"- less, + more"); oled.println(_oledmsg); + oled.display(); +} +void showINCRE(uint16_t t) { + oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); + oled.setCursor(0,0); oled.setTextSize(2); + sprintf(_oledmsg,"Step: %3d",t); oled.println(_oledmsg); + oled.setCursor(0,18); oled.setTextSize(1); + sprintf(_oledmsg,"- less, + more"); oled.println(_oledmsg); + oled.display(); +} +#endif // _INSOLAB_DISPLAYS_H_ diff --git a/minuteur/ledRGB.h b/minuteur/ledRGB.h new file mode 100644 index 0000000..a4f9223 --- /dev/null +++ b/minuteur/ledRGB.h @@ -0,0 +1,115 @@ +/*------------------------------------------------------------------- + Project: InsoL@b + Author : user@B0 mail@nowhere.void + File : led_RGB.h 2026-04-23 + This work is copyrighted under CERN Open Hardware Licence Version 2. +---------------------------------------------------------------------- +Aqua #00FFFF 0% 100% 100% 180° 100% 50% 100% 100% 11 (high cyan); cyan +Teal #008080 0% 50% 50% 180° 100% 25% 100% 50% 03 (low cyan) +Blue #0000FF 0% 0% 100% 240° 100% 50% 100% 100% 09 (high blue) +Navy #000080 0% 0% 50% 240° 100% 25% 100% 50% 01 (low blue) +Fuchsia #FF00FF 100% 0% 100% 300° 100% 50% 100% 100% 13 (high magenta); magenta +Purple #800080 50% 0% 50% 300° 100% 25% 100% 50% 05 (low magenta) +---------------------------------------------------------------------*/ +#ifndef _INSOLAB_LEDRGB_H_ +#define _INSOLAB_LEDRGB_H_ +#include +#include +#define PIN 16 // RGB LED (WS2812) clone of Waveshare rp2040-zero. +#define NUMPIXELS 1 +Adafruit_NeoPixel pixels( + NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); +enum {NONE, RED, YELLOW, ORANGE, GREEN, BLUE, PINK, FUCHS, BLANK}; +int ledColor = NONE; +int ledMax=2; + +void ledInit() { + pixels.begin(); + pixels.setPixelColor(0, pixels.Color(0, 0, 0)); + pixels.show(); + delay(100); +} +void ledRGB(int rgb) { + switch (rgb) { + case RED: pixels.setPixelColor(0, pixels.Color(ledMax, 0, 0)); + break; + case YELLOW: pixels.setPixelColor(0, pixels.Color(ledMax, ledMax, 0)); + break; + case ORANGE: pixels.setPixelColor(0, pixels.Color(ledMax, 1, 0)); + break; + case GREEN: pixels.setPixelColor(0, pixels.Color(0, ledMax, 0)); + break; + case BLUE: pixels.setPixelColor(0, pixels.Color(0, ledMax, ledMax)); // AQUA + break; + case PINK: pixels.setPixelColor(0, pixels.Color(1,0,3)); // (1,0,2)); + break; // pink color (255, 192, 203) deep pink (255, 20, 147) + case FUCHS: pixels.setPixelColor(0, pixels.Color(ledMax,0,ledMax)); // FUCHSIA + break; + case BLANK: pixels.setPixelColor(0, pixels.Color(1, 1, 1)); + break; + case NONE: pixels.setPixelColor(0, pixels.Color(0, 0, 0)); + break; + } + pixels.show(); delay(100); +} +void ledScale(int rgb, int first, int aim, int inc, int period) { + int i = first; + do { + i = i + inc; + switch (rgb) { + case RED: + pixels.setPixelColor(0, pixels.Color(i, 0, 0)); + break; + case GREEN: + pixels.setPixelColor(0, pixels.Color(0, i, 0)); + break; + case BLUE: + pixels.setPixelColor(0, pixels.Color(0, 0, i)); + break; + case BLANK: + pixels.setPixelColor(0, pixels.Color(i, i, i)); + break; + } + pixels.show(); delay(period); + } while (i != aim ); +} + + +uint16_t hue = 0; uint8_t sat = 0, val = 0; +int32_t couleur = 0; + +void ledTest() { + int period=12; + switch (ledColor) { + case NONE: + for (val = 10; val < 50; val += 10) { + for (sat = 10; sat < 50; sat += 10) { + couleur = pixels.ColorHSV(765, sat, val); + pixels.setPixelColor(0, couleur); + pixels.show(); + delay(6); + } + } + break; + case RED: + ledScale(RED, 1, 200, 1, period); + ledScale(RED, 200, 1, -1, period); + break; + case GREEN: + ledScale(GREEN, 1, 200, 1, period); + ledScale(GREEN, 200, 1, -1, period); + break; + case BLUE: + ledScale(BLUE, 1, 200, 1, period); + ledScale(BLUE, 200, 1, -1, period); + break; + default: + break; + } + ledColor++; + if (ledColor == 4) { + ledColor = NONE; + } + delay(1000); +} +#endif diff --git a/minuteur/minuteur.ino b/minuteur/minuteur.ino new file mode 100644 index 0000000..bbdaf28 --- /dev/null +++ b/minuteur/minuteur.ino @@ -0,0 +1,252 @@ +/*----------------------------------------------------------------------- + Project: InsoL@b + Author : user@B0 mail@nowhere.void + File : minuteur.ino 2026-04-19 + This work is copyrighted under the CERN Open Hardware Licence Version 2. +------------------------------------------------------------------------- + Serial port not available ? sudo fuser -k /dev/ttyACM0 & RST or Boot +------------------------------------------------------------------------- +* Power on: Greeting screen LOGO waits for timout and go to screen TITRE + - Show InsoL@b logo +* screen TITRE + - Show title & wait for any button to continue to Screen CHOIX +* Screen CHOIX + - displays default/curent exposure time + - minus button go to screen EXPO exposure timing sequence + - plus button go to setting screen REGLE +* Screen EXPO + - UV exposure + - display count down, minus button to stop, plus to increment time + - when done exit back to screen CHOIX +* Screen REGLE + - minus button go to screen INCRE + - plus button go to screen DUREE + - return to caller on time out +* Screen DURE + - minus decrement exposure time + - plus increment exposure time + - return to caller on time out +* Screen INCRE + - minus decrement step value + - plus increment step value + - return to caller on time out +-----------------------------------------------------------------------*/ +#define BUTTONPLUS 14 // PullUp 10K I=.33 mA +#define BUTTONMINUS 15 // PullUp 10K I=.33 mA +#define RELAY 27 // Must be < 4mA +#define PIEZO 28 // Used by anyrtttl.h in bitmaps.h +/* I2C SDA & CLK PullUp 2*10K I=.66 mA +Sur le RP2040 le défaut du courant de sortie est limité à 4mA/broche IO, + C'est configurable par logiciel pour atteindre 2mA, 8mA ou 12mA. +Le courant maximal combiné que toutes les broches GPIO peuvent sourcer ou +absorber est limité à 50 mA. Au total le courant total doit être < à 50mA. + */ +//#define ESSAIS +enum screen_t {sLOGO,sTITRE,sCHOIX,sEXPOS,sREGLE,sDUREE,sINCRE,sNONE}; +#ifdef ESSAIS +int16_t defaultTime=80, stepTime=5, timeOut=3; // expo & setting time +#else +int16_t defaultTime=180, stepTime=10, timeOut=2; +#endif +int16_t greetTime=1000; + // display limit to 999s => 16mn 39s +volatile uint16_t setTime=defaultTime; +volatile uint16_t downTime; // count down time +screen_t screen=sTITRE; +#include "displays.h" // Oled functions & led RGB +#include "pt.h" // proto threads +//#include "scroll.h" // circular buffer for displays + +/*----------------- CPU 0 ---------------------------------*/ +void die() {ledRGB(RED); for(;;); } +void setup() { showInit(); showLOGO(greetTime); ledRGB(GREEN); +} +void loop() { // CPU 0 dedicated to refresh display + // TODO not recall screen if values did not change + switch(screen) { + case sTITRE : showTITRE(); break; + case sCHOIX : showCHOIX(setTime); break; + case sEXPOS : showEXPOS(downTime,stepTime); break; + case sREGLE : showREGLE(); break; + case sDUREE : showDUREE(setTime); break; + case sINCRE : showINCRE(stepTime); break; + default : ledRGB(RED); delay(3000); break; // Code error + } + delay(100); +} +/*----------------- CPU 1 ---------------------------------*/ +// ProtoThreads local continuation structure +static pt_t pMINUS, pPLUS, pTITRE, pCHOIX, pEXPOS, pREGLE, pDUREE, pINCRE; +volatile boolean plusPushed=false; volatile boolean minusPushed=false; + +void setup1() { // CPU 1 to manage buttons + // ProtoThreads continuation structure is set to 0 + PT_INIT(&pMINUS); PT_INIT(&pPLUS); + PT_INIT(&pTITRE); PT_INIT(&pCHOIX); PT_INIT(&pEXPOS); + PT_INIT(&pREGLE); PT_INIT(&pINCRE); PT_INIT(&pDUREE); + // IO + pinMode(BUTTONMINUS, INPUT_PULLUP); pinMode(BUTTONPLUS, INPUT_PULLUP); + pinMode(RELAY, OUTPUT); digitalWrite(RELAY, LOW);delay(500); +} + +static PT_THREAD(pPlus(pt_t *lc)) { // OK and avoid bounces + PT_BEGIN(lc); // lc=local continuation byte, here set to previous call value + while (1) { + PT_WAIT_UNTIL(lc, digitalRead(BUTTONPLUS) == LOW); // lc set to __LINE__ + plusPushed=true; + } + PT_END(lc); // to try: exit & return flag ? +} +static PT_THREAD(pMinus(pt_t *lc)) { + PT_BEGIN(lc); + while (1) { + PT_WAIT_UNTIL(lc, digitalRead(BUTTONMINUS) == LOW); + minusPushed=true; + } + PT_END(lc); +} +static PT_THREAD(pTitre(pt_t *lc)) { + PT_BEGIN(lc); + PT_WAIT_UNTIL(lc, (screen==sTITRE)); + PT_WAIT_UNTIL(lc, (plusPushed || minusPushed )); + minusPushed=false; plusPushed=false; + screen=sCHOIX; + PT_DELAY(lc, 100); + PT_END(lc); +} +static PT_THREAD(pChoix(pt_t *lc)) { // TODO sleep & wake up + PT_BEGIN(lc); + PT_WAIT_UNTIL(lc, (screen==sCHOIX)); + ledRGB(ORANGE); + PT_WAIT_UNTIL(lc, (plusPushed || minusPushed ) ); + if (minusPushed) { minusPushed=false; screen=sEXPOS; } + if (plusPushed) { plusPushed=false; screen=sREGLE; } + PT_DELAY(lc, 100); + PT_END(lc); +} +static PT_THREAD(pExpos(pt_t *lc)) { // run count down UV light OK + PT_BEGIN(lc); + PT_WAIT_UNTIL(lc, (screen==sEXPOS) ); + ledRGB(PINK); + downTime = setTime; + playRTTTL(sCHOIX); + digitalWrite(RELAY, HIGH); + minusPushed=false; plusPushed=false; + do { // count down loop + // playRTTTL(sCOUNT); send flag to CPU 0 ? or non blocking RTTTL + if (plusPushed) { + plusPushed=false; + if (downTime < 1000 - stepTime) downTime += stepTime; + } + PT_DELAY(lc, 800); + downTime -=1; + if (minusPushed) { minusPushed=false; downTime = 0; } + PT_DELAY(lc, 200); + } while ( downTime > 0); + digitalWrite(RELAY, LOW ); + screen=sCHOIX; + playRTTTL(sEXPOS); + PT_END(lc); +} +static PT_THREAD(pRegle(pt_t *lc)) { // OK + static unsigned long ttl,to=500 + timeOut * 1000; + PT_BEGIN(lc); + PT_WAIT_UNTIL(lc, (screen==sREGLE) ); + ledRGB(YELLOW); + minusPushed=false; plusPushed=false; + ttl=millis()+to; + PT_WAIT_UNTIL(lc, (plusPushed || minusPushed || (millis() > ttl) ) ); + if (plusPushed) { plusPushed=false; screen=sDUREE; } + else if (minusPushed) { minusPushed=false; screen=sINCRE; } + if (millis() > ttl) screen=sCHOIX; + PT_DELAY(lc, 100); + PT_END(lc); +} +static PT_THREAD(pIncre(pt_t *lc)) { // OK + static unsigned long ttl, to=timeOut * 1000; + PT_BEGIN(lc); + PT_WAIT_UNTIL(lc, (screen==sINCRE) ); + ledRGB(BLUE); + PT_DELAY(lc, 1000); + ttl=millis()+to; + minusPushed=false; plusPushed=false; + do { + PT_WAIT_UNTIL(lc, (plusPushed || minusPushed || (millis() > ttl)) ); + if (plusPushed) { + plusPushed=false; + if (stepTime < 999) stepTime += 1 ; + ttl=millis()+to; + } else + if (minusPushed) { + minusPushed=false; + if (stepTime >1) stepTime-= 1 ; + ttl=millis()+to; + } + if (millis() > ttl) screen=sREGLE; + } while (screen==sINCRE); + PT_END(lc); +} +static PT_THREAD(pDuree(pt_t *lc)) { // OK + static unsigned long ttl, to=timeOut * 1000; + PT_BEGIN(lc); + PT_WAIT_UNTIL(lc, (screen==sDUREE) ); + ledRGB(FUCHS); + PT_DELAY(lc, 1000); + ttl=millis()+to; + do { + PT_WAIT_UNTIL(lc, (plusPushed || minusPushed || (millis() > ttl)) ); + if (plusPushed) { + plusPushed=false; + if (setTime < 1000 - stepTime) setTime += stepTime ; + ttl=millis()+to; + } + if (minusPushed) { + minusPushed=false; + if (setTime > stepTime) setTime -= stepTime ; + ttl=millis()+to; + } + if (millis() > ttl) screen=sREGLE; + } while (screen==sDUREE); + PT_END(lc); +} + +void loop1() { // CPU 1 dedicated to run threads + pMinus (&pMINUS); // process minus button + pPlus (&pPLUS); // process plus button + pTitre (&pTITRE); // process screen TITRE + pChoix (&pCHOIX); // process screen CHOIX + pExpos (&pEXPOS); // process screen EXPOS + pRegle (&pREGLE); // process screen REGLE + pIncre (&pINCRE); // process screen INCRE + pDuree (&pDUREE); // process screen DUREE +} +/* +* provisions + #include +v +void setup() { + EEPROM.begin(512); + // write a 0 to all 512 bytes of the EEPROM + for (int i = 0; i < 512; i++) { + EEPROM.write(i, 0); + } + // turn the LED on when we're done + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); + EEPROM.end(); +} +void loop() { + static int x = 0; + Serial.printf("C1: Stay on target...\n"); + val++; + if (++x < 10) { + EEPROM.begin(512); + EEPROM.write(0,x); + EEPROM.commit(); + } + delay(1000); +} +* code debug +Serial.begin(115200); delay(500); Serial.printf("CPU 0 on\n"); +Serial.printf("CPU 1 on\n"); +*/ diff --git a/minuteur/pt.h b/minuteur/pt.h new file mode 100644 index 0000000..d19df7b --- /dev/null +++ b/minuteur/pt.h @@ -0,0 +1,80 @@ +/*-------------------------------------------------------- + Projet: InsoL@b + File : pt.h 08/28/20 + Authors: initial work of Adam Dunkels, user@W500; + little dressing & minor changes to limit compile warnings +----------------------------------------------------------*/ +#ifndef __PT_H__ +#define __PT_H__ +typedef struct pt { unsigned short lc; } pt_t ; + +#define PT_WAITING 0 +#define PT_YIELDED 1 +#define PT_EXITED 2 +#define PT_ENDED 3 +#define PT_INIT(pt) (pt)->lc = 0; // INIT +#define PT_THREAD(name_args) char name_args // THREAD +#define PT_BEGIN(pt) { \ + /*char PT_YIELD_FLAG = 1 ; not used here */ \ + switch((pt)->lc) \ + { case 0: // BEGIN +#define PT_END(pt) ((pt)->lc = 0 ); }; \ + /*PT_YIELD_FLAG = 0; not used here */ \ + PT_INIT(pt); return PT_ENDED; } // END +#define PT_WAIT_UNTIL(pt, condition) \ + do { \ + (pt)->lc = __LINE__; \ + case __LINE__: \ + if(!(condition)) { \ + return PT_WAITING; \ + } \ + } while(0) // WAIT_UNTIL +#define PT_WAIT_WHILE(pt, cond) \ + PT_WAIT_UNTIL((pt), !(cond)) // WAIT_WHILE +#define PT_WAIT_THREAD(pt, thread) \ + PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) // WAIT_THREAD +#define PT_SPAWN(pt, child, thread) \ + do { \ + PT_INIT((child)); \ + PT_WAIT_THREAD((pt), (thread)); \ + } while(0) // SPAWN +#define PT_RESTART(pt) \ + do { \ + PT_INIT(pt); \ + return PT_WAITING; \ + } while(0) // RESTART +#define PT_EXIT(pt) \ + do { \ + PT_INIT(pt); \ + return PT_EXITED; \ + } while(0) // EXIT +#define PT_SCHEDULE(f) ((f) < PT_EXITED) // SCHEDULE +#define PT_YIELD(pt) \ + do { \ + PT_YIELD_FLAG = 0; \ + (pt)->lc = __LINE__; \ + case __LINE__: \ + if(PT_YIELD_FLAG == 0) { \ + return PT_YIELDED; \ + } \ + } while(0) // YIELD +#define PT_YIELD_UNTIL(pt, cond) \ + do { \ + PT_YIELD_FLAG = 0; \ + (pt)->lc = __LINE__; \ + case __LINE__: \ + if((PT_YIELD_FLAG == 0) || !(cond)) { \ + return PT_YIELDED; \ + } \ + } while(0) // YIELD_UNTIL +#define PT_DELAY(pt, ms) \ + do { \ + static unsigned long _PTTTL_ ; \ + _PTTTL_ = millis() + (unsigned int)(ms); \ + PT_WAIT_UNTIL((pt), (millis() > _PTTTL_)); \ + } while(0) // DELAY +#define PT_SYNC(pt, mark, ms) \ + do { \ + PT_WAIT_UNTIL((pt), (millis() - (mark) > (ms) )); \ + } while(0) // SYNC +#endif /* __PT_H__ */ diff --git a/schéma/schema_minuteur.fzz b/schéma/schema_minuteur.fzz new file mode 100644 index 0000000000000000000000000000000000000000..2c7e58240edb18c8d2d36617301b160301cf48e8 GIT binary patch literal 40189 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 OpF`wA_(#G`>3;yW?r%^4 literal 0 HcmV?d00001