/*value = millis(); // nastav 'value' shodně s mil l is()
while (someVariable < 200) // test, zda je proměnná menší než 200
{
příkazy; // vykonání příkazů
someVariable++; // zvětšení proměnné o 1
}
Tato smyčka pracuje stejně jako smyčka while, jen s tím rozdílem, že podmínka je
testována nikoli na začátku, ale až na konci smyčky, takže smyčka proběhne vždy nejméně
jednou.
do
{
příkazy;
}
while (someVariable ?? value);
Následující příklad testuje hodnotu proměnné i typu integer, nastavené na 0 a zjišťuje,
zda je její hodnota stále menší než 20. Je-li to pravda, zvětší hodnotu proměnné i o 1 a
provede příkazy, uzavřené ve složených závorkách:
for(int i=0; i<20; i++) // deklaruje proměnnou 'i', testuje
// zda je menší než 20 a pokud
// ne, zvětší j i o 1
{
digitalWrite(13, HIGH); // nastaví pin 13 na HIGH
delay(250); // čeká 250 ms
digitalWrite(13, LOW) ; // nastaví pin 13 na LOW
delay(250); // čeká 250 ms
}
if(inputPin < 500)
{
doThingA;
}
else if(inputPin >= 1000)
{
doThingB;
}
else
{
doThingC;
}
x==y // x je rovno y
x!=y // x není rovno y
x<y // x je menší než y
x>y // x je větší než y
x<=y // x je menší nebo rovno y
x>=y // x je větší nebo rovno y
LOGICKÉ AND:
if (x>0 && x<5) // Vrací hodnotu TRUE, když oba
// výrazy mají hodnotu TRUE
LOGICKÉ OR:
if (x>0 || y>0) // Vrací hodnotu TRUE, když kterýkoli
// z prvků má hodnotu TRUE
LOGICKÉ NOT:
if (!x > 0) // Vrací hodnotu TRUE, když oba
// prvky mají hodnotu FALSE
x++ // je totéž jako x=x+1, tedy zvětšení hodnoty x o +1
x-- // je totéž jako x=x–1, tedy zmenšení hodnoty x o -1
x+=y // je totéž jako x=x+y, tedy zvětšení hodnoty x o hodnotu +y
x-=y // je totéž jako x=x–y, tedy zmenšení hodnoty x o hodnotu - y
x*=y // je totéž jako x=x*y, tedy vynásobení x y
x/=y // je totéž jako x=x/y, tedy podělení x y
int soucet(int x, int y) funkce
{
vysledek = x + y; // tělo funkce
return vysledek; return to zpristupni i mimo funkci
}
unsigned long lastTime1; //proměnná s uloženým časem posledního vyvolání funkce podprogram1
unsigned long lastTime2; //proměnná s uloženým časem posledního vyvolání funkce podprogram2
unsigned long presentTime; //proměnná pro aktuální čas
void setup() {
//pokud zde nebude přiřazení hodnoty do proměnné, tak se obě funkce pustí ihned po spuštění MCU a pak dále po nastaveném čase
//pokud zde přiřazení proměnné bude, spustí se funkce až po nastaveném čase
lastTime1 = millis(); //ulož čas provedení podprogramu 1
lastTime2 = millis(); //ulož čas provedení podprogramu 2
}
void loop() {
presentTime = millis(); //uložení aktuálního času do proměnné
if (presentTime - lastTime1 >= 1000) {
//pokud je čas od poslední změny větší, nebo roven 1000 ms, proveď příkazy
lastTime1 = presentTime; //ulož čas provedení podprogramu 1
Podprogram1(); //spusť funkci Podprogram1
}
if (presentTime - lastTime2 >= 5000) {
//pokud je čas od poslední změny větší, nebo roven 5000 ms, proveď příkazy
lastTime2 = presentTime; //ulož čas provedení podprogramu 2
Podprogram2(); //spusť funkci Podprogram2
}
//další části programu, které běží i když se čeká na spuštění funkcí
}
void Podprogram1() {
//tato funkce se spustí jednou za 1000 ms
}
void Podprogram2() {
//tato funkce se spustí jednou za 5000 ms
}
bool lastInput11; //proměnná s minulým stavem vstupu 11
bool lastInput12; //proměnná s minulým stavem vstupu 12
bool presentInput11; //proměnná s aktuálním stavem vstupu 11
bool presentInput12; //proměnná s aktuálním stavem vstupu 12
void setup() {
pinMode(11, INPUT); //vstup 1 (tlačítko ON)
pinMode(12, INPUT); //vstup 2 (tlačítko OFF)
pinMode(13, OUTPUT); //výstup (signalizační LED)
}
void loop() {
//načtení vstupů do proměnných
presentInput11 = digitalRead(11);
presentInput12 = digitalRead(12);
if (presentInput11 != lastInput11) {
//aktuální a minulý stav tlačítka není stejný
//bylo stisknuto, nebo povoleno tlačítko na pinu 11
if (presentInput11 == HIGH) {
//aktuální stav je HIGH, tlačítko je stisknuto
//je detekována náběžná hrana
digitalWrite(13, HIGH); //zapnout LED na pinu 13
}
else {
//aktuální stav je LOW, tlačítko je povoleno
//je detekována sestupná hrana
}
}
if (presentInput12 != lastInput12) {
//aktální a minulý stav tlačítka není stejný
//bylo stisknuto, nebo povoleno tlačítko na pinu 12
if (presentInput12 == HIGH) {
//aktuální stav je HIGH, tlačítko je stisknuto
//je detekována náběžná hrana
digitalWrite(13, LOW); //vypnout LED na pinu 13
}
}
lastInput11 = presentInput11; //uložení aktuálního stavu tlačítka do minulého stavu
lastInput12 = presentInput12; //uložení aktuálního stavu tlačítka do minulého stavu
}
bool input1, input2, input3; //vstupy
bool lastInput1, lastInput2, lastInput3; //minulé stavy vstupů
bool edgeInput1, edgeInput2, edgeInput3; //proměnná je true pouze jeden cyklus po náběžné hraně
void setup() {
//nastavení I/O
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
}
void loop() {
//načtení vstupů do proměnných
input1 = digitalRead(11);
input2 = digitalRead(12);
input3 = digitalRead(13);
//detekce hrany signálu
edgeInput1 = (input1 ^ lastInput1) & input1;
edgeInput2 = (input2 ^ lastInput2) & input2;
edgeInput3 = (input3 ^ lastInput3) & !input3; //zde se hlídá sestupná hrana signálu
//uložení minulého stavu vstupů
lastInput1 = input1;
lastInput2 = input2;
lastInput3 = input3;
}
#define LED 2
#define TLACITKO 5
bool AktualniStav;
bool MinulyStav = 1;
void setup()
{
pinMode(LED, OUTPUT); // nastaveni pinu 2 jako vystup
pinMode(TLACITKO, INPUT_PULLUP); // nastaveni pinu 5 jako vstup s pull-up rezistorem
}
void loop()
{
AktualniStav = digitalRead(TLACITKO); // nacteni aktualniho stavu tlacitka
if(AktualniStav == 0 && MinulyStav == 1) // je-li ted stisknuto tlacitko
{ // a zaroven predtim nebylo
digitalWrite(LED, !digitalRead(LED)); // zmen hodnotu vystupu
}
MinulyStav = AktualniStav; // uloz aktualni stav tlacitka jako minuly stav
}
#define LED 2
#define TLACITKO 5
// casova prodleva v niz ignorujeme zmenu stavu tlacitka
#define PRODLEVA 50
bool MinulyStav = 1; // priznak predchoziho stavu tlacitka (0 .. stisknuto)
unsigned long CasZmeny; // promenna pro ulozeni casu zmeny stavu tlacitka
void setup()
{
pinMode(LED, OUTPUT); // nastaveni pinu 2 jako vystup
pinMode(TLACITKO, INPUT_PULLUP); // nastaveni pinu 5 jako vstup se zapnutym pull-upem
}
void loop()
{
if (digitalRead(TLACITKO) == 0) // je-li tlacitko stisknuto
{
if (MinulyStav == 1 && millis() - CasZmeny > PRODLEVA) // neni-li nastaven priznak
{ // tlacitko stisknuto a uplynul-li vetsi cas
// od zmeny stavu tlacitka nez je mez (50ms)
MinulyStav = 0; // nastav priznak tlacitko stisknuto
digitalWrite(LED, !digitalRead(LED)); // zmen hodnotu vystupu LED
}
}
else // neni-li stisknuto tlacitko
{
CasZmeny = millis(); // zapamatuj si posledni cas, kdy bylo nestisknuto
MinulyStav = 1; // nuluj priznak, tlacitko stisknuto
}
}
*/
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}