Hi Eric, tried removing line 226 and 324, got error so had to un-comment lines 233 and 239 as well, 3 screen shots the switches still do nothing but show up when moved except switch 1 that is staying at 1, also 2 of the servo,s are twitching 1 and 5 when enters a new loop, output on pins 1 thro 10 still same as before ...
I have added 3 screen shots..
Regards John
One thing just noticed after 3rd loop the -1 at end of each Line 1A to 4A has changed to a 5 on each one..
Hi John, this is exactly why the boolean "availability" functions can make things manageable, by checking conflicts.
In my tests i used push buttons to "flip the switches" so a conflict, which would generate a call to raiseAlarm, could be used to beep a buzzer, light a red alarm LED, etc. Since the push button is only a temporary contact, there is no discrepancy between the switches and the layout.
But for 2-position physical switches, in case of conflict you end up with the switch being flipped and the turn point + polarities not been changed, so the physical switch is not "synchronized" any more with the layout. I'm not sure how to best manage that situation...
I'm available this afternoon, so if you want we can on-line chat on a discord server I own. If so, just create a free account on https://discordapp.com/ and then tell me you're ready, I'll post an invite for you.
Eric
Hi Eric I thank you for the offer of chat on discord but not sure as computer in one room and layout in kitchen also could it be a long haul... dont want to upset your Sunday ..
John
On the link can you actually link to any program...as could link with Laptop I am using on Layout ...
Ouch ! I think you have a mess now...
You must not remove the #ifdef CROSSING_NOHARD lines like that if you want the code to maintain consistency. What you can most easily do is to comment (with a //) the line with #define CROSSING_NOHARD, so that your digitalRead and digitalWrite are actually run.
Eric
Well, as you wish but I think direct discussion would make things much easier, and also enable me to share my screen to show you the code as I edit/test it
Eric
Let me try to explain the #define / #ifdef / #else / #endif ...
These are all what we call "pre-processor macros", which means that they are used by the compiler when reading the source code of a sketch to transform the source code before actually compiling it.
We can use them to remove/include whole blocks of code by just defining / un-defining a symbol : that enables a single sketch to be adapted to different uses.
Let's say we have a sketch like this :
No #define at all
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
#ifdef BLUE
Serial.println("I'm blue");
#endif
#ifdef RED
Serial.println("I'm red");
#endif
#ifdef YELLOW
Serial.println("I'm yellow");
#else
Serial.println("I'm DEFINITELY NOT yellow");
#endif
}
void loop() {
// put your main code here, to run repeatedly:
}
We have NOT defined any symbol with #define, so the actual code that is compiled is :
void setup() {
Serial.begin(9600);
Serial.println("I'm DEFINITELY NOT yellow");
}
void loop() {
}
...which you can verify by running the sketch above and checking the serial monitor output :
I'm DEFINITELY NOT yellow
BLUE
Now let's add a #define statement at the top for symbol BLUE :
#define BLUE
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
#ifdef BLUE
Serial.println("I'm blue");
#endif
#ifdef RED
Serial.println("I'm red");
#endif
#ifdef YELLOW
Serial.println("I'm yellow");
#else
Serial.println("I'm DEFINITELY NOT yellow");
#endif
}
void loop() {
// put your main code here, to run repeatedly:
}
We now have this actual resulting code :
void setup() {
Serial.begin(9600);
Serial.println("I'm blue");
Serial.println("I'm DEFINITELY NOT yellow");
}
void loop() {
}
and the output is now :
I'm blue
I'm DEFINITELY NOT yellow
BLUE + YELLOW
Let's now define BLUE and YELLOW, but not RED, like this :
#define BLUE
#define YELLOW
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
#ifdef BLUE
Serial.println("I'm blue");
#endif
#ifdef RED
Serial.println("I'm red");
#endif
#ifdef YELLOW
Serial.println("I'm yellow");
#else
Serial.println("I'm DEFINITELY NOT yellow");
#endif
}
void loop() {
// put your main code here, to run repeatedly:
}
The resulting code is now :
void setup() {
Serial.begin(9600);
Serial.println("I'm blue");
Serial.println("I'm yellow");
}
void loop() {
}
and the output is :
I'm blue
I'm yellow
NOT YELLOW
Now let's say we don't want to be yellow : we can comment out the #define for that symbol to go back to "pure blue" like this :
#define BLUE
//#define YELLOW
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
#ifdef BLUE
Serial.println("I'm blue");
#endif
#ifdef RED
Serial.println("I'm red");
#endif
#ifdef YELLOW
Serial.println("I'm yellow");
#else
Serial.println("I'm DEFINITELY NOT yellow");
#endif
}
void loop() {
// put your main code here, to run repeatedly:
}
The resulting code is back to the "pure blue" again :
void setup() {
Serial.begin(9600);
Serial.println("I'm blue");
Serial.println("I'm DEFINITELY NOT yellow");
}
void loop() {
}
with the corresponding output :
I'm blue
I'm DEFINITELY NOT yellow
So to "switch on/off" our yellow color aternative (single line) codes, we just have to #define or un-define the YELLOW symbol
Eric
Did you see my other post about linking to my Laptop..
Sorry I just saw that.
Discord can be used, as long as you have an Internet connection :
- simply with a recent enough web browser
- or by installing the windows app
- it is also available on mobiles
Of course if we want to have a voice chat you need a microphone+speaker, but if you don't we can still text-chat in an efficient manner, and share screens/windows
Eric
Thanks for your help yet again, I will leave today as I was on my own but family and grandson just got back from Trafford Centre so will be mayhem in this house I will look through your last message and see what You suggested..
John
Ok @john40131
FYI here is a rather old (2016) but still mostly accurate presentation of what can be done with Discord (the screen/app sharing feature did not exist yet in 2016 so there is no mention of it in the video).
Eric
Hi Eric, I think I under stand the #ifdefine , but the #ifdefine CROSSING_NOHARD in the void setup and what does this do.
Also thinking of live chat and probably next Saturday at about 2.00pm UK time would be fine but will confrm as depends what family are doing so I have peave,.
Also was think of maybe SKYPE is that a better option I aleardy have an account but Camera doesnt seem to function properly, so can get cheap one off ebay, could have a live Chat and Video, I'll leave that up to you.
I can set up my main computer with chat and Video and use Laptop connected to Layout next to me, which has Arduino IDE and sketch so you can see exactly what is happening .
Regards John
PS.. another thought has I have 2 screens on main computer can run USB to Layout from this maybe easier to change any code..
Hi Eric, I think I under stand the #ifdefine , but the #ifdefine CROSSING_NOHARD in the void setup and what does this do
Huh, that seems to mandate more explanations i guess
next Saturday at about 2.00pm UK time would be fine
As of now, next saturday afternoon is ok for me, but i think we'll both want to confirm this before.
Also was think of maybe SKYPE is that a better option
(cough! cough!) I banished Skype some time after Micro$oft bought them and began spamming me, after multiple years of using Skype with my chinese clients. M$ was the end of Skype for me, sorry...
This is actually the main reason I started using Discord, and I really have no regret, especially as I am now able to taylor chat servers and manage authorization settings exactly as I wish of that platform - mostly for free, though I am also a "subscriber" for several "premium" features.
Camera doesnt seem to function properly
No worry, we don't need to see each other's ugly face ? !
What is more important is being capable of efficient bi-directional text-chat without spamming the forums (even better, if possible, combined text with voice-chat), and I can show you my screen as we go over pieces of code for the "theoretical" aspect. If you are also able to show me your own Arduino IDE+SerialMonitor as you run the sketches, then it's all the best : we could alternately share our screen or app for the other to watch. So if you have a machine with mic+speakers, or a headset, it would be perfect, but if the machine linked to the Arduino is Internet-capable, then it would be able to run Discord, even without any sound.
Also, exchanging files (sketches, pictures, etc...) on this type of chat platform is as simple as drag-and-drop.
Reminder : if you want to ensure i am aware of a post here, include @zeferby somewhere in it, so I get an email from the forums about it.
Eric
Thats Great Eric, I will confirm if okay on Friday for Saturday.
Also I have watched the video on Discord but you may have to tell me how I can let you see serial monitor, is it possible to access my computer so can edit, I know some companies have the abillity to open programs, I have used Sage accounts and Quickbooks and if you have problems the company can access your system to trouble shoot...
Reagards John
let's first have an online chat+share saturday, and then we'll see if we have a real need for remote control.
One-on-One Screen/window sharing is done within a voice chat in Discord :
(there is also a way to share a screen/window to all users connected to a voice channel)
Eric