Growing stuff and doing things

dstroy0

Zeroes and Ones
My whole reasoning for going with MC is being challenged. I don't think these non-essential aminos are bad for plant development, quite the contrary, the science shows they are better with regard to nutrient efficacy. My issue is the waste and waste product.

Lets say someone uses this in their garden, which they collect compost from on an annual basis. I see a real potential for an over accumulation of chelating agents. Similarly for those that dump it down the drain only this becomes an issue for the municipality. The essential aminos at least have a chance of being used by the plant, this is my speculation, however the non-essential aminos simply remain as they were they don't to my knowledge easily break down. This is where toxic nutrient salts could/would (did for me in quasi rols) have long term adverse effects.

I could be wrong but why else are they bailing on essential aminos? Again (remenber v2)? Why do I need iron availble at such alkaline pH? I shouldn't be running that high anyway.

I am glad I bought 6lbs of the previous all essential amino version (at least to my knowlege, no other chelating agents are listed).

One other thing, my one part dosen't have chitin oligonucleotide in it either, but its impossible to confirm without version control lol.

If you wanted to use this formulation in semi-acidic or anything that requires semi-alkaline pH right now, it would be difficult if whatever cultivar you are growing required iron. That cuts out a huge portion of potential market, so I understand why they are changing the iron chelating agent. I'm planning on adding the kelp and chitosan back in once I verify the base ratio and concentration are acceptable, and still supplement silica, but treating it more like jacks 321, so no more calmag. It's a different formula, I don't know their reasoning behind it, I've been too busy trying to make it work.
 

DopeDaniel

Taste The Spectrum
IPM Forum Moderator
If you wanted to use this formulation in semi-acidic or anything that requires semi-alkaline pH right now, it would be difficult if whatever cultivar you are growing required iron. That cuts out a huge portion of potential market, so I understand why they are changing the iron chelating agent. I'm planning on adding the kelp and chitosan back in once I verify the base ratio and concentration are acceptable, and still supplement silica, but treating it more like jacks 321, so no more calmag. It's a different formula, I don't know their reasoning behind it, I've been too busy trying to make it work.
Then they are deviating from their original target market of cannabis growers it seems. Which is fine but they also originally touted the toxicity of those chelelating agents.

I wish others would at least try using pickle crisp and epsom to qwell the dependance on cal mag. Cheaper, easier, better imo. We used them in a nursery I worked at, we didn't have bottles of cal mag sitting around.
 

dstroy0

Zeroes and Ones
Then they are deviating from their original target market of cannabis growers it seems. Which is fine but they also originally touted the toxicity of those chelelating agents.

I wish others would at least try using pickle crisp and epsom to qwell the dependance on cal mag. Cheaper, easier, better imo. We used them in a nursery I worked at, we didn't have bottles of cal mag sitting around.

If the 2 part megacrop works like jacks 321 it doesn't need the extra calcium. Unless they're lying on their label and ppm calculator. Using their calculator 3.6:2.4 A:B is 3:1:4 NPK, any concentration 1.5:1 a+b maintains 3:1:4 NPK which is a good ratio NPK for cannabis. I really just have a basic understanding here, and don't really know WHY 3:1:4 is good, just that it works for lots of crops including cannabis.

I've been on MC a+b and epsom 321 for a week now at 65% full strength, which is about 1.3EC.
 

DopeDaniel

