Recull de pràctiques de 2n de DAM. Curs 2025-2026

De binefa.com
Salta a la navegació Salta a la cerca

A06 - POO amb C++ i Qt

A06.00

Instal·lació de la versió educativa del QtCreator

A06.01 - Ginys encastats

  • a0601a. Feu una interfície gràfica (GUI) amb dos botons (+ i -) i una etiqueta numèrica.
  • a0601b. Feu una interfície gràfica (GUI) amb una barra lliscant (slider) i un giny LCD de dos números. La barra lliscant controla l'LCD.
  • a0601c. Feu una interfície gràfica (GUI) que integri els dos projectes anteriors. La botonera també controla la barra lliscant i l'LCD. La barra lliscant també controla el valor de l'etiqueta numèrica.

caption

Exercici A06.01. (Heu de desar a la carpeta A06 un document 2526-DAM-A06.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A06.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).

A06.02 - Interfícies gràfiques

Enunciat A06.02

Exercici A06.02. (Heu de desar a la carpeta un document 2526-DAM-A06.02-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user si ho feu amb qmake o el .txt.user si ho feu amb CMake).

A06.03

Enunciat A06.03

Exercici A06.03. (Heu de desar a la carpeta un document 2526-DAM-A06.02-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .txt.user).

A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació

A07.01 - Introducció al control de la placa Iot-02 mitjançant NodeRed

Exercici A07.01 (Heu de desar a la carpeta A07 un document 2526-DAM-A07.01-1rCognom2nCognomNom.pdf amb l'explicació del procés de resolució de la pràctica, incloent-hi captures de pantalla i fotografies.

A07.01.0

Explicació de com connectar la placa IoT-02, mitjançant MQTT, a Node-RED i a Snap!

A07.01.1

Feu un codi emprant el panell de control (Dashboard) de NodeRed que surtin quatre interruptors que controlin els quatre leds de la placa IoT-02, mitjançant comunicació MQTT.

A07.01.2

Feu un codi emprant el panell de control (Dashboard) de NodeRed que mostri l'estat dels tres botons de la placa IoT-02, mitjançant comunicació MQTT.

A07.01.3

Agrupeu a una sola pestanya A07.01.1 i A07.01.2.

A07.02 - Punt multicolor al NodeRED i variables de flux

Feu una visualització d'un punt que representa un led multicolor. A la placa IoT-02:

  • Quan el botó IO0 sigui premut incorpora el color vermell al punt multicolor representat al panell de control del NodeRED
  • Quan el botó IO0 no sigui premut traieu el color vermell al punt multicolor representat al panell de control del NodeRED
  • Quan el botó I34 sigui premut incorpora el color verd al punt multicolor representat al panell de control del NodeRED
  • Quan el botó I34 no sigui premut traieu el color verd al punt multicolor representat al panell de control del NodeRED
  • Quan el botó I35 sigui premut incorpora el color blau al punt multicolor representat al panell de control del NodeRED
  • Quan el botó I35 no sigui premut traieu el color blau al punt multicolor representat al panell de control del NodeRED

A07.03 - Visualització amb un giny rellotge del nivell de llum

Feu una visualització d'un giny rellotge que indiqui el nivell de llum a la LDR de la placa IoT-02.

A08 - QML, connexió a rerefons Qt i PureQML

A08.00

Feu un document explicant com fer un projecte emprant PureQML i llur migració a QML.

A08.01

Feu un programa en QML que al principi hi surti un quadrat vermell centrat. Al prémer la tecla B hi sortirà de color blau, al prémer la tecla G hi sortirà de color verd i al prémer la tecla R torna a ser vermell.

A08.02

Feu un programa en QML a on hi aparegui centrat, horitzontalment i vertical, ben gros i en negreta el nom Escola del Clot. Al prémer la tecla + la lletra es farà més grossa. I al prémer la tecla - la lletra es farà més petita.

A08.03

Feu un programa que hi surti el text, centrat a la finestra, "Comptador: 0" de color vermell. Al prémer el botó + incrementarà el valor del comptador, i al prémer el botó '-' es decrementarà. Al prémer la tecla N el text serà de color negre i al prémer V tornarà a ser de color vermell.

A08.04

Desenvolupeu un joc de pedra, paper, tisora.

A08.04.1

Feu servir lletres.

A08.04.2

Feu servir imatges.

A08.04.3

Afegiu un botó de configuració que porti a una altra pantalla (feu servir SwipeView i PageIndicator) que:

  • Permeti seleccionar mode dia o mode nit.
  • Digui quantes partides ha guanyat l'usuari i quants l'aplicació (feus servir QSettings per a la persistència de dades).
  • Un botó que torni a zero el nombre de partides guanyades i perdudes.
  • Un botó per tornar al joc

A12 - Qt

A12.01 - ginyMqtt amb CMake

Codi de referència i ajuda

L'objectiu d'aquest exercici és fer una aplicació en Qt capaç de comunicar-se bidireccionalment amb la Placa IoT-02. El funcionament és exactament igual que a l'exercici anterior que heu fet emprant qmake, en aquest heu de fer servir CMake.

Connectat al broker. Desenvolupat amb CMake

Suggeriment d'arxiu de projecte emprant CMake:

Exemple d'arxiu de projecte emprant CMake i Mqtt

Afegiu Network i Mqtt a find_package():

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Mqtt)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network Mqtt)
Exemple d'arxiu de projecte emprant CMake i Mqtt

