022 Exempel kasta tärning
Mål
Tryck på knappen för att kasta tärning.
Tärningskastet animeras. Sedan visas resultatet.
Kod
Använda funktioner
pinMode() //bara för OUTPUT, default är INPUT digitalRead() delay() random() digitalWrite()
Definiera egna funktioner
Kode för tre funktioner visas nedan.
Funktion som bara gör
Nyckelordet void
berättar att funktionen gör något utan att lämna ett svar tillbaka.
Funktionen heter animateRoll
.
void animateRoll()
{
int numberOfPreDisplay = random(7, 12);
for (int i = 0; i < numberOfPreDisplay; i = i + 1)
{
int numberOfDots = rollDie();
showDots(numberOfDots);
delay(150);
hideAllDots();
delay(150);
}
}
Funktion som lämnar tillbaka ett svar
Nyckelordet int
berättar att funktionen lämnar ett svar. Svaret har datatypen int
som är beteckningen för ett heltal.
Funktionen heter rollDie()
.
Nyckelordet return
följs av det svara som funktionen lämnar tillbaka.
int rollDie()
{
//1, 2, eller 3
return random(1, 4);
}
Anrop av en funktion som måste få extra information
Nyckelordet void
betyder att funktionen inte lämnar tillbaka ett svar utan bara gör något.
Funktionen heter showDots()
.
Nyckelordet int
berättar att variabeln numberOfDots
kan innehålla ett heltal. Vid anropet
showDots(2);
får variabeln numberOfDots
värdet 2.
void showDots(int numberOfDots)
{
if (numberOfDots == 1)
{
digitalWrite(dotPins[0], HIGH);
digitalWrite(dotPins[1], LOW);
digitalWrite(dotPins[2], LOW);
}
else if (numberOfDots == 2)
{
digitalWrite(dotPins[0], LOW);
digitalWrite(dotPins[1], HIGH);
digitalWrite(dotPins[2], HIGH);
}
else if (numberOfDots == 3)
{
digitalWrite(dotPins[0], HIGH);
digitalWrite(dotPins[1], HIGH);
digitalWrite(dotPins[2], HIGH);
}
}
Anrop av egna funktioner
Anrop av egna funktioner och redan färdiga funktioner sker på samma vis.
void loop() { if (digitalRead(13) == HIGH) { // Anrop av animateRoll() animateRoll();
// Anrop av rollDie(), som ger ett heltal tillbaka.
// Svaret sparas i variabeln numberOfDots.
int numberOfDots = rollDie();
// Anrop av showDots() som tar extra information.
// showDots(2); // för att visa 2 prickar på tärningen
showDots(numberOfDots);
delay(3000);
}
}