Proměnná je pojmenované místo v paměti, kam můžeme uložit a kdykoliv změnit hodnotu.
Při pojmenovávání proměnných si dávejte pozor, aby jména měla smysl a popisovala, co proměnná obsahuje. Např. místo názvu x
nebo a
použijte něco jako teplota
, pocetHracu
, stavTlacitka
– to pomůže, aby byl kód přehledný a snadno pochopitelný pro ostatní (i pro vás v budoucnu).
// Příklad vytvoření a změny hodnoty proměnné
int cislo = 10; // Proměnná "cislo" obsahuje hodnotu 10
cislo = 20; // Změníme hodnotu na 20
cislo = cislo/2; // Vydělíme obsah proměnné 2
V jazyce C musíme při vytvoření proměnné zadat i její datový typ. Ten vybereme podle toho, jaká data chceme do proměnné ukládat.
Datový typ | Velikost | Popis |
---|---|---|
char |
8 bit | Znak, nabývá hodnoty jednoho ASCII znaku (-128 až 127). |
byte |
8 bit | Ukládá 8bitové číslo v rozsahu (0 až 255). |
boolean |
8 bit | Logická hodnota true (1) / false (0). |
int |
16 bit | Celé číslo (-32 768 až 32 767). |
unsigned int |
16 bit | Pouze kladná čísla (0 až 65 535). |
long |
32 bit | Celé číslo (-2 147 483 648 až 2 147 483 647). |
unsigned long |
32 bit | Pouze kladná čísla (0 až 4 294 967 295). |
float |
32 bit | Desetinné číslo (-3.4028235e38 až 3.4028235e38). |
double |
64 bit | Desetinné číslo s dvojnásobnou přesností. |
string |
různé | Datový typ pro uchování textového řetězce. |
Serial.print()
se používá k odeslání dat do seriového monitoru. Můžete tak zobrazit hodnoty proměnných, zprávy nebo výsledky výpočtů během běhu programu.
Serial.print("text");
– vypíše text do seriového monitoru.Serial.print(variable);
– vypíše hodnotu proměnné.Serial.println()
Funguje stejně jako Serial.print() ale na konci přejde na nový řádekint cislo = 5; // Proměnná, kterou poté budeme posílat
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("Hodnota promenne cislo je: ");
Serial.println(cislo); // Vytiskne "Hodnota x je: 10" a přejde na nový řádek
}
int cislo=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
cislo++;
if (cislo < 10) // Podmínka
{
Serial.println("Číslo je malé."); // Podmínka platí -> vypíše se text
}
else // Prvotní podmínka je neplatná
{
Serial.println("Číslo je velké."); // Podmínka neplatí -> vypíše se jiný text
}
}
int cislo=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (cislo > 0) {
Serial.println("Číslo je kladné.");
} else if (cislo < 0) {
Serial.println("Číslo je záporné.");
} else {
Serial.println("Číslo je nula.");
}
}
Pokud chceme nějakou část kódu opakovat můžeme použít for cyklus.
for (inicializace; podmínka; aktualizace) {
// kód, který se opakuje
}
Popis částí:
Příklad for cyklu
void setup() {
Serial.begin(9600); // Spustíme sériovou komunikaci
// Kód v těle cyklu se provede 5x, pro hodnoty i 0,1,2,3,4
for (int i = 0; i < 5; i++) {
Serial.print("Číslo: ");
Serial.println(i);
}
}
void loop() {
// loop je prázdná, protože výpis se provede jen jednou při startu
}
Další typ cyklu je while. Zatímco for používáme, když víme kolikrát se má cyklus opakovat, while je lepší, když nevíme předem, kdy má cyklus skončit (čekání na vstup, tlačítko atd.).
const int buttonPin = 7; // Pin, kam je připojené tlačítko
int buttonState = 0; // Proměnná pro stav tlačítka
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT); // Nastavíme pin tlačítka jako vstup
int i = 0;
// Cyklus běží, dokud není tlačítko stisknuté
while (digitalRead(buttonPin) == HIGH) {
Serial.print("Číslo: ");
Serial.println(i);
i++;
delay(500);
}
Serial.println("Tlačítko stisknuto, cyklus ukončen!");
}
void loop() {
// Nic, program skončil v setupu
}
Digitální signál je nespojitý, má jen určité hodnoty (např. 0 a 1). Naproti tomu analogový signál je spojitý – může nabývat jakékoli hodnoty v čase. Příklad: zvukový signál v mikrofonu nebo napětí z teplotního čidla.
Pro měření digitálního stavu pinu můžeme použít kterýkoli IO pin Arduina. Ovšem pro měření analogového signálu můžeme použít pouze piny označené písmenem A0-A7. Ty totiž lze připojit k AD převodníku na čipu mikroprocesoru (viz. lekce ADC v MIT)
Pro měření napětí použijeme funkci analogRead()
. Jako argument funkci zadáme číslo pinu, na kterém chceme měřit.
Tedy např. int napeti = analogRead(A4);
Arduino má 10bitový A/D převodník, což znamená, že dokáže rozlišit \(2^{10} = 1024\) úrovní napětí.
Například pokud analogRead()
vrátí hodnotu 724, vypočítáme napětí takto:
Napětí na vstupu je tedy přibližně 3,53 V.
Potenciometr je nastavitelný rezistor, který umožňuje plynule měnit odpor v obvodu. Má tři vývody – dva krajní pro pevný odpor a střední (jezdec), kterým nastavujeme hodnotu odporu mezi jedním krajem a jezdcem. Tím, že měníme odpor, měníme i napětí v obvodu (dělič napětí).
Zdroj obrázku: https://www.electronicshub.org/how-potentiometer-works/