How do I compare numbers in Arduino?

Guide til Sammenligningsoperatorer i Arduino

30/11/2024

Rating: 4.58 (10979 votes)

At skrive kode til Arduino handler i bund og grund om at give mikrocontrolleren instrukser, så den kan interagere med den fysiske verden. En af de mest fundamentale byggesten i denne proces er evnen til at træffe beslutninger. Skal en LED tænde, når en sensor registrerer mørke? Skal en motor stoppe, når en genstand er tæt nok på? Svarene på disse spørgsmål afhænger af sammenligninger, og her kommer sammenligningsoperatorer ind i billedet. Disse operatorer er hjertet i al logik og beslutningstagning i din Arduino-kode og er essentielle for at skabe dynamiske og intelligente projekter.

What are comparison operators in Arduino IDE?
In Arduino programming, comparison operators allow us to compare two values and evaluate whether a particular condition is true or false. These operators are often used within conditional statements like if, else if, and while loops. There are 6 relational operators in Arduino IDE: The equality operator (==) checks whether two values are equal.
Indholdsfortegnelse

Hvad er Relationelle eller Sammenligningsoperatorer?

I Arduino-programmering, ligesom i de fleste andre programmeringssprog, er en operator et symbol, der fortæller compileren, at den skal udføre en bestemt matematisk eller logisk operation. Mens aritmetiske operatorer (+, -, *, /) udfører beregninger, bruges sammenligningsoperatorer, også kendt som relationelle operatorer, til at sammenligne to værdier (operander). Resultatet af en sådan sammenligning er altid en boolesk værdi: enten sandt (true), som repræsenteres af tallet 1, eller falsk (false), som repræsenteres af tallet 0. Disse sandt/falsk-resultater bruges typisk i betingede sætninger som if, else if og i loops som while til at styre flowet i programmet.

Der findes seks centrale sammenligningsoperatorer i Arduino IDE, som vi vil gennemgå i detaljer.

Oversigt over Sammenligningsoperatorer

For at give et hurtigt overblik, er her en tabel, der opsummerer de seks operatorer, du vil bruge konstant i dine Arduino-skitser.

OperatorNavnBeskrivelse
==Er lig medReturnerer 'sandt' (1), hvis de to operander er lig med hinanden.
!=Er ikke lig medReturnerer 'sandt' (1), hvis de to operander ikke er lig med hinanden.
<Mindre endReturnerer 'sandt' (1), hvis den venstre operand er mindre end den højre.
>Større endReturnerer 'sandt' (1), hvis den venstre operand er større end den højre.
<=Mindre end eller lig medReturnerer 'sandt' (1), hvis den venstre operand er mindre end eller lig med den højre.
>=Større end eller lig medReturnerer 'sandt' (1), hvis den venstre operand er større end eller lig med den højre.

Dybdegående Gennemgang med Eksempler

Lad os nu se på hver operator med kodeeksempler for at forstå, hvordan de fungerer i praksis. I alle eksempler vil vi bruge Seriel Monitor til at vise resultatet.

Er lig med (==)

Denne operator tjekker, om to værdier er identiske. Det er en af de mest almindelige operatorer, men også kilden til en hyppig fejl: at forveksle den med tildelingsoperatoren =. Husk altid: == sammenligner, = tildeler.

