Click here to Skip to main content
15,917,859 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Ok I have some code and I cant figure it out.
Everything works but Method_6 and 7
No mater what I do I cant get it working or working right.
Something has to be reversed or something
New to programing so it was a miracle that I got this far.
any help would be nice
thanks

C#
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace hydroponic
{
    public class Program
    {
        public const int SecondMs = 1000;
        public const int MinuteMs = 60 * SecondMs;
        public const int HourMs = 60 * MinuteMs;
        public const int DayMs = 24 * HourMs;
        public const int WeekMs = 7 * DayMs;

        static bool method_state_6, method_state_7;


        static InputPort phcontroller = new InputPort(Pins.GPIO_PIN_D0, false, Port.ResistorMode.Disabled);  //Relay input
        static InputPort nutcontroller = new InputPort(Pins.GPIO_PIN_D1, false, Port.ResistorMode.Disabled);  //Relay input
        static OutputPort ph = new OutputPort(Pins.GPIO_PIN_D2, true);  //optical Relay output (reversed on/off as they are optical)
        static OutputPort b = new OutputPort(Pins.GPIO_PIN_D3, true);  //optical Relay output (reversed on/off as they are optical)
        static OutputPort a = new OutputPort(Pins.GPIO_PIN_D4, true);  //optical Relay output (reversed on/off as they are optical)
        static OutputPort drain = new OutputPort(Pins.GPIO_PIN_D5, true);  //optical Relay output (reversed on/off as they are optical)
        static OutputPort solenoid = new OutputPort(Pins.GPIO_PIN_D6, true);  //optical Relay output (reversed on/off as they are optical)
        static OutputPort controller = new OutputPort(Pins.GPIO_PIN_D7, true);  //optical Relay output (reversed on/off as they are optical)
        static OutputPort led = new OutputPort(Pins.GPIO_PIN_D11, true);  //optical Relay output (reversed on/off as they are optical)


        
        public static void Main()
        {

            try
            {
                Thread led_proc = new Thread(new ThreadStart(turn_led));
                led_proc.Start();
                while (true)
                {

                    method_state_6 = method_state_7 = true;
                    
                       
                    Method_1();
                    call2_5();
                    call6_8();
                    Method_10();
                    Thread.Sleep(10000);

                }
            }
            catch
            {
                //Something has gone wrong; reset to a safe condition
            }
        }


        static void turn_led() //turn led light on for 12 hrs and off for 12hrs in loop.
        {
            while (true)
            {
                led.Write(false);
                Thread.Sleep(HourMs * 12);
                led.Write(true);
                Thread.Sleep(HourMs * 12);
            }
        }

        public static void call2_5()
        {
            Thread t2 = new Thread(new ThreadStart(Method_2));
            t2.Start();
            Thread t3 = new Thread(new ThreadStart(Method_3));
            t3.Start();
            Thread t4 = new Thread(new ThreadStart(Method_4));
            t4.Start();
            Thread t5 = new Thread(new ThreadStart(Method_5));
            t5.Start();
            #region Wait for finishing 2-5 methods
            t2.Join();
            t3.Join();
            t4.Join();
            t5.Join();
            #endregion
        }
        static void call6_8()
        {
            Thread t6 = new Thread(new ThreadStart(Method_6));
            t6.Start();
            Thread t7 = new Thread(new ThreadStart(Method_7));
            t7.Start();
            Thread t9 = new Thread(new ThreadStart(Method_9));
            t9.Start();

            // wait for Method_9 finishing
            t9.Join();
            method_state_6 = method_state_7 = false;
        }
        public static void Method_1() //Drains the System (water nutrient mix)
        {
            drain.Write(false);
            Thread.Sleep(16 * MinuteMs);
            drain.Write(true);
        }
        public static void Method_2() //Fills the System with Water
        {
            solenoid.Write(false);
            Thread.Sleep(16 * MinuteMs);
            solenoid.Write(true);
        }
        public static void Method_3() //Doses the system with nutrient a
        {
            a.Write(false);
            Thread.Sleep(182 * SecondMs);
            a.Write(true);
        }
        public static void Method_4() //Doses the system with nutrient b
        {
            b.Write(false);
            Thread.Sleep(100 * SecondMs);
            b.Write(true);
        }
        public static void Method_5() //Doses the system with PH down
        {
            ph.Write(false);
            Thread.Sleep(5 * SecondMs);
            ph.Write(true);
        }
        public static void Method_6() // reads the PH controller realy contactcts if opend/closed when closed it does this
        {
            while (phcontroller.Read() == true && method_state_6 == true)
            {
                ph.Write(false);
                Thread.Sleep(1 * SecondMs);
                ph.Write(true);
                Thread.Sleep(5 * MinuteMs);
            }
        }
        public static void Method_7() // reads the nutrient controller realy contactcts if opend/closed when closed it does this
        {
            while (nutcontroller.Read() == true && method_state_7 == true)
            {
                a.Write(false);
                Thread.Sleep(5454);
                a.Write(true);
                b.Write(false);
                Thread.Sleep(3000);
                b.Write(true);
                Thread.Sleep(5 * MinuteMs);
            }
        }
        public static void Method_9() //Tops up the system with a little water each day, then in 14 days moves on to Method_10
        {
            controller.Write(false); //turns on the two controllers PH and Nutrients
            for (int i = 0; i < 14; i++)
            {
                Thread.Sleep(1 * DayMs);
                solenoid.Write(false);
                Thread.Sleep(20 * SecondMs);
                solenoid.Write(true);

            }
            controller.Write(true);
        }
        public static void Method_10() // Flushes the system, drains then fill water.
        {
            drain.Write(false);
            Thread.Sleep(16 * MinuteMs);
            drain.Write(true);
            solenoid.Write(false);
            Thread.Sleep(16 * MinuteMs);
            solenoid.Write(true);
            Thread.Sleep(1 * MinuteMs);
          
        }
                         //Whole thing loops
    }
}
Posted
Comments
Sergey Alexandrovich Kryukov 25-Nov-12 19:34pm    
Isn't it obvious that we don't have enough information to help you?
--SA
Dominic Abraham 25-Nov-12 23:24pm    
Can you describe your real issue ? Are you getting any exceptions ?

1 solution

Well I have tried
while (phcontroller.Read() == true && method_state_6 == true)
This seems to work but in reverse but stops after a bit
then I tried to add the !
while (!phcontroller.Read() == true && method_state_6 == true)
This seems to work only one time.

It almost seems like its a hardware issue, but Ive checked that many times.
no error messages only a program not working right.
method_6 and 7 Wont loop at best tries once or twice.
Its a software issue I have run a test program
that works fine


C#
public static void Main()
        {
            bool buttonState = false;
            while (true)
            {
                buttonState = phcontroller.Read();
                ph.Write(buttonState);
                a.Write(buttonState);
                b.Write(buttonState);
               
        }
    }
    }
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900