Butonul de panică pe M5GO: senzor, decizie, acțiune
Î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
- 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).
- 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
- 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. - 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.
- 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ă).
- Text: label-ul devine
- 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. - 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
- 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ă?
- 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ă.
- 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).