JEŻELI prawidłowo zaprogramujesz LEDa zobaczysz piękną tęczę kolorów JEŻELI NIE czeka cię ciemność.
Żaden algorytm działania nie może się obyć bez najpopularniejszej instrukcji warunkowej IF THEN Instrukcja ta dostępna jest też jako skrypt w Virtuino. Popatrzmy co potrafi i do czego może się przydać
Wydaje się że skrypt "IF" jest bardzo podobny do wcześniej omawianego jednowejściowego skryptu "Logical gate". I tu i tu sygnał wyjściowy zależy od wartości TRUE lub FALSE sygnału wejściowego.
Jednak oba skrypty różnią się między sobą i to bardzo.
Podstawowa różnica jest taka iż dla obu warunków THEN i ELSE (odpowiadającym warunkom TRUE i FALSE) w skrypcie IF można przypisać 10 różnych akcji
Jeśli wybierzemy akcję SEND skrypt będzie się zachowywał jak jednowejściowa bramka logiczna. Ale już kolejne 9 akcji dają nam nieprawdopodobną możliwość manipulowania wartością pinów a przede wszystkim wpływania na działanie samej aplikacji Virtuino. Muszę przyznać, iż z takimi funkcjami aplikacji dla IoT spotykam się po raz pierwszy. Omówienie dostępnych akcji będzie (może) w przyszłości. Instrukcja IF jako jedyna warunkowa funkcja w Virtuino jest najczęściej używanym skryptem bez którego nie można zrealizować żadnego złożonego algorytmu.
Zmienne (piny) w skrypcie IF mogą przybierać dowolne wartości zarówno liczbowe jak i tekstowe.
JEŻELI chcemy programować cokolwiek w aplikacji Virtuino TO prędzej czy później musimy użyć skryptu IF więc warto się z nim zapoznać dokładniej.
Instrukcja CASE pozwoli nam na wybór dla większej niż 2 wartości zmiennej wejściowej. Co że nie ma takiego skryptu? Ano nie ma. Ale jest możliwość stworzenia własnego skryptu CASE. Oto on
/*
This script returns a text depending if the input Tag value
*/
//--- Copy values from Virtuino Variables to JavaScript variables
let inputValue = +Virtuino.readValue("inputTag"); // use the + to read as number
//--- enter the JavaScript code like the example below
function isValidNumber(v){
return ((v!=null) & (!isNaN(v)));
}
if (isValidNumber(inputValue)){ // be sure the input is not null
switch (inputValue ) {
case 1:
value ="very slowly";
break;
case 2:
value ="slowly";
break;
case 3:
value ="fast";
break;
case 4:
value ="very fast";
break;
// include as many cases as you like
default:
value ="dangerously";
break;
}
result = '{"tag":"outputTag", "value":"'+ value+ '"}'; // enclose text value with " "
}
else {
result = null; // don't write anything to the output
}
I znowu jak poprzednio skorzystałem z gotowego wzorca skryptu "Get a text message depending of the input value (Text sript)" przerabiając go nieco. 5 minut i nowy własny skrypt gotowy przy pomocy tego poradnika. Byłoby szybciej gdyby nie te pojedyncze i podwójne cudzysłowie.
Teraz to już na poważnie zaczyna się programowanie w Virtuino. Aż strach pomyśleć co będzie dalej...
Ale o tym może nam kiedyś opowie nasz ulubiony ciąg dalszy.