element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Vertical Farming
  • Challenges & Projects
  • Design Challenges
  • Vertical Farming
  • More
  • Cancel
Vertical Farming
Blog Project: ferris farm post 13
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shanesissons
  • Date Created: 7 Sep 2015 12:27 PM Date Created
  • Views 986 views
  • Likes 3 likes
  • Comments 12 comments
  • mechanical_farm
Related
Recommended

Project: ferris farm post 13

shanesissons
shanesissons
7 Sep 2015

Hand written code

 

here is my basic idea for the code

 

 

 

to be run every 5 minutes or so

 

If temp is above x

  activate fan 1 (relay)

if temp is below x

  deactivate fan 1

 

if humidity is above x

  activate fan 2

if humidity is below x

  deactivate fan 2

 

 

to be run in conjunction with the motor

 

when motor is in one of 4 positions (controlled by a switch being in the off position)

test soil moisture

  if moisture is below x

  activate water for 2 seconds

  deactivate water

  wait 5 minutes

repeat last 5 lines until moisture is above x

 

after 6 hours rotate planters 90 degrees to next planter controlled by switch

 

repeat steps again

 

x refers to variables not yet known for the plants optimal range will be a range of numbers not a single digit

  • Sign in to reply

Top Comments

  • shanesissons
    shanesissons over 10 years ago in reply to DAB +1
    rotation will be 1/4 turn every 6 hours if motorised if not it will be 1/3 turn every hours(so i can atleast get 8 hours sleep and the lighting will be on 24/7
  • shanesissons
    shanesissons over 10 years ago in reply to RWReynolds +1
    That would be great thanks rick
  • RWReynolds
    RWReynolds over 10 years ago in reply to shanesissons +1
    No problem. But you have to go like my latest blog post. LOL!
Parents
  • RWReynolds
    RWReynolds over 10 years ago

    Ok, let's see what we can figure out here...

     

    First I think the simplest thing to do here is to just put everything in the "big loop" inside your main() function.

    You can look at breaking things out into separate functions later if you want to clean the code up.

     

    You will need, at very least, a system tick timer. You can fins an example of this in the stk3200_blink example code. It would be great to use separate timers and interrupts if you can figure them out. But you can get what you want done with the system tick timer. It's just not as pretty.

     

    Here's how this can work...

     

    In the example code you will see this line:

    /* Setup SysTick Timer for 1 msec interrupts  */

      if (SysTick_Config(CMU_ClockFreqGet(cmuClock_CORE) / 1000)) while (1) ;

    This sets up the system tick timer based on based on the core clock divided by 1000. This will create a millisecond timer.

     

    This code is the interrupt handler for the tick timer. it will fire every 1ms and increment the global variable msTicks. Now if you capture that var at any given time and then continually compare it to a set value as you cycle through the big loop you can use it as a timer for your motor control, ensor reading, etc...

    I have put an exmple of this below the interrupt handler code.

     

    static volatile uint32_t msTicks; /* counts 1ms timeTicks */ This is just here so you can see how it's declared. Look at the blink example to                                                                                                                understand where it has to be declared.

    /**************************************************************************//**

    * @brief SysTick_Handler

    * Interrupt Service Routine for system tick counter

    *****************************************************************************/

    void SysTick_Handler(void)

    {

      msTicks++;      /* increment counter necessary in Delay()*/

    }

     

    /* My example

    main()

    {

        uint32_t motor_timer = 0; // The motor timer variable. You will need one of these for each timer function you want.

        uint32_t motor_timeout = 2160000; // This is 6 hours in ms

     

        motor_timer = msTicks; //Set the motor timer to the current system ticks count

        while(1)

        {

              if(msTicks - motor_timer >= motor_timeout) // When the system tick counter. msTick, has counted far enough past the captured value the                                                                                      // run_motor() function will be executed.

              {

                  run_motor();

              }

        }

    }


    OK, because I'm not sure exactly where you are as far as the C language and programming methods are concerned, take a look at this and let me know what you think. It's not the best or prettiest way to do it but until I understand your skill level with C I don't want to get too deep. So we'll do this one step at a time.


    Also, what sensors do you plan to use and how do you plan to interface all the peripherals? I know that's a big question but it will obviously determine what you need as far as software. What pins to use. What alternate functions to use, etc... You should be able to do everything from the expansion header on the EZR32WG. They have a nice set of GPIO and alternate function pins broke ou there.


    Cheers,

    Rick

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shanesissons
    shanesissons over 10 years ago in reply to RWReynolds

    Hi rick

    Thank you for the helop I will look into this deeply tomorrow its currently 3am here but it took a few minutes but I understand the code I think what I'm getting stuck with is how to write the code  and what pins to use

     

    As for what I am using

    I have a 8 channel relay for 2 fans and 1 water pump I believe I will only need to use 5 pins for this

    Andoer 5V Active Low 8 Channel Road Relay Module Control Board for Arduino PIC AVR MCU DSP ARM: Amazon.co.uk: DIY & Tool…

     

    The moisture sensor I will be using one of the boards and 4 sensors as the unit rotates it will connect to each on periodically when it is in the correct position I would also like to use this as the sensor to know when to start watering 

    SODIAL(R) Soil Hygrometer Humidity Detection Module Moisture Testing Sensor for Arduino PI: Amazon.co.uk: Garden & Outdo… 

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • shanesissons
    shanesissons over 10 years ago in reply to RWReynolds

    Hi rick

    Thank you for the helop I will look into this deeply tomorrow its currently 3am here but it took a few minutes but I understand the code I think what I'm getting stuck with is how to write the code  and what pins to use

     

    As for what I am using

    I have a 8 channel relay for 2 fans and 1 water pump I believe I will only need to use 5 pins for this

    Andoer 5V Active Low 8 Channel Road Relay Module Control Board for Arduino PIC AVR MCU DSP ARM: Amazon.co.uk: DIY & Tool…

     

    The moisture sensor I will be using one of the boards and 4 sensors as the unit rotates it will connect to each on periodically when it is in the correct position I would also like to use this as the sensor to know when to start watering 

    SODIAL(R) Soil Hygrometer Humidity Detection Module Moisture Testing Sensor for Arduino PI: Amazon.co.uk: Garden & Outdo… 

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
  • RWReynolds
    RWReynolds over 10 years ago in reply to shanesissons

    OK, give me a shout and we will work out the expansion header pins first.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shanesissons
    shanesissons over 10 years ago in reply to RWReynolds

    ok so i had a mess around with the blink code and managed to work out what it was doing and changed the delay of the leds (basic but its a start)

    im available most of the time how would you like to do this ?

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • RWReynolds
    RWReynolds over 10 years ago in reply to shanesissons

    Did you get my comment on one of your other posts? it had some code and explanation concerning how you might do simple timers.

     

    Getting the blink example running and understanding it is an important step. Meaning you can get the source code, modify it, burn it and run it. So now we just need to know what that code will be. image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shanesissons
    shanesissons over 10 years ago in reply to RWReynolds

    Hi sorry about not replying for a few days ive been quite ill but on the recovery track now

     

    i did look over the code and its becoming more understandable

     

    ive currently got all of the items i am connecting to the board and i am trying to work out what pins they will be connected to

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • RWReynolds
    RWReynolds over 10 years ago in reply to shanesissons

    Hope you're feeling better man.

     

    If you need any help understanding the alternate functions of the MCU pins, let me know. The GPIO pins are pretty simple, just high or low. Some of the alternate functions can be a little tricky to get set up. I'm using the USART, as a UART, and one analog comparator. Everything else is just GPIO for now. I was hoping to get it all done using the expansion header, but I don't think that's going to work because the I/O required just keeps expanding. Or I keep expanding it. lol...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube