En este artículo hacemos una introducción a la placa del microcontroladora Micro:bit para aplicaciones educativas, analizando sus características y aplicaciones.

 

Las principales características de microcontrolador son:

- Bluetooth de baja energia.

- Modulo de radio de 2.4 GHz.

- Memória Flash de programa de 256 KBytes.

- Memória RAM de 16 KBytes.

- Tensión de operación de 1.8 a 3.6 voltios.

- Muy bajo consumo (ultra-low power).

- Conversores analógicos a digital (ADC) de 10 bits.

- 31 pinos de entrada y salida (GPIO).

- 1 timer de 32 bits.

- 2 timer de 16 bits.

- Interface serial de periféricos (SPI).

- Interface de comunicación serial I2C.

- Sensor de temperatura.

- Puerto serial (UART).

- Reloj de tiempo real (RTC).

- Comparadores de tensión.

- Decodificador de Cuadratura (QDEC).

 

El modulo de Radio tiene un receptor de radio de 2.4 GHz y un transmisor de radio de 2.4GHz.

Brújula incorporada para saber en que dirección te diriges.

Transmisor y receptor de radio y Bluetooth para permitirle interactuar con dispositivos móviles de forma inalámbrica

Una gama de pines de entrada y salida para permitirle conectar el micro:bit a otros dispositivos a través de su conector perimetral

Acelerómetro para detectar el movimiento y saber cuándo estás en movimiento

Dos botones programables que se pueden utilizar para controlar juegos o pausar y omitir canciones en una lista de reproducción de música

25 luces LED rojas que pueden parpadear mensajes y ser utilizados para crear juegos.

 

Microbit es una placa diseñada para estudiantes y personas que deseen iniciarse en la programación.

 

MAKECODE.

MakeCode es el ambiente de desarrollo (IDE) para programar la placa Microbit. Esta IDE es creada por Microsoft. En la Figura 1 podemos observar esta IDE:

La IDE tiene 3 partes principales, las cuales se pueden observar en la Figura 1.

- Una ventana para programar, la cual se puede hacer de forma gráfica o por código.

- Una ventana para el simulador, la cual muestra una placa Microbit en la que se puede ejecutar el código.

- Una ventana de funciones, donde se encuentran todos los bloques de funciones, las cuales incluyen: sensores, entradas, salidas, lógica, etc.

 

 

 


| Haga click en la imagen para ampliar |

 

 

INTRUCCIONES DE LA PLACA MICROBIT.

Las instrucciones que la placa microbit puede ejecutar son: Básicas, Entrada, Música, Led, Radio, Loops, Lógica, Variables o Memoria, matemáticas, y también ejecuta instrucciones avanzadas como: Funciones, Arrays, Texto, Juegos, imágenes, Pines, Serial y Control. Estas se pueden encontrar y seleccionar en la ventana destinada para los bloques. La seguiente figura muestra las instrucciones:

 


 

 

 


 

 

 

INSTRUCCIONES BASICAS.

Un bloque programa llamado On Start, es un evento o código que se ejecuta cuando el programa inicia. Normalmente, es usado para inicializar el programa, como, por ejemplo: configurar periféricos, inicializar variables, etc. El siguiente bloque representa el evento On Start:

 


 

 

En el siguiente ejemplo, se inicializa la variable intensidad con un valor de 78.

 


 

 

Otro bloque necesario para programación es el forever, el cual ejecuta parte de un programa constantemente durante el tiempo que la placa Microbit este alimentada.

 


 

 

 

Los anteriores bloques son similares a las muy utilizadas funciones de lenguaje C, como por ejemplo Arduino:

void init()

void loop()

 

INSTRUCCIONES DE ENTRADA.

Las Instrucciones de Periféricos son usadas para controlar las entradas y salidas de la placa.

 

ESCRIBIR EN SALIDAS DIGITALES.

Para escribir o colocar un pino de salida digital a nivel alto (1 lógico), podemos usar el siguiente bloque de programación:

 


 

 

 

Este bloque de programación permite escribir en cualquier pin y seleccionar un nivel lógico bajo (0) o alto (1). La siguiente imagen muestra los pines de salida digital que tiene la placa Microbit:

 


 

 

 

Si se quiere colocar por ejemplo el pin 7 a nivel lógico bajo (0 lógico) puede usar el bloque de código con la siguiente configuración:

 


 

 

 

Para generar un temporizador o retardo de tiempo se puede usar el bloque de programación:

 


 

 

 

El programa completo para este ejemplo seria así:

 


 

 

 

Notemos que programar en bloques de código es muy fácil y practico.

 

INSTRUCCIONES DE MEMORIA.

Las Instrucciones de Memoria hacen referencia a los movimientos de datos en la Memoria RAM.

 

INSTRUCCIONES DE LOOPS.

Las Instrucciones de Loops son usados para repetir un bloque del programa por una determina condición o por el numero de veces programado. Estas

Si queremos repetir algún código un determinado numero de veces podemos usar el siguiente bloque de código:

 


 

 

El anterior bloque se repetiría 4 veces y después el microcontrolador sale de ese loop.

El siguiente bloque de código muestra como repetir un código mientras se cumpla una condición:

 

 


 

 

 

