Op afstand gecontroleerde Multifunction scorebord op basis van Arduino, ESP8266 en uPanel firmware: interface ontwikkeling (3 / 5 stap)

Stap 3: INTERFACE


De interface bestaat uit 6 scherm panelen zoals in Figg. 6 tot en met 11.

Sommigen van hen zijn statische panelen, d.w.z. zij niet veranderen hun blik op runtime terwijl anderen dynamisch zijn en hun blik op runtime op basis van de Arduino schets variabele waarden veranderen. Een goed voorbeeld van dynamische deelvenster wordt weergegeven in Fig.8; Dit paneel simuleert wat op de echte MFS reproduceren de statische lay-out ontworpen bij stap 2 wordt weergegeven.

Het gebruik van panelen die de objectstatus van de echte (in dit geval de status van de MFS) simuleren is aanbevolen tijdens ontwerp, ontwikkeling en test van de µPanel interface om zowel de interface en de Arduino schets (of een andere software van de microcontroller) het vermijden van het gebruik van de echte hardware.

In Fig.12 staan de mogelijke overgangen tussen de panelen.

Om gemakkelijk de panelen ontwikkeling on line is Configuratiescherm simulator beschikbaar op http://www.miupanel.com/Panel-Design/ONLINE-PANEL...

Op het moment van publicatie van deze Instructables het online is panel simulator alleen beschikbaar voor visualisatie van een reeks, definiëren de lay-out van het paneel. De structuur van de tekenreeks met een beschrijving van een panel en alle de grafische opties zijn zeer goed uitgelegd op http://www.miupanel.com/. Het volstaat hier om aan te geven dat een paneel een lay-out gestructureerd als een matrix heeft, en elk element van de matrix, container, aangeroepen kan worden gestructureerd als een matrix zo goed en zo verder. Visualisatieopties kunnen elk element van de matrix of voor groepen van arrayelementen worden aangegeven. Macro kan ook worden gebruikt voor herhaalde bewerkingen.

Bij de ontwikkeling van een panel het is nodig aandacht te besteden aan het grote aantal brakets die gemakkelijk tot een fout dus, leiden kan om te slaan van de tekenreeks met een beschrijving van een panel, verdient het gebruik van een tekstbestand en een ontwerpbenadering van boven naar beneden.

Het volgende proces is gebruikt om het deelvenster weergegeven in Fig.7 definiëren.

Deelvenster is onderverdeeld in de belangrijkste containers met sommige opties voor afmetingen, stijlen, achtergrond en voorgrond kleuren.

D! F90 {^ {-r30! 228,114% 90 {T:SEZIONE1;}} _ {-r30! 228,114% 90 {T:SEZIONE2;}} _ {-r30! 228,114% 90 {T:SEZIONE3;}} _ {-r30! 228,114% 90 {T:SEZIONE4;}} _ {T:SEZIONE5;}}

Kopiëren en plakken van de tekenreeks in het online configuratiescherm simulator hettoezichtpanel weergegeven in Fig. 13 bis wordt verkregen. De beschikbare oranje (!. F90) gebied is onderverdeeld in 2 belangrijkste containers. De voormalige bevat verder 4 containers met blu verspreid achtergrond (! 228,114), witte afgeronde (r30) contour (-) en dimensie van 90 procent (90%) van de gehele horizontale dimensie van de container waarin ze; de 4 containers zijn uitgelijnd (_). De laatste container, op dit moment alleen tekst bevat.

Het laatste paneel is dan bereikt waarin de inhoud en de stijl van elke container als beschreven in de volgende en getoond in Fig van 13a tot 13u.

Deel 1 ({T:SEZIONE1;}) is onderverdeeld in 2 groepen over verschillende rijen en het zelfde ding voor sectie 2 ({T:SEZIONE2;}):

{T:SEZIONE1;}:--> {{T:SEZIONE1.1;} _ {T:SEZIONE1.2;}}

{T:SEZIONE2;}:--> {{T:SEZIONE2.1;} _ {T:SEZIONE2.2;}}

Ter vervanging van elke subtekenreeks hettoezichtpanel weergegeven in Fig.13b wordt verkregen.

Paragraaf 1.1 ({T:SEZIONE1.1;}) heeft zijn gedetailleerde met 4 containers in 2 rijen (_) en 2 kolommen (|) bevat drukknoppen te verhogen en verlagen van de score van de wedstrijd:

{T:SEZIONE1.1}:--> {fb * 10 {^ B5% 40, 10r80! FFF:LOCALI +; _B6% 40, 10r80! FFF:LOCALI-; {^ B7% 40, 10r80! FFF:OSPITI+; _B8% 40, 10r80! FFF:OSPITI-;}}

Paragraaf 1.2 ({T:SEZIONE1.2;}) heeft zijn gedetailleerde met 2 paar 3 groene cijfers in 2 kolommen:

{T:SEZIONE1.2}:--> {* 10 {-r30! 228,114 {LI5:0; & L15:0; & L25:0;}} | {& &} | {-r30! 228,114 {LJ5:0; & L35:0; & L45:0;}}}

Fig.13c toont het resultaat.

Blijven alle de containers in detail te beschrijven...

{T:SEZIONE2.1}:--> {fb * 10 {^ B9% 30, 10r80! FFF:CRONO; |L9G:0;} | {LAG: 0; | ^ BA % 30, 10r80! FFF:TIMEOUT;}}

{T:SEZIONE2.2}:--> {^ * 10 {-r30! 228,114 {L55:0; & L65:0;}} | {& &} | {-r30! 228,114 {L75:0; & L85:0;}}}

{T:SEZIONE3;}:--> {fb * 10 {^ BB % 26, 10r80! FFF:SUPPL.; | LBG:0;} | {LCG:0; | ^ BC % 26, 10r80! FFF:RIGORI;}}

{T:SEZIONE4;}:--> {fb * 10 {^ B3% 40, 10r80! FFF:TEMPO;} | {^ B3% 40, 10r80! FFF:DISPLAY;}}

{T:SEZIONE5;}:--> {fb {* 15 {^ BI % 40, 10r80! FFF:SIMULA;}} | {* 15 {^ BH % 40, 10r80! FFF:ESCI;}}}

... krijgen we het resultaat weergegeven in Fig.13f.

In dit geval is het mogelijk om te voorkomen dat de horizontale en verticale schuifbalken proberen aan te passen via het venster aan de dimensie van de apparaat met behulp van de w stijl (Dw! F90; in plaats van D! F90;).

Het resultaat wordt weergegeven in de Fig.13g (Fig. 13h past alleen de contour straal).

De Arduino schets implementeert de dynamische versie van het Configuratiescherm weergegeven in Fig. 13 h via een aanroep naar een functie die het deelvenster tekenreeks in subtekenreeksen onderverdelen en bevat de waarden van de variabelen runtime.

VOID sendMatchPrimaryScreen () {}

Serial.Print (P ("$P: D! F90; {^ {-r30! 228,114% 90 {{fb * 10 ^ {B5% 40, van 10r80! FFF:LOCALI +; _B6% 40, 10r80! FFF:LOCALI-;} "));

Serial.Print (P ("| {} ↑ B7% 40, 10r80! FFF:OSPITI +; _B8% 40, 10r80! FFF:OSPITI-;}} _ {* 10 {-r10! 228,114 {LI5:0; & L15:0;"));

Serial.Print (P ("& L25:0;}} | {& &} | {-r10! 228,114 {LJ5:0; & L35:0; & L45:0;}}} "));

Serial.Print (P ("_ {-r30! 228,114% 90 {{fb * 10 {^ B9% 30, 10r80! FFF:CRONO; |L9G:0;} | {LAG: 0; | ^ BA % 30, 10r80! FFF:TIMEOUT;}} "));

Serial.Print (P ("_ {^ * 10 {-r10! 228,114 {L55:0; & L65:0;}} | {& &} | {-r10! 228,114 {L75:0; & L85:0;}}} _"));

Serial.Print (P ("{-r30! 228,114% 90 {fb * 10 {^ BB % 26, 10r80! FFF:SUPPL.; | LBG:0;} "));

Serial.Print (P ("| {} LCG:0; |BC % 26, 10r80! FFF: "));

Als (defGame == 0) {Serial.print(P("RIGORI"));}

Als (defGame == 1) {Serial.print(P("RIGORI"));}

Als (defGame == 2) {Serial.print(P("TIRI"));}

Als (defGame == 3) {Serial.print(P("***"));}

Als (defGame == 4) {Serial.print(P("RIGORI"));}

Als (defGame == 5) {Serial.print(P("RIGORI"));}

Serial.Print (P (";}}}" _ {-r30! 228,114% 90 {fb * 10 {^ B3% 40, 10r80! FFF:TEMPO;} "));

Serial.Print (P ("| {} B3% 40, 10r80! FFF:DISPLAY;}}} _ {fb * 15 {{^ BI % 40, 15r80! FFF:SIMULA;}} | {{^ BH % 40, 15r80! FFF:ESCI;}}} "));

Serial.println("");

Als (screenId == startScreenId) {/ / huidige scherm is Start scherm

handleStart();

};

screenId = matchPrimaryScreenId;

};

Het laatste deelvenster wordt weergegeven in de Fig.13h.

De volledige reeks van Fig.13h is als volgt.

DW! F90; {^ {-r30! 228,114% 90 {{fb * 10 {^ B5% 40, 10r80! FFF:LOCALI +; _B6% 40, 10r80! FFF:LOCALI-;} | {^ B7% 40, 10r80! FFF:OSPITI +; _B8% 40, 10r80! FFF:OSPITI-;}} _ {* 10 {-r10! 228,114 {LI5:0; & L15:0; & L25:0;}} | {& &} | {-r10! 228,114 {LJ5:0; & L35:0; & L45:0;}}} _ {-r30! 228,114% 90 {{fb * 10 {^ B9% 30, 10r80! FFF:CRONO; |L9G:0;} | {LAG: 0; | ^ BA % 30, 10r80! FFF:TIMEOUT;}} _ {^ * 10 {-r10! 228,114 {L55:0; & L65:0;}} | {& &} | {-r10! 228,114 {L75:0; & L85:0;}}} _ {-r30! 228,114% 90 {fb * 10 {^ BB % 26, 10r80! FFF:SUPPL.; | LBG:0;} | {LCG:0; | ^ BC % 26, 10r80! FFF:TIRI;}}} _ {-r30! 228,114% 90 {fb * 10 {^ B3% 40, 10r80! FFF:TEMPO;} | {^ B3% 40, 10r80! FFF:DISPLAY;}}} _ {fb {* 15 {^ BI % 40, 10r80! FFF:SIMULA;}} | {* 15 {^ BH % 40, 10r80! FFF:ESCI;}}}

Dezelfde techniek is gebruikt voor de definitie van de andere panelen. Met name het scorebord scherm van Fig. 9 is statisch als volgt gedefinieerd (zie Fig. 14):

DW! F90; {^ {! 000 98% {{-r10% 95, 10 * 15 {Tfbi #FF0:ATLETICO S. ANNA ;}} _ {-r10% 95,50 {{% 95,10 {{% 20 * 10M1fbi #F00:RETI;} | {% 20 * 10M2fbi #F00:CRONO;} | {% 20 * 10M3fbi #F00:TEMPO;} | {% 20 * 10M4fbi #F00:TIMEOUT;}}} _ {% 95 * 12 {^ % 45 {LI5:0; L15:0; L25:0;}} | {^ % 45 {LJ5:0; L35:0; L45:0;}}} _ {% 95,10 {{> % 30 * 15M5fbi #0F0:LOCALI;} | {& & & & & & & & & & & & &} | {< % 30 * 15M6fbi #0F0:OSPITI;}}} _ {! 228,114% 98 {{-r10% 95 {fb * 10 {^ B5% 40, 10r80! FFF:LOCALI +; _B6% 40, 10r80! FFF:LOCALI-;} | {& & &} | {^ B7% 40, 10r80! FFF:OSPITI +; _B8% 40, 10r80! FFF:OSPITI-;}}} _ {-r10% 95 {fb * 10 {^ B9% 30, 10r80! FFF:CRONO; |L9G:0;} | {LAG: 0; | ^ BA % 30, 10r80! FFF:TIMEOUT;}}} _ {fb * 15 {^ B2% 40, 10r80! FFF:EXIT;}}}

Het deelvenster wordt tijdens runtime dynamisch beheerd door een aanroep naar een functie in aanmerking te nemen de waarden van variabelen:

VOID sendScoreboardScreen () {}

Serial.Print (P ("$P: D! F90; {^ {! 000 98% {{-r10% 95, 10 * 15 {Tfbi #FF0: "));

Serial.Print(logo2);

Serial.Print (P (";}}" _ {-r10% 95,50 {{% 95,10 {{% 20 * 10M1fbi #"));

Als ((modus == 0 & & taak == 1) || (mode == 1)) {Serial.print(P("F00"));} else {Serial.print(P("000"));};

Serial.Print (P (": RISULTATO;} | {% 20 * 10M2fbi #"));

Als ((modus == 0 & & taak == 2) || (mode == 2)) {Serial.print(P("F00"));} else {Serial.print(P("000"));};

Serial.Print (P (": CRONO;} | {% 20 * 10M3fbi #"));

Als ((modus == 0 & & taak == 3) || (mode == 3)) {Serial.print(P("F00"));} else {Serial.print(P("000"));};

Serial.Print (P (": TEMPO;} | {% 20 * 10M4fbi #"));

Als ((modus == 0 & & taak == 4) || (mode == 4)) {Serial.print(P("F00"));} else {Serial.print(P("000"));};

Serial.Print(P(":timeout;}}}"));

Serial.Print(P("_{%95*12{^%45{"));

Als (Ab2! = OFF_EXTRA) {}

Serial.Print(P("LI5:"));

Als (Ab2 == UNO_EXTRA) {Serial.print("1");} else {Serial.print(Ab2);};

Serial.Print(P(";"));

};

Als (Ab1! = OFF) {}

Serial.Print(P("L15:"));

Serial.Print(Ab1);

Serial.Print(P(";"));

};

Als (Ab0! = OFF) {}

Serial.Print(P("L25:"));

Serial.Print(Ab0);

Serial.Print(P(";"));

};

Serial.Print (P ("}} | {^%45{"));

Als (Bb2! = OFF_EXTRA) {}

Serial.Print(P("LJ5:"));

Als (Bb2 == UNO_EXTRA) {Serial.print("1");} else {Serial.print(Bb2);};

Serial.Print(P(";"));

};

Als (Bb1! = OFF) {}

Serial.Print(P("L35:"));

Serial.Print(Bb1);

Serial.Print(P(";"));

};

Als (Bb0! = OFF) {}

Serial.Print(P("L45:"));

Serial.Print(Bb0);

Serial.Print(P(";"));

};

Serial.Print(P("}}}_{%95,10{{%20*15M5fbi#"));

Als ((modus == 0 & & taak == 1) || (mode == 1)) {Serial.print(P("0F0"));} else {Serial.print(P("000"));};

Serial.Print (P (": LOCALI;} | {& & & & & & & & & &} | {% 20 * 15M6fbi #"));

Als ((modus == 0 & & taak == 1) || (mode == 1)) {Serial.print(P("0F0"));} else {Serial.print(P("000"));};

Serial.Print(P(":OSPITI;}}}"));

Serial.Print (P ("_ {! 228,114% 98 {{-r10% 95 {fb * 10 {^ B5% 40, 10r80! FFF:LOCALI +; _B6% 40, 10r80! FFF:LOCALI-;} "));

Serial.Print (P ("| {} & & &} | {^ B7% 40, 10r80! FFF:OSPITI +; _B8% 40, 10r80! FFF:OSPITI-;}}} _ {-r10% 95 {fb * 10 {^ B9% 30, 10r80! FFF:CRONO; |L9G: "));

Serial.Print(timer);

Serial.Print (P (";} | {LAG: "));

Serial.Print(Timeout);

Serial.Print (P ("; | ^ BA % 30, 10r80! FFF:TIMEOUT;}}} _ {fb * 15 {^ B2% 40, 10r80! FFF:ESCI;}}} "));

Serial.println("");

screenId = scoreboardScreenId;

};

Gerelateerde Artikelen

Arduino gecontroleerde auto volgsysteem op basis van SMS

Arduino gecontroleerde auto volgsysteem op basis van SMS

Hi ik een Arduino gecontroleerde auto volgsysteem op basis van SMS voor mijn vaders auto maakte.De gebruikte modules zijn;Arduino nano V3.0SkyLab GPS-moduleWaveCom GSM moduleDe SoftwareSerial bibliotheek, TinyGPS worden gebruikt om te communiceren me
Automatische ijsemmer leverancier op basis van Arduino

Automatische ijsemmer leverancier op basis van Arduino

Afgelopen vrijdag enkele ingenieurs uit DFRobot nam hun de Ice Bucket Challenge om het bewustzijn voor ALS. We besloten om het te doen in een maker manier met een leverancier van automatische ijsemmer op basis van Arduino.And zijn we alle makers over
Soldeer station gemaakt door mijzelf op basis van Arduino

Soldeer station gemaakt door mijzelf op basis van Arduino

Hallo! Zodra ik sprak over het soldeer station op de Arduino en onmiddellijk overdonderd me vragen (hoe? / waar? / wanneer?). Gezien de massa van aanvragen, besloten heb ik om schrijf een recensie van eenvoudige soldeer station (alleen soldeerbout) o
Biofeedback apparaat op basis van Arduino

Biofeedback apparaat op basis van Arduino

Hier presenteer ik een Open bron Biofeedback apparaat die ik bouwen op basis van Arduino. Je lichaamstemperatuur kan meten met een IR-sensor, GSR en u kunt andere apparaten aansluiten met wisselende sinus Toon uitgang, bijvoorbeeld de Thoughtstream U
3 fase sinusgolf generator op basis van Arduino Due

3 fase sinusgolf generator op basis van Arduino Due

het doel van dit aandeel is om iemand die probeert te gebruiken de inachtneming te helpen meer performance + gebrek aan referentie + niet-nuttige gegevensblad.Dit project is het kundig voor het genereren van maximaal 3 fase sinusgolf @ 256 monsters /
Ultrasone afstand meting NRF905 draadloze transmissiesysteem op basis van Arduino

Ultrasone afstand meting NRF905 draadloze transmissiesysteem op basis van Arduino

ICStation Team introduceren u deze ultrasone afstandsmeting NRF905 draadloze transmissiesysteem met ICStation UNO en Mega 2560 compatibel met Arduino. De spanning van de werken is DC5V. Het maakt gebruik van ultrasone voor het meten van afstand en re
Glas van computers op basis van Arduino Uno

Glas van computers op basis van Arduino Uno

Aan mijn meesters graduate project ("Gowing Computers, aansluiten van organen, knippen het snoer") van Konstfack College van kunstnijverheid en Design (keramiek en glas/CRAFT) heb ik gemaakt 3 glazen computers op basis van de specificaties van d
WIFI plant controlesysteem op basis van Arduino MEGA en ESP8266

WIFI plant controlesysteem op basis van Arduino MEGA en ESP8266

Vandaag gaan we om u te tonen onze eerste experiment op het Internet van dingen. Voor dit doel besloten we om het gebruik van een Arduino MEGA in plaats van een Arduino UNO. Dat komt omdat Arduino MEGA heeft meer dan één seriële poort en dit feit laa
Pixel verzonden teller op basis van Arduino

Pixel verzonden teller op basis van Arduino

Vele malen, gebruik we vaak van LCD zoals weergaveapparatuur, van kleine temperatuur monitoren tot grote industriële apparatuur.Het grappige ding in dit project is dat het combineert twee rode LED Matrices als vertoning. U hoeft geen andere apparaten
28BYJ-48 Stepper Motor controlesysteem op basis van Arduino met ULN2003 Chip

28BYJ-48 Stepper Motor controlesysteem op basis van Arduino met ULN2003 Chip

ICStation Team u kennismaken met deze stappenmotor -controlesysteem op basis van ICStation UNO compatibel met Arduino. Het gebruikt ULN2003-chip om te rijden. De spanning van de werken is DC5V. Het wordt op grote schaal gebruikt op de ATM-machine, in
DIY temperatuur & vochtigheid & rookmelder Alarm systeem op basis van Arduino

DIY temperatuur & vochtigheid & rookmelder Alarm systeem op basis van Arduino

ICStation team u introduceren hoe DIY deze temperatuur & luchtvochtigheid & rook alarmsysteem op basis van ICStation Mega 2560 compatibel met Arduino.The werkende spanning van dit systeem DC5V is. Het kan meten de huidige temperatuur, vochtigheid
NRF24L01 draadloos toetsenbord gegevens overdracht systeem op basis van Arduino

NRF24L01 draadloos toetsenbord gegevens overdracht systeem op basis van Arduino

ICStation Team u dit draadloze transmissie-systeem op basis van ICStation Mega 2560 en compatibel met Arduino UNO R3 introduceren. Het maakt gebruik van DC5V werkende spanning. Als er iemand op de toetsen te drukken, worden de waarde van de sleutels
4 x 4 x 4 LED-kubus op basis van Arduino en bloem protoboard

4 x 4 x 4 LED-kubus op basis van Arduino en bloem protoboard

dit instructable leert u hoe te bouwen van uw 4 x 4 x 4 LED kubus met Bloem ProtoBoard en controle door de Arduino. Waarom is bloem ProtoBoard? niet ProtoBoard?Omdat gebruik ik vaak van protoboards om uit te testen als een nieuw idee in de praktijk w
Menselijk lichaam inductie Alarm op basis van Arduino met een Arduino UNO, infrarode Sensormodule, Buzzer Module

Menselijk lichaam inductie Alarm op basis van Arduino met een Arduino UNO, infrarode Sensormodule, Buzzer Module

ICStation team van de afdeling onderzoek en ontwikkeling hebben gemaakt dit project over het menselijk lichaam inductie alarm. DC5V spanning wordt gebruikt om te werken. Wanneer iemand wordt weergegeven op het inducerend gebied van infrarode sensor e