Space Engineers

Space Engineers

View Stats:
Jack Schitt Jun 15, 2021 @ 1:19pm
Change text on LCD with a sensor?
I'd like to use an LCD panel to display what floor the elevator is on for a sensor. I've been looking but haven't found a way to do this. Does anyone know of something that already exists that will do this?

Automatic LCD's 2 doesn't do it.
Fancy Display 2 doesn't seem like it will do it either.

Would it not be fairly simple, and maybe not even require a script, to create images of the floor numbers and have sensors turn the display off and on or change the image or text?
Or would it require a script to do that?
< >
Showing 1-15 of 19 comments
Katitoff Jun 15, 2021 @ 1:25pm 
On a single display? I don't think that's possible. I'd use small grid LCDs with separate sensors linked to each LCD to turn it on/off with goal text.
Jack Schitt Jun 15, 2021 @ 1:36pm 
I don't mind if I'd have to use multiple displays but it's large grid and I'd rather not use a giant rotor to mount small grid displays inside the elevator to do this. It already has separate sensors that turn on lights (outside on each floor in the waiting area for the elevator) that indicate what floor it's on that are turned off by a timer block - can be turned off by the same sensor, I know. That's just the way I chose to do it.

I also don't mind changing the design or how I have the lights setup to do this. I'd like this feature to work off the same sensors the lights are run by but also understand it may be better to use different sensors. It would be nice to have this feature on the elevator.

Is there some kind of way to place small grid LCD's on large grid blocks....maybe? That would make this goal fairly easy. I've seen some mods that allow small grid blocks on large grids without using a rotor. I'm not confident they work well.
Last edited by Jack Schitt; Jun 15, 2021 @ 1:40pm
frag2k4 Jun 15, 2021 @ 1:42pm 
Just did some testing and the only way to large to small is rotors or hinges or super gridding which requires modding the files.

You would likely need scripting to do this.

However, if you can add textures into the game, create some with just words like
Floor 1
Floor 2 ect

as these can be added to a list of images that appear in sequence on the LCD, you can use this and if you know how long it takes to get to each floor set up some sensors to activate the LCD, it would give the impression of what you want though you would need 2 LCD 1 for going up and one for going down.

Not sure if you could keep it going between floors with this (maybe using on/off?)
Jack Schitt Jun 15, 2021 @ 2:49pm 
Originally posted by frag2k4:
Just did some testing and the only way to large to small is rotors or hinges or super gridding which requires modding the files.

You would likely need scripting to do this.

However, if you can add textures into the game, create some with just words like
Floor 1
Floor 2 ect

as these can be added to a list of images that appear in sequence on the LCD, you can use this and if you know how long it takes to get to each floor set up some sensors to activate the LCD, it would give the impression of what you want though you would need 2 LCD 1 for going up and one for going down.

Not sure if you could keep it going between floors with this (maybe using on/off?)

Yeah I already had creating and using images in mind. Hinges might not be as ugly as rotors. I'm pretty sure it can be done with sensors turning them on and off. As I mentioned I already have sensors set up that turn floor indicator lights on that are turned off by a timer block so I think all I might have to do is change the sensor and timer block actions a little to include turning the screens on/off.

Thanks! I'll give this a try with images and hinges before looking further in to finding a script for it. As you might know from other threads I'm not capable of writing scripts. dco.pe is great that it exists but I'm just completely baffled when it comes to scripting C#.
Mojo Jun 15, 2021 @ 3:01pm 
Easy Automation V2.0 looks like you can get LCD to display floor level, I could be wrong but the sample video looks like it is updating floor level.

Link to script:
https://steamcommunity.com/sharedfiles/filedetails/?id=694296356
Last edited by Mojo; Jun 15, 2021 @ 3:02pm
ShadedMJ Jun 15, 2021 @ 3:54pm 
I of course, write scripts. I have a potential non-script solution though.

If you can put small-blocks there, could you have one block with "1" and another with "2" and so on, like
1 2
3 4
and light/activate each digit as needed?

Otherwise where you activate floor lights have it activate a programmable block with this script with a "1" or "2" and so on. Change the LCDName string to match the name of the LCD panel. You might have to fuss with the LCD panel for centering and making the text large enough to see clearly.
string LCDName="Text Panel"; //==================================== public void Main(string argument) { IMyTextPanel TP=GridTerminalSystem.GetBlockWithName(LCDName) as IMyTextPanel; TP.ContentType=VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE; TP.WriteText(argument); }
Last edited by ShadedMJ; Jun 15, 2021 @ 3:54pm
Mojo Jun 15, 2021 @ 4:21pm 
I forgot to link the video about the elevator floor number change for the scipt I mentioned. It is on the V1 page but here is the video link:

https://youtu.be/-sS1ZoJ9EfU
Jack Schitt Jun 15, 2021 @ 5:11pm 
Originally posted by ShadedMJ:
I of course, write scripts. I have a potential non-script solution though.

If you can put small-blocks there, could you have one block with "1" and another with "2" and so on, like
1 2
3 4
and light/activate each digit as needed?

Otherwise where you activate floor lights have it activate a programmable block with this script with a "1" or "2" and so on. Change the LCDName string to match the name of the LCD panel. You might have to fuss with the LCD panel for centering and making the text large enough to see clearly.
string LCDName="Text Panel"; //==================================== public void Main(string argument) { IMyTextPanel TP=GridTerminalSystem.GetBlockWithName(LCDName) as IMyTextPanel; TP.ContentType=VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE; TP.WriteText(argument); }

Yes, that's how I was giving a go at creating a script having the sensor trigger a timer block that turns the lights on/off and runs the programmable block.

How would I get it to display on multiple LCD's? I'd like to have one screen outside each door and one in the elevator. I tried naming them all the same name but it only works on one of the screens doing that.

Would this be correct?
string LCDTag="[Fscreen]"; //============================== public void Main(string argument) { List<IMyTextPanel> BlockList=new List<IMyTextPanel>(); GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(BlockList,FindTag); if (BlockList.Count==0) { Echo("Cannot find LCD with tag "+LCDTag); return; } }


It's a large grid so small blocks aren't possible without a rotor and I don't want to put a big ugly rotor where I want the screens.

Last edited by Jack Schitt; Jun 15, 2021 @ 5:13pm
Jack Schitt Jun 15, 2021 @ 5:31pm 
Nope! Gawd I suck at this scripting thing. LOL!!!
Tryin'!!!

So how do I get it to display on multiple screens easily?
ShadedMJ Jun 15, 2021 @ 5:38pm 
Honestly, you were close there. You were using FindTag which is undefined, but enough players used it so I'll include it. I'll have something shortly based off what you wrote.
<short time later>
This is merge of what I wrote and what you wrote. It compiles okay, and it works according to the programmable block in my head.
string LCDTag="[Fscreen]";
//==============================
public void Main(string FloorNumberText) {
// Get a list of LCD panels into BlockList
List<IMyTextPanel> BlockList=new List<IMyTextPanel>();
GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(BlockList,FindTag);
// If none found, that's a problem.
if (BlockList.Count==0) {
Echo("Cannot find LCD with tag "+LCDTag);
return; }
// Go through each LCD panel, set it to text and write the floor number
foreach (IMyTextPanel TP in BlockList) {
TP.ContentType=VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE;
TP.WriteText(FloorNumberText); } }
bool FindTag(IMyTerminalBlock TermBlock) {
return TermBlock.CustomName.EndsWith(LCDTag); }
Last edited by ShadedMJ; Jun 15, 2021 @ 5:45pm
Jack Schitt Jun 15, 2021 @ 5:47pm 
Thanks! Really appreciate the help, Shaded!!!!
I almost had it another way too. I think I'm finally getting this scripting stuff, thanks to you.
Jack Schitt Jun 15, 2021 @ 5:51pm 
Awesome!!!
string LCDTag="[Fscreen]"; //============================== public void Main(string FloorNumberText) { // Get a list of LCD panels into BlockList List<IMyTextPanel> BlockList=new List<IMyTextPanel>(); GridTerminalSystem.GetBlocksOfType<IMyTextPanel>(BlockList,FindTag); // If none found, that's a problem. if (BlockList.Count==0) { Echo("Cannot find LCD with tag "+LCDTag); return; } // Go through each LCD panel, set it to text and write the floor number foreach (IMyTextPanel TP in BlockList) { TP.ContentType=VRage.Game.GUI.TextPanel.ContentType.TEXT_AND_IMAGE; TP.WriteText(FloorNumberText); } } bool FindTag(IMyTerminalBlock TermBlock) { return TermBlock.CustomName.EndsWith(LCDTag); }

Works perfectly. Thanks!!!!!!!!!!!!!!

Now to get on with getting the elevator actually working. I'm still testing the script dragon helped me with. It works reversing the rotor to make the car go the right way. I think I have the 2nd and 3rd floor figured out with timer blocks. I have about 40 timer blocks which I think is a bit much but it's not lagging or anything, yet.
Last edited by Jack Schitt; Jun 15, 2021 @ 5:54pm
ShadedMJ Jun 15, 2021 @ 7:52pm 
As a side note: I entered the conversation saying "I of course, write scripts". You, Jack Schitt, now this of course. Most/All of the others in this thread know also. I include it so new players have some context of why I say what I do. If some of you (like frag2k kindof tried) want to specifically get my attention on something I'm missing, you can write on my profile page which I think is global write.
Last edited by ShadedMJ; Jun 15, 2021 @ 7:55pm
Jack Schitt Jun 15, 2021 @ 10:12pm 
I was hoping you'd chime in with your thoughts at least. When I asked about this my plan was to somehow use images, sensors, and timer blocks if it could be done that way. I think it can done that way with several LCD blocks. This way is less blocks and a nicer way of doing it.

I looked. Yes, your profile is public. Anyone can post a comment on your profile.
dragonsphotoworks Jun 15, 2021 @ 11:04pm 
Fancy display v2 "make sure its v2 not the first version" should of been able to do this. Ill have to take look at it later. But exhousted now :-(
< >
Showing 1-15 of 19 comments
Per page: 1530 50

Date Posted: Jun 15, 2021 @ 1:19pm
Posts: 19