/* Inschakelen van een timer, o.a. te gebruiken met animaties. Zie De Modelbouwer 2020-1 Gerrit Volgers/ Toin van Daal 18-12-2019 */ // Vaste parameters: (pin toewijzing) #define Pin_Start 14 //Drukknop inschakelen aan pin A0 #define Pin_LED 16 // LED Melding inschakelen drukknop aan A2, // Veranderlijke parameters: int Pin_Start_status = HIGH ; //Uitgangspositie drukknop unsigned long previousMillis = 0; // status timer aan het begin const long interval = 2000; // timer aktiveringstijd: branden LED void setup() { // :Vaste instellingen pinMode(Pin_Start,INPUT_PULLUP); // Drukknop aan + met pull up pinMode(Pin_LED,OUTPUT); // Pin LED output Serial.begin(9600); // Schrijft proces op seriele monitor } void loop() { unsigned long currentMillis = millis(); // start de tijd // Lees de drukknop input pin: Pin_Start_status = digitalRead(Pin_Start); Serial.print("CurrentMillis: "); // print "currentmillis" Serial.println (currentMillis/1000); // print de tijd in milli seconden onder elkaar if (Pin_Start_status == LOW) { // Als de drukknop ingedrukt is start de timer previousMillis = millis(); digitalWrite(Pin_LED, HIGH ); //LED brand } if( (previousMillis + interval) < millis() ){ //Toets of de intervaltijd bereikt is digitalWrite(Pin_LED, LOW ); //LED uit Serial.print("LED uit "); } else Serial.print("LED aan "); } /* Inschakelen van een timer met een drukknop, aansturing van een LED en een servo, te gebruiken voor bv animaties. Zie De Modelbouwer 2020-1 Gerrit Volgers/ Jan Lagerberg 22-1-2019 */ // Vaste parameters: #include #define PIN_START A0 // Drukknop inschakelen aan analoge pin A0 #define PIN_LED A2 // LED Melding inschakelen drukknop aan analoge pin A2 #define PIN_SERVO 9 // Servo aan digitale pin 9 #define MINPOS 0 // Minimum hoek van de servo in graden #define MAXPOS 180 // Maximum hoek van de servo in graden #define INCRPOS 1 // Hoek increment van de servo in graden #define SERVOINTERVAL 15 // Tijd interval tussen twee hoek increments van de servo in ms #define INTERVAL 5000 // Tijd interval tussen up en down beweging van de servo in ms // Veranderlijke parameters: int Pin_Start_status = HIGH ; //Uitgangspositie drukknop unsigned long previousMillis = 0; // status timer aan het begin unsigned long servoMillis = 0; int pos = 0; Servo myservo; void setup() { // :Vaste instellingen pinMode (PIN_START,INPUT_PULLUP); // Drukknop aan + met interne pull up pinMode (PIN_LED,OUTPUT); // Pin LED output myservo.attach (9); myservo.write (MINPOS); Serial.begin (9600); // Schrijft proces op seriǮle monitor } void loop() { unsigned long currentMillis = millis(); // start de tijd // Lees de drukknop input pin: Pin_Start_status = digitalRead(PIN_START); // Serial.println (currentMillis/1000); // print de tijd in milli seconden onder elkaar if (Pin_Start_status == LOW) { // Als de drukknop ingedrukt is start de timer servoMillis = millis(); //starts timer previousMillis = millis(); digitalWrite (PIN_LED, HIGH); //LED brand // Serial.print ("LED aan, servo draait heen "); for (pos = MINPOS; pos <= MAXPOS; pos += 0) { //opens the arm 60 degrees // Serial.print ("Hoek up: "); // Serial.println (pos); if (millis() - servoMillis > SERVOINTERVAL) { //created to delay 15 milliseconds before next pulse servoMillis = millis(); //starts timer myservo.write (pos); //moves 5 degrees every 15 milliseconds pos += INCRPOS; } } if ((previousMillis + INTERVAL) < millis() ) { //Toets of de intervaltijd bereikt is servoMillis = millis(); //starts timer previousMillis = millis(); digitalWrite (PIN_LED, LOW ); //LED uit // Serial.print ("LED uit, servo draait terug "); for (pos = MAXPOS; pos >= MINPOS; pos += 0) { //opens the arm 60 degrees // Serial.print ("Hoek down: "); // Serial.println (pos); if (millis() - servoMillis > SERVOINTERVAL) { //created to delay 15 milliseconds before next pulse servoMillis = millis(); //starts timer myservo.write (pos); //moves 5 degrees every 15 milliseconds pos -= INCRPOS; } } } } }