Por ejemplo, el siguiente bloque de código muestra como verificar una condición donde la humedad es menor a 70.

 


 

 

 

Si queremos usar un loop que se repita usando una varible index, entonces podemos usar un bloque como el siguiente:

 


 

 

 

Significando que la variable index se autoincrementa cada vez que el código se ejecuta.

 

INSTRUCCIONES ARITMETICAS.

Las Instrucciones Aritméticas y Lógicas son las usadas para operaciones matemáticas. Estos bloques de código pueden ser encontrados en el menú:

Alli encontraremos bloques de código para las instrucciones aritméticas como: multiplicación, división, suma, resta.

 


 

 

 

El siguiente bloque de código hace una suma entre la intensidad y la luz.

 


 

 

 

el resultado de esta operación matemática puede ser almacenado en otra variable para los cual podemos usar el bloque de programación change. En la siguiente instrucción, se le dice a la placa microbit que haga una suma de la intensidad y la luz y almacene el resultado en la variable luxómetro.

 


 

 

 

Por ejemplo, el siguiente bloque multiplica la intensidad por la resistencia y almacena el resultado en la variable voltage:

 


 

 

 

INSTRUCCIONES LOGICAS.

Las Instrucciones Lógicas son las usadas para: comparaciones, condiciones y booleanas. Se encuentran agrupadas en el siguiente menú:

Una de las instrucciones de control mas usadas es la if, la cual puede ser usada para verificar si algo es verdadero o falso y en el caso que se cumpla la condición ejecutar un determinado código. El bloque de código que representa la instrucción if, para verificar si algo es verdadero, es el siguiente:

 


 

 

 

El bloque de código que representa la instrucción if, para verificar si algo es falso, es el siguiente:

 


 

 

 

Existe una instrucción que permite combinar las dos opciones anteriores, en un solo bloque de código, llamada if else. Es decir, si es verdadero haga una determina acción y si es falso, otra acción. El bloque de código usado para la instrucción if else, es el siguiente:

 


 

 

 

Es posible comparar una variable y un valor constante, para generar un condición verdadera o falsa. Eso podemos hacerlo con los bloques de código para comparación.

 


 

 

 

En el siguiente ejemplo se verifica si la humedad es mayor a 27, caso verdadero se ejecutará el código del bloque if. Caso falso, entonces se ejecuta el código dentro de la sentencia else.

 


 

 

 

También podemos verificar condiciones verdaderas y falsas entre 2 posiciones de memoria o variables. El siguiente bloque de código muestra un ejemplo:

 


 

 

 

El anterior bloque de código se ejecuta si la humedad es menor o igual que la variable luz, caso contrario se ejecuta el código dentro del bloque else.

También podemos usar operadores lógicos como el AND y OR. El siguiente bloque de código hace una operación lógica AND entre la intensidad y la tensión.

 


 

 

 

 

18.918MBMemory Usage49.69msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.20
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1748844829 "last" => 1748844829...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.36KB) (214μs)
  • afterInitialise (1.14MB) (4.01ms)
  • afterRoute (179.21KB) (938μs)
  • beforeRenderComponent com_content (100.98KB) (501μs)
  • Before Access::preloadComponents (all components) (33.45KB) (235μs)
  • After Access::preloadComponents (all components) (107.06KB) (440μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (27.43ms)
  • Before Access::getAssetRules (id:21004 name:com_content.article.24820) (514.65KB) (687μs)
  • After Access::getAssetRules (id:21004 name:com_content.article.24820) (7.38KB) (45μs)
  • afterRenderComponent com_content (414.76KB) (7.12ms)
  • afterDispatch (2.25KB) (63μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (1.66ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (419μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (102μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (1.15ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (622μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (71μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (204μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (50μs)
  • afterRender (273.75KB) (3.58ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (55.21%)
    27.43ms
    1 x afterRenderComponent com_content (414.76KB) (14.33%)
    7.12ms
    1 x afterInitialise (1.14MB) (8.07%)
    4.01ms
    1 x afterRender (273.75KB) (7.22%)
    3.58ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (3.35%)
    1.66ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (2.32%)
    1.15ms
    1 x afterRoute (179.21KB) (1.89%)
    938μs
    1 x Before Access::getAssetRules (id:21004 name:com_content.article.24820) (514.65KB) (1.38%)
    687μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.25%)
    622μs
    1 x beforeRenderComponent com_content (100.98KB) (1.01%)
    501μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.89%)
    440μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.84%)
    419μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.47%)
    235μs
    1 x afterLoad (85.36KB) (0.43%)
    214μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.41%)
    204μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.21%)
    102μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.14%)
    71μs
    1 x afterDispatch (2.25KB) (0.13%)
    63μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.1%)
    50μs
    1 x After Access::getAssetRules (id:21004 name:com_content.article.24820) (7.38KB) (0.09%)
    45μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique17.8ms1.58MB
  • SELECT @@SESSION.sql_mode;36μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 177μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)168μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`57μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest81μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`207μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)246μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 014.36ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`326μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '24820'216μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)160μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`260μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)289μs3.98KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`228μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC395μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`172μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1137μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)82μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context65μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)162μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 172μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy