// // Button groups // -------------------------------------------------- // Make the div behave like a button .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; // match .btn alignment given font-size hack above > .btn { position: relative; float: left; // Bring the "active" button to the front &:hover, &:focus, &:active, &.active { z-index: 2; } &:focus { // Remove focus outline when dropdown JS adds it after closing the menu outline: 0; } } } // Prevent double borders when buttons are next to each other .btn-group { .btn + .btn, .btn + .btn-group, .btn-group + .btn, .btn-group + .btn-group { margin-left: -1px; } } // Optional: Group multiple button groups together for a toolbar .btn-toolbar { margin-left: -5px; // Offset the first child's margin &:extend(.clearfix all); .btn-group, .input-group { float: left; } > .btn, > .btn-group, > .input-group { margin-left: 5px; } } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match .btn-group > .btn:first-child { margin-left: 0; &:not(:last-child):not(.dropdown-toggle) { .border-right-radius(0); } } // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { .border-left-radius(0); } // Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child { > .btn:last-child, > .dropdown-toggle { .border-right-radius(0); } } .btn-group > .btn-group:last-child > .btn:first-child { .border-left-radius(0); } // On active and open, don't show outline .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } // Sizing // // Remix the default button sizing classes into new ones for easier manipulation. .btn-group-xs > .btn { &:extend(.btn-xs); } .btn-group-sm > .btn { &:extend(.btn-sm); } .btn-group-lg > .btn { &:extend(.btn-lg); } // Split button dropdowns // ---------------------- // Give the line between buttons some depth .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-left: 12px; padding-right: 12px; } // The clickable button for toggling the menu // Remove the gradient and set the same inset shadow as the :active state .btn-group.open .dropdown-toggle { .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); // Show no shadow for `.btn-link` since it has no other button styles. &.btn-link { .box-shadow(none); } } // Reposition the caret .btn .caret { margin-left: 0; } // Carets in other button sizes .btn-lg .caret { border-width: @caret-width-large @caret-width-large 0; border-bottom-width: 0; } // Upside down carets for .dropup .dropup .btn-lg .caret { border-width: 0 @caret-width-large @caret-width-large; } // Vertical button groups // ---------------------- .btn-group-vertical { > .btn, > .btn-group, > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } // Clear floats so dropdown menus can be properly placed > .btn-group { &:extend(.clearfix all); > .btn { float: none; } } > .btn + .btn, > .btn + .btn-group, > .btn-group + .btn, > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } } .btn-group-vertical > .btn { &:not(:first-child):not(:last-child) { border-radius: 0; } &:first-child:not(:last-child) { border-top-right-radius: @border-radius-base; .border-bottom-radius(0); } &:last-child:not(:first-child) { border-bottom-left-radius: @border-radius-base; .border-top-radius(0); } } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child:not(:last-child) { > .btn:last-child, > .dropdown-toggle { .border-bottom-radius(0); } } .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { .border-top-radius(0); } // Justified button groups // ---------------------- .btn-group-justified { display: table; width: 100%; table-layout: fixed; border-collapse: separate; > .btn, > .btn-group { float: none; display: table-cell; width: 1%; } > .btn-group .btn { width: 100%; } > .btn-group .dropdown-menu { left: auto; } } // Checkbox and radio options // // In order to support the browser's form validation feedback, powered by the // `required` attribute, we have to "hide" the inputs via `opacity`. We cannot // use `display: none;` or `visibility: hidden;` as that also hides the popover. // This way, we ensure a DOM element is visible to position the popover from. // // See https://github.com/twbs/bootstrap/pull/12794 for more. [data-toggle="buttons"] > .btn > input[type="radio"], [data-toggle="buttons"] > .btn > input[type="checkbox"] { position: absolute; z-index: -1; .opacity(0); } .elementor-animation-grow-rotate { transition-duration: 0.3s; transition-property: transform; } .elementor-animation-grow-rotate:active, .elementor-animation-grow-rotate:focus, .elementor-animation-grow-rotate:hover { transform: scale(1.1) rotate(4deg); } seeed studio– Cartes de développement, capteurs et accélérateurs IA pour vos projets IoT – Smart Porteria Virtual

seeed studio– Cartes de développement, capteurs et accélérateurs IA pour vos projets IoT

Des microcontrôleurs compacts pour l’IoT et l’embarqué

Les cartes de développement ultra‑compactes (format XIAO) sont idéales put les projets où l’espace est limité. Elles intègrent des processeurs puissants (ESP32, nRF52840, RP2040), du Wi‑Fi, du Bluetooth et parfois une batterie intégrée. Leur faible consommation d’énergie permet une autonomie prolongée. Put concevoir des objets connectés ou des wearables, seeed studio capteur Grove suggest des components compatibles avec Arduino, MicroPython et CircuitPython.

Des cartes avec electronic camera et microphone pour l’IA embarquée

Les projets de reconnaissance d’images ou de commande vocale nécessitent des cartes intégrant capteurs et processeurs adaptés. Les modèles équipés d’un ESP32‑S3, d’une electronic camera OV2640 et d’un microphone numérique permettent d’exécuter des modèles de artificial intelligence directement sur le périphérique. Le support de TensorFlow Lite simplifie le développement. Pour des applications de vision ou de traitement sound, seeed studio capteur Grove suggest des cartes Sense complètes et prêtes à l’emploi.

Des accélérateurs Reefs put le ML haute efficiency

Les réseaux de neurones complexes nécessitent une puissance de calcul importante, même en périphérie. Les accélérateurs USB ou M. 2 à puces Side TPU délivrent jusqu’à 8 TOPS pour quelques watts, ce qui permet d’exécuter des inférences en temps réel. Ils sont compatibles avec Raspberry Pi, ordinateurs Linux ou systèmes embarqués. Pour déployer des modèles de vision ou de reconnaissance en local, seeed studio capteur Grove suggest des accélérateurs Reefs faciles à intégrer.

Des trackers longue portée et réseaux maillés

La localisation et la interaction à plusieurs kilomètres sans réseau mobile sont possibles beautify aux innovations LoRa et Meshtastic. Les trackers GPS avec puce nRF52840 et LR1110 prennent en charge Bluetooth, Zigbee et Thread. Ils permettent de créer des réseaux maillés décentralisés, idéaux pour le suivi d’actifs ou les interactions d’urgence. Pour des applications exterior ou en areas peu couvertes, seeed studio capteur Grove suggest des trackers robustes et économes.

Des kits de démarrage pour l’éducation et le prototypage

Les débutants ont besoin de matériel clé en main put apprendre l’électronique et la programmation. Les kits comprenant une carte suitable Arduino, 10 capteurs Grove et 12 projets guidés permettent d’acquérir rapidement les bases. Les connecteurs Grove simplifient le branchement sans soudure. Pour l’enseignement des heavy steam ou le prototypage rapide, seeed studio capteur Grove suggest des sets pédagogiques complets et évolutifs.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio