Licht Sensor (Nicht im Workshop)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Licht Sensor (Nicht im Workshop)

      Hallo Community,

      ich habe grade kurz mal ein Lichtsensor geschrieben für den Programmierblock ...
      Der Einbau ist relativ einfach was ihr benötigt ist ...

      - Ein Programmierbaren block + Ein Zeitblock zu wiederholten ausführen ( Tipp 30 Sekunden reichen )
      - Eine Solar Anlage ( Ein panel reicht)
      - Ein Zeitblock mit den Namen "FREIER NAME (Sensor:SunIsDown)" .. wichtig die klammern mitschreiben
      - Ein Zeitblock mit den Namen "FREIER NAME (Sensor:SunIsUp)" .. wichtig die klammern mitschreiben

      ! Zu Info der FREIER NAME kann selber gewählt werden .. ich brauche nur die texte mit der Klammer :D

      Im Workshop ist es mir einfach immer zu viel arbeit das alles hoch zu laden .. Bilder u.s.w das wird also noch folgen vllt.

      Quellcode

      1. /**
      2. * Einfach zu Benutzen
      3. *
      4. * benötigt nur ein Solar Panel
      5. * Name: Timer block (Sensor:SunIsDown)
      6. * Name: Timer block (Sensor:SunIsUp)
      7. *
      8. */
      9. static string TIMER_SUN_IS_DOWN = "(Sensor:SunIsDown)";
      10. static string TIMER_SUN_IS_UP = "(Sensor:SunIsUp)";
      11. // Über 20.0 wird die Sonne als "Anwesend" erkannt
      12. static float IS_OVER = 20;
      13. // No change
      14. string nextTrigger = "";
      15. void Main(string argument)
      16. {
      17. if(SunSensor())
      18. { // Sun Up
      19. if(nextTrigger == "ToUp" || nextTrigger == ""){
      20. List<IMyTerminalBlock> triggerTimer = new List<IMyTerminalBlock>();
      21. GridTerminalSystem.SearchBlocksOfName(TIMER_SUN_IS_UP,triggerTimer);
      22. if(triggerTimer.Count >= 1)
      23. {
      24. for (int z = 0; z < triggerTimer.Count; z++)
      25. {
      26. if (triggerTimer[z] is IMyTimerBlock)
      27. {
      28. IMyTimerBlock Block = (IMyTimerBlock) triggerTimer[z];
      29. Block.GetActionWithName("TriggerNow").Apply(Block);
      30. Echo("Timer: "+ TIMER_SUN_IS_UP +" Down");
      31. }
      32. }
      33. }
      34. nextTrigger = "ToDown";
      35. }
      36. } else
      37. { // Sun Down
      38. if(nextTrigger == "ToDown" || nextTrigger == ""){
      39. List<IMyTerminalBlock> triggerTimer = new List<IMyTerminalBlock>();
      40. GridTerminalSystem.SearchBlocksOfName(TIMER_SUN_IS_DOWN,triggerTimer);
      41. if(triggerTimer.Count >= 1)
      42. {
      43. for (int z = 0; z < triggerTimer.Count; z++)
      44. {
      45. if (triggerTimer[z] is IMyTimerBlock)
      46. {
      47. IMyTimerBlock Block = (IMyTimerBlock) triggerTimer[z];
      48. Block.GetActionWithName("TriggerNow").Apply(Block);
      49. Echo("Timer: "+ TIMER_SUN_IS_DOWN +" Down");
      50. }
      51. }
      52. }
      53. nextTrigger = "ToUp";
      54. }
      55. }
      56. string PBinfoText = " Last run time "+ElapsedTime.TotalSeconds+" seconds ago \n";
      57. PBinfoText += "nextTrigger:"+nextTrigger+"\n";
      58. PBinfoText += "\n";
      59. Echo(PBinfoText.ToString());
      60. }
      61. bool SunSensor()
      62. {
      63. float power = 0f;
      64. List<IMyTerminalBlock> Solar = new List<IMyTerminalBlock>();
      65. GridTerminalSystem.GetBlocksOfType<IMySolarPanel>(Solar);
      66. for (int i = 0; i < Solar.Count; i++)
      67. {
      68. var block = Solar[i] as IMySolarPanel;
      69. string value = "";
      70. string type = "";
      71. System.Text.RegularExpressions.Regex matchthis = new System.Text.RegularExpressions.Regex(@"^.+\n.+\:\s?([0-9\.]+)\s(.*)\n.+$");
      72. System.Text.RegularExpressions.Match match = matchthis.Match(block.DetailedInfo);
      73. if (match.Success)
      74. {
      75. value = match.Groups[1].Value;
      76. type = match.Groups[2].Value;
      77. }
      78. float.TryParse(value, out power);
      79. if (type == "W")
      80. {
      81. power /= 1000;
      82. }
      83. if (type == "MW")
      84. {
      85. power *= 1000;
      86. }
      87. if(power > IS_OVER){
      88. Echo(power.ToString());
      89. return true;
      90. }
      91. }
      92. Echo(power.ToString());
      93. return false;
      94. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Xeracles ()