Joe Cell Loading Program for the Arduino

I thought it could be a good idea to load the Joe Cell with a lower voltage than 9V and a good vibration, aka the base frequency of the Schumann Resonance, 7.8 Hz. The Arduino UNO, I got one left in my drawer, is easy to program for this purpose.

ArduinoJoeCellLoadingMeasurement

The program measures the voltage and if it is below 1 volt it starts a loading cycle of 2 minutes with the frequency of 7.8 Hz, else it waits 2 minutes.

You need 2 small resistors for 2 LEDs, one red and one green.

JoeCellLoadingAndMeasurement

Feel free to copy the code and to experiment with your own Joe Cell.

/**
* Joe Cell seeding control program for the Arduino
* Simulates the Schumann Resonance base frequency of 7.8 Hz
*
* For more information goto 
*/

int loadPin = 13;
int redPin = 12; // Let's add some light to the show
int greenPin = 11; // The OK LED, shines green when desired voltage is reached
int cycle = 0;
int maxCycle = 1000; // 1000 * 128 milliseconds is approximatelly equal to 2 minutes
int minutes = 120000;
float waitTime = 64; // 1000 / 7.8 = 128 ... minus 64
float loadTime = 64;

void setup() {
  pinMode(loadPin, OUTPUT);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  
  //Test the LEDs
  digitalWrite(greenPin, HIGH);
  delay(1000);
  digitalWrite(redPin, HIGH);
  delay(1000);
  digitalWrite(greenPin, LOW);
  delay(1000);
  digitalWrite(redPin, LOW);
}

void loop() {

  /*
  I assume that a healthy cell has at least a voltage of 1.0 Volt,
  therefore the Arduino will only put voltage on if the measurement results less than 1.0 Volt.
  The loading will be executed with a frequency of 7.8 Hz.
  1000 milliseconds are diveded by 7.8, this results in 128 milliseconds cycles, 64 on and 64 off,
  a square signal, with a amplitude between 3.3 Volt and 5 Volt depending on the model of the Arduino.
  */
  
  // Show for few milliseconds that one cycle is over
  digitalWrite(greenPin, HIGH);
  delay(144);
  digitalWrite(greenPin, LOW);
  
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);

  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  
  // Check Voltage and if it is high enough wait 2 minutes
  if (voltage > 1.0) {
    digitalWrite(greenPin, HIGH);
    delay(minutes);
    digitalWrite(greenPin, LOW);
  } else {
    
    // Voltage is less than 1.0 Volt, then load the cell for 2 minutes
    for (cycle = 0; cycle < maxCycle; cycle++) {
      digitalWrite(loadPin, HIGH);
      digitalWrite(redPin, HIGH);
      delay(loadTime);
      digitalWrite(loadPin, LOW);
      digitalWrite(redPin, LOW);
      delay(waitTime);
    }
  }

}

See also: