/* Aams.h v1 - Library voor Arduino Analoge Modelbaan Sturing Met dank aan Timo Engelgeer (Septillion) voor de eerste opzet*//* Blaa, dit doet iets :p */#include "Arduino.h"#include "Aams.h"Aams::Aams(byte pinBlok, byte pinSein, byte pinLdr, byte pinLdrS, int ldrDrempel){ this->pinBlok = pinBlok; this->pinSein = pinSein; this->pinLdr = pinLdr; this->pinLdrS = pinLdrS; this->drempel = drempel; pinMode(this->pinBlok, OUTPUT); pinMode(this->pinSein, OUTPUT); pinMode(this->pinLdr, INPUT); pinMode(this->pinLdrS, INPUT); digitalWrite(this->pinBlok, HIGH); digitalWrite(this->pinSein, HIGH); }Sturing::Sturing(byte pinPWMA, byte pinAin1, byte pinAin2, byte pinPWMB, byte pinBin1, byte pinBin2){ this-> pinPWMA = pinPWMA; // Arduino pin 5~ this-> pinAin1 = pinAin1; // Arduino pin 6 this-> pinAin2 = pinAin2; // Arduino pin 7 this-> pinPWMB = pinPWMB; // Arduino pin 9~ this-> pinBin1 = pinBin1; // Arduino pin 10 this-> pinBin2 = pinBin2; // Arduino pin 11 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 Sturing::Sturing(byte Trein, byte Snelheid, byte Richting){ // Zet de parameters van de functie sturing(trein, snelheid, richting) // Trein 1: linksom en Trein 2 output B op het motorshield // Snelheid: 0 is stop, 255 is maximale snelheid // Richting: 0 Rechtsom, 1 Linksom bool inPin1 = LOW; bool inPin2 = HIGH; if(Richting == 1){ inPin1 = HIGH; inPin2 = LOW; } else{ if(Richting == 0) inPin1 = LOW; inPin2 = HIGH; } if(Trein == 1){ digitalWrite(AIN1, inPin1); digitalWrite(AIN2, inPin2); analogWrite(PWMA, snelheid); } else{ digitalWrite(BIN1, inPin1); digitalWrite(BIN2, inPin2); analogWrite(PWMB, snelheid); }}//maak blok bezetvoid Aams::bezet(){ this->bezetState = true;}//maak blok vrijvoid Aams::vrij(){ this->bezetState = false;}//zet sein op rood of groen.void Aams::sein(byte state){ digitalWrite(pinSein, state);}//Check of LDR een trein ziet en pas bezet aan. return bezet.bool Aams::checkBezet(){ if(analogRead(this->pinLdr) < this->drempel){ this->bezetState = true; } else{ this->bezetState = false; } return this->bezetState;}//return is blok is bezetbool Aams::isBezet(){ return this->bezetState;}void Aams::checkStop(){ if(analogRead(this->pinLdrS) < this->drempel && digitalRead(this->pinSein) == AAM_ROOD){ digitalWrite(this->pinBlok, LOW); }}void Aams::update(){ this->checkBezet(); this->checkStop();}
/* Aams.h v1 - Library to iets Created by Timo Engelgeer (Septillion), February 2, 2015*/#ifndef Aams_h#define Aams_h#include "Arduino.h"#define AAM_GROEN 1#define AAM_ROOD 0class Aams { public: Aams(byte pinBlok, byte pinSein, byte pinLdr, byte pinLdrS, int ldrDrempel); void bezet(); void vrij(); void sein(byte state); bool checkBezet(); bool isBezet(); void checkStop(); void update(); protected: bool bezetState; byte pinBlok; byte pinSein; byte pinLdr; byte pinLdrS; int drempel; };class Sturing { public: Sturing(byte pinPWMA, byte pinAin1, byte pinAin2, byte pinPWMB, byte pinBin1, byte pinBin2); void Trein(byte); void Richting(byte); void Snelheid(byte); protected: bool inPin1; bool inPin2; byte pinPWMA; byte pinAin1; byte pinAin2; byte pinPWMB; byte pinBin1; byte pinBin2;};#endif
else{ if(Richting == 0) inPin1 = LOW; inPin2 = HIGH; }
Het zou wel handig zijn om de foutmeldingen erbij te vermelden.Los daarvan, hierCode: [Selecteer] else{ if(Richting == 0) inPin1 = LOW; inPin2 = HIGH; }heb je een paar accolades vergeten. Of beter, de accolade achter de else zou achter de if moeten.- Peter
/* Aams.h v1 - Library to iets Created by Timo Engelgeer (Septillion), February 2, 2015*/#ifndef Aams_h#define Aams_h#include "Arduino.h"#define AAM_GROEN 1#define AAM_ROOD 0class Aams { public: Aams(byte pinBlok, byte pinSein, byte pinLdr, byte pinLdrS, int ldrDrempel); void bezet(); void vrij(); void sein(byte state); bool checkBezet(); bool isBezet(); void checkStop(); void update(); protected: bool bezetState; byte pinBlok; byte pinSein; byte pinLdr; byte pinLdrS; int drempel; };class Sturing { public: Sturing(byte pinPwmA, byte pinAin1, byte pinAin2, byte pinPwmB, byte pinBin1, byte pinBin2); void Start(int Trein, int Snelheid, int Richting); int Value = 0; protected: bool inPin1; bool inPin2; byte pinPwmA; byte pinAin1; byte pinAin2; byte pinPwmB; byte pinBin1; byte pinBin2;};#endif
/* Aams.h v1 - Library voor Arduino Analoge Modelbaan Sturing Met dank aan Timo Engelgeer (Septillion) voor de eerste opzet*//* Blaa, dit doet iets :p */#include "Arduino.h"#include "Aams.h"Aams::Aams(byte pinBlok, byte pinSein, byte pinLdr, byte pinLdrS, int ldrDrempel){ this->pinBlok = pinBlok; this->pinSein = pinSein; this->pinLdr = pinLdr; this->pinLdrS = pinLdrS; this->drempel = drempel; pinMode(this->pinBlok, OUTPUT); pinMode(this->pinSein, OUTPUT); pinMode(this->pinLdr, INPUT); pinMode(this->pinLdrS, INPUT); digitalWrite(this->pinBlok, HIGH); digitalWrite(this->pinSein, HIGH); }Sturing::Sturing(byte pinPWMA, byte pinAin1, byte pinAin2, byte pinPWMB, byte pinBin1, byte pinBin2){ this-> pinPwmA = pinPwmA; // Arduino pin 5~ this-> pinAin1 = pinAin1; // Arduino pin 6 this-> pinAin2 = pinAin2; // Arduino pin 7 this-> pinPwmB = pinPwmB; // Arduino pin 9~ this-> pinBin1 = pinBin1; // Arduino pin 10 this-> pinBin2 = pinBin2; // Arduino pin 11 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 Sturing::Start(int Trein, int Snelheid, int Richting){ // Zet de parameters van de functie sturing(trein, snelheid, richting) // Trein 1: linksom en Trein 2 output B op het motorshield // Snelheid: 0 is stop, 255 is maximale snelheid // Richting: 0 Rechtsom, 1 Linksom Value = Snelheid; bool inPin1 = LOW; bool inPin2 = HIGH; if(Richting == 1){ inPin1 = HIGH; inPin2 = LOW; } else{ if(Richting == 0) inPin1 = LOW; inPin2 = HIGH; } if(Trein == 1){ digitalWrite(Ain1, inPin1); digitalWrite(Ain2, inPin2); analogWrite(PwmA, Snelheid); } else{ digitalWrite(Bin1, inPin1); digitalWrite(Bin2, inPin2); analogWrite(PwmB, Snelheid); }}//maak blok bezetvoid Aams::bezet(){ this->bezetState = true;}//maak blok vrijvoid Aams::vrij(){ this->bezetState = false;}//zet sein op rood of groen.void Aams::sein(byte state){ digitalWrite(pinSein, state);}//Check of LDR een trein ziet en pas bezet aan. return bezet.bool Aams::checkBezet(){ if(analogRead(this->pinLdr) < this->drempel){ this->bezetState = true; } else{ this->bezetState = false; } return this->bezetState;}//return is blok is bezetbool Aams::isBezet(){ return this->bezetState;}void Aams::checkStop(){ if(analogRead(this->pinLdrS) < this->drempel && digitalRead(this->pinSein) == AAM_ROOD){ digitalWrite(this->pinBlok, LOW); }}void Aams::update(){ this->checkBezet(); this->checkStop();}
#include <Start.h>Start sturing (2, 3, 4, 5, 6, 7, 10, 11);void setup(){ Serial.begin(9600); Serial.println("Arduino Analoge Modelbaan sturing, test programma");}void loop(){ // Wissel( nummer, stand) stand = 0 = Rechtdoor 1 = Afbuigend sturing.wissel(1,0); delay(100); sturing.wissel(1,1); int value; for(int value = 0; value <= 250; value++){ // Trein (uitgang, richting, snelheid) uitgang 0 = poort A, 1 = poort B, richting 0 = linksom, 1 = rechtsom sturing.trein(1,1,value); delay(20); Serial.print(value); } for(int value = 250; value >= 0; value--){ // Trein (uitgang, richting, snelheid) uitgang 0 = poort A, 1 = poort B, richting 0 = linksom, 1 = rechtsom sturing.trein(1,0,value); delay(20); }}
/* Start.h v1 - Library voor Arduino Analoge Modelbaan Sturing of kortweg AAMS. Writen by Paul Smits*//* Blaa, dit doet iets :p */#ifndef Start_h#define Start_h#include "Arduino.h"class Start { public: Start(byte pinPwmA, byte pinAin1, byte pinAin2, byte pinPwmB, byte pinBin1, byte pinBin2, byte pinWisR, byte pinWisA); void trein(byte uitgang, byte richting, int snelheid); void wissel(int nummer, byte stand); int value; private: bool inPin1; bool inPin2; byte pinPwmA; byte pinAin1; byte pinAin2; byte pinPwmB; byte pinBin1; byte pinBin2; byte pinWisR; byte pinWisA; int inPinwisL; int inPinwisH; };#endif
/* Start.cpp v1 - Library voor Arduino Analoge Modelbaan Sturing of kortweg AAMS. Writen by Paul Smits*//* Blaa, dit doet iets :p */#include "Start.h"Start::Start(byte pinPwmA, byte pinAin1, byte pinAin2, byte pinPwmB, byte pinBin1, byte pinBin2, byte pinWisR, byte pinWisA){ 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 this-> pinWisR = pinWisR; // Arduino pin 11 this-> pinWisA = pinWisA; // Arduino pin 12 pinMode(this-> pinPwmA, OUTPUT); pinMode(this-> pinAin1, OUTPUT); pinMode(this-> pinAin2, OUTPUT); pinMode(this-> pinPwmB, OUTPUT); pinMode(this-> pinBin1, OUTPUT); pinMode(this-> pinBin2, OUTPUT); pinMode(this-> pinWisR, OUTPUT); pinMode(this-> pinWisA, OUTPUT);}void Start::trein(byte uitgang, byte richting, int snelheid){ bool inPin1 = LOW; bool inPin2 = HIGH; if(richting == 0){ inPin1 = HIGH; inPin2 = LOW; } else if(richting == 1){ inPin1 = LOW; inPin2 = HIGH;} if(uitgang == 0){ digitalWrite(this-> pinAin1, inPin1); digitalWrite(this-> pinAin2, inPin2); analogWrite(this-> pinPwmA, snelheid); } else if(uitgang == 1){ digitalWrite(this-> pinBin1, inPin1); digitalWrite(this-> pinBin2, inPin2); analogWrite(this-> pinPwmB, snelheid); } }void Start::wissel(int nummer, byte stand){ if(nummer ==0){ nummer = 1;} else if (nummer == 1){ nummer =0;} if(stand == 0){ digitalWrite(this-> pinWisR,inPinwisH); delay(5000); digitalWrite(this-> pinWisR,inPinwisL); } if(stand ==1){ digitalWrite(this-> pinWisA,inPinwisH); delay(500); digitalWrite(this-> pinWisA,inPinwisL); }}