Afegiu Qt${QT_VERSION_MAJOR}::Network i Qt${QT_VERSION_MAJOR}::Mqtt a target_link_libraries():

target_link_libraries(ginyMqtt04_cmake PUBLIC Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Mqtt)
Exemple d'arxiu de projecte emprant CMake i Mqtt

Exercici A12.01 (Heu de desar al Drive el document 2526-DAM-A12.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A12.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el CMakeLists.txt.user).

A12.02 Mqtt_IoT02

Desenvolupeu un projecte en Qt, capaç d'interaccionar amb la Placa IoT-02, amb aquest aspecte:

QtMqttIoT02
  • A12.02-1)

Prenent com a base els arxius 00_botonsToggle05.zip i 00_botonsToggle06.zip del recull, desenvolupeu el projecte 02_indicadorLed_00 per a que tingui aquest comportament:

02_indicadorLed_00


02_indicadorLed_00
  • A12.02-2)

Basant-vos en 02_indicadorLed_00 i 01_json_00.zip del recull, desenvolupeu el projecte 03_indicadorLed_01 per a que tingui aquest aspecte (els valors dels led R, G i B donen valors 0 i 1. Els valors del led W són true i false):

03_indicadorLed_01
  • A12.02-3)

Basant-vos en 04_indicadorBotons00.zip del recull, desenvolupeu el projecte 05_indicadorBotons_01 per a que tingui aquest aspecte:

05_indicadorBotons_01
  • A12.02-4)

Basant-vos en 03_indicadorLed_01, desenvolupeu 03_indicadorLed_01_mqtt que controli els quatre leds de la placa IoT-02.

Mqtt_IoT02::Mqtt_IoT02(QWidget *parent)
   : QWidget(parent)
   , ui(new Ui::Mqtt_IoT02)
{
   ui->setupUi(this);

   mqttBasic = new MqttBasic; 
   indicadorLed = new IndicadorLed;
   indicadorBotons = new IndicadorGrupBotonsEt;
   ui->hlAmunt->addWidget(mqttBasic);
   ui->hlCentre->addWidget(indicadorLed);
   ui->hlAvall->addWidget(indicadorBotons);
   connect(mqttBasic,SIGNAL(vSignalMqttConnected()),this,SLOT(vMqttConnectat()));
   connect(mqttBasic,SIGNAL(vSignalMqttDisconnected()),this,SLOT(vMqttDesconnectat()));
   connect(indicadorLed,SIGNAL(vTrametJsonLeds(QString)),this,SLOT(vTrametJsonLeds(QString)));

   indicadorBotons->vSetJsonText("");

   //showMaximized();
}
  • A12.02-5)

Basant-vos en 05_indicadorBotons_01, desenvolupeu 05_indicadorBotons_01_mqtt que llegeixi els tres botons de la placa IoT-02.

  • A12.02-6)

Feu l'integració per a que l'aspecte sigui semblant a la captura d'inici de l'activitat A12.02. Haureu d'afegir un QTimer per anar demanant periòdicament el JSON que conté el valor de l'LDR.