Debugen vond ik toch even te veel van het goede, de library files zijn goed met compileren van het programma kreeg ik geen foutmeldingen, het bleek dat ik twee integers in de verkeerde file stonden.
Na lang zoeken en veel testen heb ik mijn eigen library goed werkend gekregen, het doet precies wat ik in gedachte had.Ik kan nu de sturing gaan testen en uitbreiden naar meer functies in de library.
Ik heb nu twee functies, sturing.trein en sturing.wissel er moet nog een functie sturing.blok, sturing.keerlus, sturing.stroomdetectie, sturing.rgb (dag nacht simulatie) en sturing.verlichting., bijkomen.
schrijfBit( 16, 1 );schrijfBit( 17, 1 );schrijfBit( 18, 1 );schrijfBit( 19, 1 );
void zetWissel( int nummer ){ schrijfBit( 15 + nummer, 1 );}
int i;for( i = 1; i <= 4; i++ ) zetWissel( i );
/* AamsTrein.h v1 - Library voor Arduino Analoge Modelbaan Sturing of kortweg AAMS. Writen by Paul Smits*//* Deze library stuurt de motordriver L298 voor de Arduino Analoge Modelbaan sturing. */#ifndef AamsTrein_h#define AamsTrein_h#include "Arduino.h"class AamsTrein { public: AamsTrein(byte pinPwmA, byte pinAin1, byte pinAin2, byte pinPwmB, byte pinBin1, byte pinBin2); int value; void start(byte train, byte direction); void stop(byte train); void vertrek(byte train, byte direction); void remmen(byte train, byte direction); void noodstop(byte train, int speed); void richting(byte direction); void snelheid(byte speed); void on(byte train); private: bool inPin1; bool inPin2; byte pinPwmA; byte pinAin1; byte pinAin2; byte pinPwmB; byte pinBin1; byte pinBin2; };#endif
/* AamsTrein.cpp v1 - Library voor Arduino Analoge Modelbaan Sturing of kortweg AAMS. Writen by Paul Smits/* Deze library is, voor het sturen van de verschillende treinen. */#include "AamsTrein.h"AamsTrein::AamsTrein(byte pinPwmA, byte pinAin1, byte pinAin2, byte pinPwmB, byte pinBin1, byte pinBin2){ this-> pinPwmA = pinPwmA; // Arduino pin 3~ this-> pinAin1 = pinAin1; // Arduino pin 2 this-> pinAin2 = pinAin2; // Arduino pin 4 this-> pinPwmB = pinPwmB; // Arduino pin 6~ this-> pinBin1 = pinBin1; // Arduino pin 5 this-> pinBin2 = pinBin2; // Arduino pin 7 pinMode(this-> pinPwmA, OUTPUT); pinMode(this-> pinAin1, OUTPUT); pinMode(this-> pinAin2, OUTPUT); pinMode(this-> pinPwmB, OUTPUT); pinMode(this-> pinBin1, OUTPUT); pinMode(this-> pinBin2, OUTPUT); }void AamsTrein::start(byte train, byte direction){ bool inPin1 = LOW; bool inPin2 = HIGH; if(train == 0) { digitalWrite(this-> pinAin1, inPin1); digitalWrite(this-> pinAin2, inPin2); analogWrite(this-> pinPwmA, 120); } if(train == 1) { digitalWrite(this-> pinBin1, inPin1); digitalWrite(this-> pinBin2, inPin2); analogWrite(this-> pinPwmB, 120); } if(direction == 0) { inPin1 = HIGH; inPin2 = LOW; } if(direction == 1) { inPin1 = LOW; inPin2 = HIGH; }}void AamsTrein::stop(byte train){ if(train == 0) { analogWrite(this-> pinPwmA, 0); } if(train == 1) { analogWrite(this-> pinPwmB, 0); }}void AamsTrein::vertrek(byte train, byte direction){ bool inPin1 = LOW; bool inPin2 = HIGH; int value; if(direction == 0) { inPin1 = HIGH; inPin2 = LOW; } if(direction == 1) { inPin1 = LOW; inPin2 = HIGH; } if(train == 0) { digitalWrite(this-> pinAin1, inPin1); digitalWrite(this-> pinAin2, inPin2); for(value = 60 ; value <= 250; value++) { analogWrite(this-> pinPwmA, value); } } if(train == 1) { digitalWrite(this-> pinBin1, inPin1); digitalWrite(this-> pinBin2, inPin2); for(value = 60 ; value <= 250; value++) { analogWrite(this-> pinPwmB, value); } }}void AamsTrein::remmen(byte train, byte direction){ bool inPin1 = LOW; bool inPin2 = HIGH; int value; if(direction == 0) { inPin1 = HIGH; inPin2 = LOW; } if(direction == 1) { inPin1 = LOW; inPin2 = HIGH; } if(train == 0) { digitalWrite(this-> pinAin1, inPin1); digitalWrite(this-> pinAin2, inPin2); for(value = 250 ; value >= 50; value--) { analogWrite(this-> pinPwmA, value); } } if(train == 1) { digitalWrite(this-> pinBin1, inPin1); digitalWrite(this-> pinBin2, inPin2); for(value = 250 ; value >= 50; value--) { analogWrite(this-> pinPwmB, value); } }}void AamsTrein::snelheid(byte speed) { //Er word nog aan functie snelheid gewerkt! (deze functie is bedoeld voor Handbediening) }void AamsTrein::richting(byte direction) { // Er word nog aan functie richting gewerkt! (deze functie is bedoeld voor Handbediening) }void AamsTrein::on(byte train) { // Er word nog aan functie on gewerkt! (deze functie is bedoeld voor Handbediening) }void AamsTrein::noodstop(byte train, int speed) { // Er word nog aan functie noodstop gewerkt! (deze functie is bedoeld voor Handbediening) }