What is a not operator in Arduino?
int a = 10; int b = 10; bool resultat; void setup() { Serial.begin(9600); // Første sammenligning: a og b er ens resultat = (a == b); // Tjekker om a er lig med b Serial.println(resultat); // Printer 1 (sandt) // Ændrer værdien af b b = 20; // Anden sammenligning: a og b er nu forskellige resultat = (a == b); Serial.println(resultat); // Printer 0 (falsk) } void loop() { // Intet her for dette eksempel }

I Seriel Monitor vil du se outputtet:

1 0

Er ikke lig med (!=)

Denne operator gør det stik modsatte af ==. Den returnerer 'sandt', hvis de to værdier er forskellige fra hinanden.

int a = 10; int b = 10; bool resultat; void setup() { Serial.begin(9600); // Første sammenligning: a og b er ens resultat = (a != b); // Tjekker om a IKKE er lig med b Serial.println(resultat); // Printer 0 (falsk) // Ændrer værdien af b b = 20; // Anden sammenligning: a og b er nu forskellige resultat = (a != b); Serial.println(resultat); // Printer 1 (sandt) } void loop() {}

Output i Seriel Monitor:

0 1

Mindre end (<) og Større end (>)

Disse operatorer bruges til at afgøre, om en værdi er henholdsvis mindre eller større end en anden. De er fundamentale, når man arbejder med sensorværdier, f.eks. for at tjekke om temperaturen er over et vist niveau.

int a = 15; int b = 20; bool resultat_mindre; bool resultat_stoerre; void setup() { Serial.begin(9600); // Sammenligning 1 resultat_mindre = (a < b); // Er a mindre end b? (15 < 20) Serial.print("a < b: "); Serial.println(resultat_mindre); // Printer 1 (sandt) resultat_stoerre = (a > b); // Er a større end b? (15 > 20) Serial.print("a > b: "); Serial.println(resultat_stoerre); // Printer 0 (falsk) // Bytter om på værdierne for at demonstrere a = 25; // Sammenligning 2 resultat_mindre = (a < b); // Er a mindre end b? (25 < 20) Serial.print("a < b: "); Serial.println(resultat_mindre); // Printer 0 (falsk) resultat_stoerre = (a > b); // Er a større end b? (25 > 20) Serial.print("a > b: "); Serial.println(resultat_stoerre); // Printer 1 (sandt) } void loop() {}

Output i Seriel Monitor:

a < b: 1 a > b: 0 a < b: 0 a > b: 1

Mindre/Større end eller lig med (<= og >=)

Disse operatorer fungerer ligesom < og >, men de inkluderer også tilfældet, hvor de to værdier er ens. De er utroligt nyttige, når man skal definere et interval, f.eks. `if (sensorValue >= 100 && sensorValue <= 200)`.

int a = 10; int b = 10; void setup() { Serial.begin(9600); // Tilfælde 1: a og b er ens Serial.println(a <= b); // Printer 1 (sandt), fordi a er lig med b Serial.println(a >= b); // Printer 1 (sandt), fordi a er lig med b // Tilfælde 2: b gøres mindre b = 8; Serial.println(a <= b); // Printer 0 (falsk), fordi 10 ikke er mindre end eller lig med 8 Serial.println(a >= b); // Printer 1 (sandt), fordi 10 er større end eller lig med 8 } void loop() {}

Output i Seriel Monitor:

1 1 0 1

Praktisk Anvendelse: Sammenlign Højden på To Personer

For at sætte det hele i perspektiv, lad os bygge et lille program, der tager imod navne og højder for to personer via Seriel Monitor og derefter bruger sammenligningsoperatorer til at afgøre, hvem der er højest.

Dette eksempel viser, hvordan man kombinerer brugerinput med if-else if-else-strukturer og sammenligningsoperatorer for at skabe et interaktivt program.

String person1_navn; int person1_hoejde; String person2_navn; int person2_hoejde; void setup() { Serial.begin(9600); } void loop() { // Indhent data for person 1 Serial.println("Indtast navn på første person:"); while (Serial.available() == 0) {} person1_navn = Serial.readString(); Serial.println("Indtast højden på første person (i cm):"); while (Serial.available() == 0) {} person1_hoejde = Serial.parseInt(); // Indhent data for person 2 Serial.println("Indtast navn på anden person:"); while (Serial.available() == 0) {} person2_navn = Serial.readString(); Serial.println("Indtast højden på anden person (i cm):"); while (Serial.available() == 0) {} person2_hoejde = Serial.parseInt(); // Sammenlign højderne og print resultatet if (person1_hoejde > person2_hoejde) { Serial.print(person1_navn); Serial.print(" er højest med "); Serial.print(person1_hoejde - person2_hoejde); Serial.println(" cm."); } else if (person2_hoejde > person1_hoejde) { Serial.print(person2_navn); Serial.print(" er højest med "); Serial.print(person2_hoejde - person1_hoejde); Serial.println(" cm."); } else { Serial.println("Begge personer har samme højde!"); } Serial.println("\n--------------------------\n"); }

I denne kode bruger vi >-operatoren til at tjekke, om den ene højde er større end den anden. Hvis ingen af de to første betingelser er sande, må de nødvendigvis være ens, hvilket fanges af den sidste else-del. Dette er et klassisk eksempel på, hvordan man bygger logik med Arduino.

What is a modulus and assignment operator in Arduino?
Modulus AND assignment operator. It takes modulus using two operands and assign the result to left operand Learn about various operators in Arduino, including arithmetic, relational, logical, and bitwise operators, to enhance your programming skills.

Ofte Stillede Spørgsmål (FAQ)

Hvordan sammenligner jeg tal i Arduino?

Den bedste og mest effektive måde er at sammenligne dem direkte ved hjælp af deres datatyper som int, float, eller long. Undgå at konvertere tal til strenge (Strings) for at sammenligne dem, da det er langsommere og kan føre til uventede resultater. Brug de seks sammenligningsoperatorer (==, !=, <, >, <=, >=) direkte på dine numeriske variable.

Hvad er forskellen på `=` og `==`?

Dette er en af de mest almindelige fejl for begyndere. Enkelt lighedstegn = er en tildelingsoperator. Den tager værdien på højre side og tildeler den til variablen på venstre side (f.eks. int x = 5;). Dobbelt lighedstegn == er en sammenligningsoperator. Den tjekker, om værdierne på begge sider er ens, og returnerer 'sandt' eller 'falsk' (f.eks. if (x == 5)).

Kan jeg sammenligne tekststrenge (Strings)?

Ja, i Arduino kan du bruge operatoren == til at sammenligne to String-objekter. For eksempel: if (minString == "start"). Dette fungerer for Arduino's String-objekt-type, men vær opmærksom på, at det i traditionel C-programmering (med char arrays) kræver specifikke funktioner som strcmp().

Hvad returnerer en sammenligningsoperator?

Den returnerer altid en boolesk værdi. Enten true (som internt har værdien 1) eller false (som internt har værdien 0). Dette resultat kan gemmes i en bool-variabel eller bruges direkte i en betinget sætning.

At mestre sammenligningsoperatorer er et afgørende skridt på vejen mod at blive en dygtig Arduino-programmør. De giver din kode evnen til at reagere på en foranderlig verden, analysere data fra sensorer og udføre handlinger baseret på specifikke betingelser. Ved at forstå og anvende disse seks simple, men kraftfulde, operatorer åbner du døren til at skabe langt mere komplekse og funktionelle projekter.

Hvis du vil læse andre artikler, der ligner Guide til Sammenligningsoperatorer i Arduino, kan du besøge kategorien Sundhed.

Go up