Stap 7: Het toevoegen van een servo
Voortbouwend op het vorige voorbeeld nu voegen we een servo dat gekoppeld is aan een tweede drukknop. Deze maakt gebruik van de Arduino Servo-bibliotheek aan de servo positie bepalen. Door het veranderen van kunt de waarde tussen haakjes na de servo1.write code u bepalen hoe ver de servo beweegt.
Kopieer en plak deze schets in uw venster Arduino-
/*
* Voorbeeld 3
* Dit voorbeeld zal twee LED's knipperen en vervolgens een andere LED vervagen wanneer button1 is ingedrukt en losgelaten
* en een servo zal verplaatsen nadat button2 is ingedrukt en losgelaten
* Honus 2010
* Aangepast ten opzichte van Adafruit afwisselend switch code, http://www.adafruit.com
*/
#include "Servo.h" / / de servo-bibliotheek
Servo servo1; Hiermee maakt u een exemplaar van het servo-object om te bepalen van een servo
int servoPin1 = 9; controle pin voor servo
int ledPin1 = 8; controle pin voor LED
int ledPin2 = 7;
int ledPin3 = 11;
int buttonPin1 = 14; knop is verbonden met pin 14 (analoge 0 pin)
int buttonPin2 = 15; knop is aangesloten op pin 15 (analoge 1 pin)
int val1; variabele voor het lezen van de Pinstatus
int val2;
int buttonState1; variabele te houden van de laatste status van de knop
int buttonState2;
VOID Setup {}
servo1.attach(servoPin1); de servo op pin 9 hecht aan de servo-object
pinMode (buttonPin1, INPUT); de pincode van de knop instellen als input
pinMode (buttonPin2, INPUT);
buttonState1 = digitalRead(buttonPin1); Lees de begintoestand
buttonState2 = digitalRead(buttonPin2); Lees de begintoestand
pinMode (ledPin1, OUTPUT); Hiermee stelt u de LED-pin als uitvoer
pinMode (ledPin2, OUTPUT);
}
void loop {}
servo1.write(20);
val1 = digitalRead(buttonPin1); Lees input waarde en sla het in de val
Als (val1! = buttonState1) {/ / de status van de knop veranderd!
Als (val1 == LOW) {/ / controleren als de knop wordt ingedrukt
Serial.println ("button gewoon ingedrukt");
digitalWrite (ledPin1, hoge); Hiermee stelt u de LED pin HIGH (verandert het op)
delay(500); wachten van 500 milliseconden
digitalWrite (ledPin2, hoge);
delay(500);
digitalWrite (ledPin1, laag); Hiermee stelt u de LED pin LOW (uitgeschakeld)
delay(500);
digitalWrite (ledPin2, laag);
delay(500);
fade-in van min tot max in stappen van 5 punten:
voor (int fadeValue = 0; fadeValue < = 255; fadeValue += 5) {}
Hiermee stelt u de waarde (bereik van 0 tot 255):
analogWrite (ledPin3, fadeValue);
wacht 30 milliseconden het dimmen effect zien
delay(40);
}
fade-out van max naar de min in stappen van 5 punten:
voor (int fadeValue = 255; fadeValue > = 0; fadeValue-=5) {}
Hiermee stelt u de waarde (bereik van 0 tot 255):
analogWrite (ledPin3, fadeValue);
wacht 30 milliseconden het dimmen effect zien
delay(40);
}
} else {/ / de is - niet - geklikt...
digitalWrite (ledPin1, laag); uitschakelen van de LED
digitalWrite (ledPin2, laag);
}
}
val2 = digitalRead(buttonPin2); Lees input waarde en sla het in val 2
Als (val2! = buttonState2) {/ / de status van de knop veranderd!
Als (val2 == LOW) {/ / controleren als de knop wordt ingedrukt
servo1.write(160); de servo tot 160 graden roteren
delay(3000); wacht 3 seconden
servo1.write(20); tot 20 graden draaien
} else {/ / de is - niet - geklikt...
servo1.write(20);
}
}
buttonState1 = val1; de nieuwe staat in onze variabele opslaan
buttonState2 = val2;
}