KULTUROSFERA

Butonul de panică pe M5GO: senzor, decizie, acțiune

Lecția-suport: Recapitulare și evaluare

În modulul 4 ai desenat lanțul de informație: achiziție → tratare → comunicare. Azi îl construiești în întregime, cu toate cele trei verigi în palmă: butonul M5GO-ului e senzorul, programul tău e decizia, iar sunetul, bara de LED-uri și ecranul sunt acțiunea. Produsul: un buton de panică — apeși, și dispozitivul face imposibil de ignorat că ceva nu e în regulă. La finalul laboratorului, echipa ta va avea alarma rulată pe dispozitivul real și schema lanțului care o explică.

Ce îți trebuie

  • UIFlow la flow.m5stack.com, în browser, fără dispozitiv pentru faza de construcție. Documentație: docs.m5stack.com.
  • M5GO-ul școlii la stația demonstrativă — de data asta fără nicio unitate externă: butonul, difuzorul și barele de LED-uri sunt încorporate în dispozitiv. Tot ce îi trebuie unei alarme, din fabrică.
  • Schema lanțului de informație din caiet (modulul 4).
  • Timp: 45 de minute, aceeași organizare ca la stația meteo: echipe de 3-4, construcție în paralel, rotație de 5-8 minute la stație, lista de rulare pe tablă.

Lanțul pe hârtie, înainte de blocuri

  1. Fiecare echipă desenează lanțul de informație al alarmei, cu căsuțele din modulul 4:
    • Achiziție: butonul A apăsat (semnalul de intrare — un „da/nu" curat, cel mai simplu senzor posibil);
    • Tratare: programul decide — s-a apăsat? atunci stare de alarmă;
    • Comunicare: trei ieșiri în paralel: sunet (difuzor), lumină (barele de LED-uri), text (ecran).
  2. Decideți în echipă și scrieți pe schemă: cum se oprește alarma? Variante: se oprește singură după 10 secunde, sau la apăsarea butonului B. Alegerea contează — o alarmă care nu se poate opri e la fel de proastă ca una care nu pornește. Alarma voastră, regula voastră, dar scrisă pe hârtie înainte de primul bloc.

Construcția în UIFlow

  1. Deschideți flow.m5stack.com cu M5GO ca dispozitiv. Pe ecranul simulat puneți un Label mare, central, cu textul Sistem OK, pe fundal liniștit.
  2. Achiziția + tratarea: trageți din paletă blocul de eveniment pentru butonul A apăsat (categoria de evenimente / buton). Tot ce puneți în el se execută la apăsare — evenimentul e exact ca „la clic pe steagul verde" din Scratch-ul claselor mici, doar că butonul e fizic.
  3. Comunicarea, în interiorul evenimentului, toate trei:
    • Text: label-ul devine ALARMA!, iar fundalul ecranului roșu (blocul de culoare a ecranului);
    • Lumină: barele laterale de LED-uri (RGB bar) pe roșu, la luminozitate mare;
    • Sunet: difuzorul încorporat — un beep repetat: ton, pauză scurtă, în interiorul unei repetiții de câteva ori (blocurile de speaker/ton din paletă).
  4. Oprirea, conform regulii de pe schemă: fie după repetiția de beep-uri totul revine la normal (label Sistem OK, fundal închis, LED-uri stinse), fie un al doilea eveniment — butonul B apăsat — face resetarea. Implementați ce ați scris pe hârtie, nu ce e mai ușor.
  5. Verificați în simulator ce se poate verifica: butoanele simulate declanșează evenimentele, label-ul și fundalul se schimbă. Sunetul și LED-urile fizice se judecă doar la stație. Înscrieți echipa pe lista de rulare.

La stație: alarma pe viu

  1. La rândul vostru (5-8 minute, cronometrate): tehnicianul de stație conectează proiectul echipei, Run, și testați pe dispozitivul real:
    • apăsați A: pornesc toate cele trei ieșiri? Sunetul se aude din capătul clasei?
    • regula de oprire face ce scrie pe schemă?
    • apăsați A de două ori rapid: se încurcă alarma sau rezistă?
  2. Un membru filmează sau notează comportamentul — mai ales orice diferență față de simulator. Diferențele nu sunt eșecuri, sunt date: pe ele stă discuția finală.
  3. Predați stația la timp. Echipele care așteaptă lucrează extinderea sau compară schemele de lanț între ele: aceeași temă, aceleași verigi — câte reguli de oprire diferite au apărut în clasă?

Dacă nu merge

  • Apeși A în simulator și nu se întâmplă nimic. Blocurile de acțiune nu sunt în interiorul evenimentului de buton — plutesc pe lângă. În UIFlow, ca în Scratch: ce nu e legat de un eveniment nu se execută niciodată.
  • Pe dispozitiv, sunetul nu se aude. Volumul difuzorului e setat pe mic sau blocul de volum lipsește. Caută blocul de volum al speakerului și pune-l la început, o singură dată, cu o valoare mare.
  • LED-urile rămân roșii după oprirea alarmei. Resetarea schimbă textul și fundalul, dar nimeni nu a stins LED-urile. Fiecare ieșire pornită are nevoie de propria comandă de oprire — verifică pe schemă: câte ieșiri pornesc, atâtea trebuie oprite.
  • Alarma se declanșează singură, la atingeri ușoare sau imediat după pornire. Folosiți evenimentul de apăsare completă (pressed/was pressed), nu unul care se declanșează continuu cât timp butonul e ținut. Testați și varianta cealaltă ca să vedeți diferența — 30 de secunde la stație, merită.
  • Merge în simulator, dar pe dispozitiv programul vechi al echipei dinainte rulează în continuare. Nu s-a trimis programul: Run trebuie apăsat după conectarea la cheia stației, iar tehnicianul confirmă pe ecranul M5GO că s-a schimbat programul.

Misiunea ta

Nivel de bază: butonul de panică rulează pe M5GO cu toate cele trei ieșiri (sunet, LED-uri, ecran) și cu regula de oprire respectată.

Extindere: alarmă cu două niveluri — apăsarea scurtă a lui A dă o „atenționare" (LED-uri galbene, un singur beep, text Atentie), iar a doua apăsare în următoarele 3 secunde declanșează panica totală. Aveți nevoie de o variabilă care ține minte starea — tratarea din lanț devine cu adevărat interesantă.

Provocare: faceți alarma utilă pentru cineva anume: un buton de asistență pentru un coleg care are nevoie de ajutor discret (vibrația culorilor în loc de sunet strident?), o sonerie de pauză pentru profesor, un cronometru de prezentări care dă alarma la depășirea timpului. Adaptați toate cele trei ieșiri la utilizatorul ales și justificați fiecare alegere într-o frază — exact gândirea din modulul 2.

Ai terminat când:

  • alarma a trecut testul de la stație, inclusiv dubla apăsare rapidă;
  • pentru fiecare bloc din program poți spune în ce verigă a lanțului de informație stă;
  • regula de oprire funcționează exact cum a fost scrisă pe schemă înainte de implementare;
  • poți numi diferența dintre acest sistem și alarma de parcare din laboratorul 7 la veriga de achiziție (buton apăsat de om versus senzor care măsoară singur).