... Arduino en de programmeertaal Mardec
... ik wil gewoon een servo gebruiken voor het openen en dichtdoen van loodsdeuren middels een push button aangestuurd door een Arduino Uno.
#include <Servo.h>Servo servo; // servo object, wordt op pin 3 gezetint swtch; // switch pin, word op pin 4 gezetint led; // onboard LED, zit altijd op pin 13int hoek; // de hoek voor de servo, 0 of 180 gradenint test1; // eerst test van de switch pin toestandint test2; // tweede test van de switch pin toestandint test3; // derde test van de switch pin toestandint dender; // aantal msec delay voor contact denderint pressed; // bijhouden of de schakelaar al is ingedrukt//NB: Servo aansluiten op massa (bruin), +5V (rood) en pin 3 (oranje).// Switch aansluiten op massa en pin 4, met een pull-up van 1K of 10K naar +5V.void setup() { servo.attach(3); swtch = 4; led = 13; hoek = 0; test1 = 1; test2 = 1; test3 = 1; dender = 10; // XX msec pressed = 0; pinMode(swtch, INPUT); pinMode(led, OUTPUT); digitalWrite(led, 0); servo.write(hoek);}void loop() { delay(10); // wacht XX msec om contact dender te vermijden test1 = digitalRead(swtch); // lees de switch toestand delay(10); // wacht XX msec om contact dender te vermijden test2 = digitalRead(swtch); // lees de switch toestand delay(10); // wacht XX msec om contact dender te vermijden test3 = digitalRead(swtch); // lees de switch toestand if ((test1 == 0) && (test2 == 0) && (test3 == 0)) { // switch is echt ingedrukt? if (pressed == 0) { // indien niet eerder ingdrukt pressed = 1; // nu dus wel if (hoek == 0) { // verander de hoek hoek = 180; // was 0, wordt 180 } else { hoek = 0; // was 180, wordt 0 } } } else { // switch is losgelaten pressed = 0; // switch niet langer ingedrukt. } servo.write(hoek); // updat de servo hoek if (hoek == 180) { digitalWrite(led, 1); // LED aan } else { digitalWrite(led, 0); // LED uit } }
... begrijp ik het goed dat ... je de pushbutton wel vast moet houden totdat de servo zijn eindpunt bereikt heeft?