Creanies home of my best hobby stuff. |
HOME Pi B+ OS Gambas Trains Electronics Hardware Software About |
LATEST NEWS
I have Raspberry Pi B+ USB memory stick and SD card images available for download or I can supply the images mounted on 8 GB memory stick and a small SD card.
The image has lots of goodies, Gambas3 with lots of example apps, VncServer, Nautilus and lots more.
Both of these are subject to a modest handling charge and are also subject to post and packing cost.
Email for downloads, prices, shipping details or more information.
mike.crean@mail.com
HO Automatic Block Signals Schematic. HOabs.pdf Searchlight Signal ![]() Arduino Nano ![]() IR Sensor ![]() Arduino Code #include <Wire.h> String Rx = "", SendIt = ""; int i = 0, tx1Flag = 0, tx2Flag = 0, tx3Flag = 0, tx3Flags = 0, man = 0; String dels = ""; String Ts1, Ts2, Ts3 = "", Ts4, Ts5, Ts6, Ts7, Ts8; unsigned long timenow = 0; unsigned long timeold = 0; void setup(){ Serial.begin(9600); Serial.setTimeout(50); delay(20); Serial.println("HO Signal + IR Detection control. V1.0"); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(A0, INPUT_PULLUP); pinMode(A1, INPUT_PULLUP); pinMode(A2, INPUT_PULLUP); pinMode(A3, INPUT_PULLUP); pinMode(A4, INPUT_PULLUP); pinMode(A5, INPUT_PULLUP); pinMode(A6, INPUT_PULLUP); pinMode(A7, INPUT_PULLUP); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, LOW); digitalWrite(8, HIGH); digitalWrite(9, HIGH); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); } void loop() { timenow = millis(); if(timenow > timeold + 13000 && tx3Flag == 1){ if(Ts3 == "1" && tx3Flag == 1){ digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, LOW); Serial.println("st1ghs"); delay(50); Serial.println("st2ghs"); tx3Flag = 0; tx3Flags = 0; } } if (Serial.available()==0) { } Rx = Serial.readString(); if(Rx.indexOf("\r") > -1){ if(Rx.length() < 3){ Serial.println("<X>"); } } // Top Signals Auto or Manual // if(Rx.indexOf("stmm") > -1){ man = 1; Serial.println("stms"); } if(Rx.indexOf("stam") > -1){ man = 0; Serial.println("stas"); } // SignalTop 1 // if(man == 1){ if(Rx.indexOf("st1rhm") > -1){ digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH); Serial.println("st1rhs"); } if(Rx.indexOf("st1rlm") > -1){ digitalWrite(2, HIGH); Serial.println("st1rls"); tx1Flag = 0; } if(Rx.indexOf("st1yhm") > -1){ digitalWrite(3, LOW); digitalWrite(2, HIGH); digitalWrite(4, HIGH); Serial.println("st1yhs"); } if(Rx.indexOf("st1ylm") > -1){ digitalWrite(3, HIGH); Serial.println("st1yls"); tx1Flag = 0; } if(Rx.indexOf("st1ghm") > -1){ digitalWrite(4, LOW); digitalWrite(2, HIGH); digitalWrite(3, HIGH); Serial.println("st1ghs"); } if(Rx.indexOf("st1glm") > -1){ digitalWrite(4, HIGH); Serial.println("st1gls"); tx1Flag = 0; } // SignalTop 2 // if(Rx.indexOf("st2rhm") > -1){ digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); Serial.println("st2rhs"); } if(Rx.indexOf("st2rlm") > -1){ digitalWrite(5, HIGH); Serial.println("st2rls"); tx1Flag = 0; } if(Rx.indexOf("st2yhm") > -1){ digitalWrite(6, LOW); digitalWrite(5, HIGH); digitalWrite(7, HIGH); Serial.println("st2yhs"); } if(Rx.indexOf("st2ylm") > -1){ digitalWrite(6, HIGH); Serial.println("st2yls"); tx1Flag = 0; } if(Rx.indexOf("st2ghm") > -1){ digitalWrite(7, LOW); digitalWrite(5, HIGH); digitalWrite(6, HIGH); Serial.println("st2ghs"); } if(Rx.indexOf("st2glm") > -1){ digitalWrite(7, HIGH); Serial.println("st2gls"); tx1Flag = 0; } } Rx = ""; //// Read the track switches (HIGH OFF, LOW ON) //// Ts1 = String(digitalRead(A0)); Ts2 = String(digitalRead(A1)); Ts3 = String(digitalRead(A2)); Ts4 = String(digitalRead(A3)); Ts5 = String(digitalRead(A4)); Ts6 = String(digitalRead(A5)); Ts7 = String(digitalRead(A6)); Ts8 = String(digitalRead(A7)); if(man == 0){ if(Ts1 == "0" && tx1Flag == 0){ tx1Flag = 1; digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, LOW); digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, HIGH); SendIt = Ts1 + "," + Ts2 + "," + Ts3 + "," + Ts4 + "," + Ts5 + "," + Ts6 + "," + Ts7 + "," + Ts8; Serial.println(SendIt); SendIt = ""; delay(50); Serial.println("st1rhs") ; delay(50); Serial.println("st2ghs") ; delay(1000); } if(Ts2 == "0" && tx2Flag == 0){ tx2Flag = 1; digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); SendIt = Ts1 + "," + Ts2 + "," + Ts3 + "," + Ts4 + "," + Ts5 + "," + Ts6 + "," + Ts7 + "," + Ts8; Serial.println(SendIt); SendIt = ""; delay(50); Serial.println("st1yhs") ; delay(50); Serial.println("st2rhs") ; delay(1000); } if(Ts3 == "0" && tx3Flag == 0){ tx3Flag = 1; digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(7, HIGH); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, LOW); SendIt = Ts1 + "," + Ts2 + "," + Ts3 + "," + Ts4 + "," + Ts5 + "," + Ts6 + "," + Ts7 + "," + Ts8; Serial.println(SendIt); SendIt = ""; delay(50); Serial.println("st1ghs") ; delay(50); Serial.println("st2yhs") ; delay(1000); } if(Ts3 == "1" && tx3Flag == 1 && tx3Flags == 0){ tx1Flag = 0; tx2Flag = 0; tx3Flags = 1; timeold = millis(); //SendIt = tx3Flag + " " + String(timeold) + " " + String(timenow); //Serial.println(SendIt); //SendIt = ""; } } } Copyright (c) mgc Perth Western Australia 2015 |