Ik zal die zo even testen of die nog werkt
#define detector1 2#define detector2 3#define detector3 4#define detector4 5#define servoPin1 6#define servoPin2 7#define led1 10#define blinkLed1 12#define blinkLed2 13
#include "src/io.h"#include "railCrossing.h"#include "track.h"const int trackPins[][2] = // pin numbers for the track objects{ { detector1, detector2 } , // track 1 { detector3, detector4 } , // track 2 //{ detector5, detector6 } , // track 3 add as many as you want } ;Track track[] = // array of track objects, each track object has 2 sensors{ Track(), Track(), // Track(), // for every track, you need to add a line here} ;const uint8_t nTracks = sizeof(track) / sizeof(track[0] ) ; // should correctly get the amount of tracks.void setup(){ initIO(); Serial.begin(4800); Serial.println(F("AHOB STARTED")) ; for( int i = 0 ; i < nTracks ; i ++ ) { uint8_t pin1 = trackPins[i][0] ; // get pins from array and pass them to all track objects uint8_t pin2 = trackPins[i][1] ; track[i].begin( pin1, pin2 ) ; } railCrossingInit(); // initialize state machine for rail crossing}void loop(){ uint8_t occupiedTracks = 0 ; for( int i = 0 ; i < nTracks ; i ++ ) { if( track[i].readSensors() != 0 ) occupiedTracks = 1 ; // if atleast one track detects a train, set this to 1 } railCrossing( occupiedTracks ); // stuur ahob aan}}
#include <SimpleTimer.h>volatile int Spoor_leeg;volatile boolean SR_pin_4;volatile boolean SR_pin_5;SimpleTimer timer;void Simple_timer_1() { if (Spoor_leeg == 0) { //Knipperen geel 1000mSec digitalWrite(8,(!digitalRead(8))); } else { digitalWrite(8,LOW); }}void Simple_timer_3() { //Knipperen rood 250mSec if (Spoor_leeg != 0) { digitalWrite(9,(!digitalRead(9))); digitalWrite(10,(!digitalRead(9))); } else { digitalWrite(9,LOW); digitalWrite(10,LOW); }}void setup(){ Spoor_leeg = 0; SR_pin_4 = LOW; SR_pin_5 = LOW; pinMode(4, INPUT); pinMode(5, INPUT); pinMode(12, INPUT); Serial.begin(9600); pinMode(8, OUTPUT); timer.setInterval(1000L, Simple_timer_1); pinMode(9, OUTPUT); pinMode(10, OUTPUT); timer.setInterval(200L, Simple_timer_3);}void loop(){ pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(12, INPUT_PULLUP); //Inrij signaal if (!digitalRead(4) && SR_pin_4) { Spoor_leeg = Spoor_leeg + 1; SR_pin_4 = LOW; } else { if (digitalRead(4)) { SR_pin_4 = HIGH; } } if (!digitalRead(5) && SR_pin_5) { Spoor_leeg = Spoor_leeg - 1; SR_pin_5 = LOW; } else { if (digitalRead(5)) { SR_pin_5 = HIGH; } } //Reset tellerstand bij storing if (digitalRead(12) == LOW) { Spoor_leeg = 0; } Serial.println(Spoor_leeg); timer.run();}