Taste The Spectrum
IPM Forum Moderator
If the 2 part megacrop works like jacks 321 it doesn't need the extra calcium.
I haven't looked at jacks but am vaguely aware the have differing feeds for different phases. I don't know what they are but if you follow the megacrop rates/ratios I think you will avoid having to ad Ca, but I also think you will overfeed N. Does Jacks have Ca in part A? (You know I'm gonna take a look) if not then I would venture to say they are overfeeding N as well.
 

dstroy0

Zeroes and Ones
I haven't looked at jacks but am vaguely aware the have differing feeds for different phases. I don't know what they are but if you follow the megacrop rates/ratios I think you will avoid having to ad Ca, but I also think you will overfeed N. Does Jacks have Ca in part A? (You know I'm gonna take a look) if not then I would venture to say they are overfeeding N as well.

No, the calcium is part B. The megacrop 2 part part a is pretty much the same as jacks part a. I fed 321 at 65% strength last week, this week I’m bumping it up to 80%, which is close to 6g/gal a+b+epsom, should be around 1.6EC. That’s around what I was feeding with the 1 part.
 

dstroy0

Zeroes and Ones
For you. Thats the ro optimizer somewhere in there I take it?

All of that stuff could fit on a couple of PCB with some interconnects. This format makes sense for DIY or hardware development with uncertain or openended requirements, really convenient to be able to add/remove circuits and edit programming. This way makes it fast to be able to change everything hardware to software.
 

dstroy0

Zeroes and Ones
This shit has sucked sooo much.

2-part MC 1.5:1
3B246354-0FDA-4C93-BD84-7FD6B2B0706C.jpeg

Then I switched to jacks, it got here on 2/4/21 and I mixed up 321@80% strength same day and started using it.

same plant 14 days later
F1CC944A-B7A9-4C39-9DAB-08549DF97953.jpeg

I didn’t think it was going to live, the roots were beige l/brown. I have a clone ready to go. Maybe I won’t need it.
 

dstroy0

Zeroes and Ones
New input functions:


C++:
#include <Arduino.h>
#include "SerialCommands.h"

//input buffer size
char serial_command_buffer_[32];

//add the stream, buffer, size of the buffer, normal string termination, delimiter
SerialCommands serial_commands_(&Serial, serial_command_buffer_, sizeof(serial_command_buffer_), "\r\n", " ");

//This is the default handler, and gets called when no other command matches.
void cmd_unrecognized(SerialCommands* sender, const char* cmd)
{
  sender->GetSerial()->print(F("Unrecognized command ["));
  sender->GetSerial()->print(cmd);
  sender->GetSerial()->println(F("]"));
}

float* process_float_command(SerialCommands* sender, float *arr)
{
  char* arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("FIRST ARG NULL"));
  }
  else
  {
    arr[0] = atof(arg);
  }

  arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("SECOND ARG NULL"));
  }
  else
  {
    arr[1] = atof(arg);
  }

  arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("THIRD ARG NULL"));
  }
  else
  {
    arr[2] = atof(arg);
  }

  arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("FOURTH ARG NULL"));
  }
  else
  {
    arr[3] = atof(arg);
  }
  return arr;
}

unsigned long* process_unsigned_long_command(SerialCommands* sender, unsigned long *arr)
{
  char* arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("FIRST ARG NULL"));
  }
  else
  {
    arr[0] = strtoul(arg, NULL, 10);
  }

  arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("SECOND ARG NULL"));
  }
  else
  {
    arr[1] = strtoul(arg, NULL, 10);
  }

  arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("THIRD ARG NULL"));
  }
  else
  {
    arr[2] = strtoul(arg, NULL, 10);
  }

  arg = sender->Next();
  if (arg == NULL)
  {
    sender->GetSerial()->println(F("FOURTH ARG NULL"));
  }
  else
  {
    arr[3] = strtoul(arg, NULL, 10);
  }
  return arr;
}

void test_float(SerialCommands* sender)
{
  float arr[4] = {0, 0, 0, 0};
  float* arr_ptr = process_float_command(sender, arr);

  Serial.println();
  Serial.println(arr[0]);
  Serial.println(arr[1]);
  Serial.println(arr[2]);
  Serial.println(arr[3]);
}

void test_ul(SerialCommands* sender)
{
  unsigned long ul_arr[4] = {0, 0, 0, 0};
  unsigned long* ul_arr_ptr = process_unsigned_long_command(sender, ul_arr);

  Serial.println();
  Serial.println(ul_arr[0]);
  Serial.println(ul_arr[1]);
  Serial.println(ul_arr[2]);
  Serial.println(ul_arr[3]);
}

SerialCommand cmd_test_float_("test_float", test_float);
SerialCommand cmd_test_ul_("test_ul", test_ul);

void setup()
{
  Serial.begin(500000);

  serial_commands_.SetDefaultHandler(cmd_unrecognized);
  serial_commands_.AddCommand(&cmd_test_float_);
  serial_commands_.AddCommand(&cmd_test_ul_);
 
  Serial.println(F("Ready!"));
}

void loop()
{
  serial_commands_.ReadSerial();
}
 

Attachments

  • serialcommands_lib.zip
    2.3 KB · Views: 2
Top Bottom