Friday, February 6, 2015

Arduino Code


/*
** Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens
 ** Readily found on eBay or http://www.sainsmart.com/ 
 ** The LCD2004 module appears to be identical to one marketed by YwRobot
 **
 ** Address pins 0,1 & 2 are all permenantly tied high so the address is fixed at 0x27
 **
 ** Written for and tested with Arduino 1.0
 ** This example uses F Malpartida's NewLiquidCrystal library. Obtain from:
 ** https://bitbucket.org/fmalpartida/new-liquidcrystal 
 **
 ** Edward Comer
 ** LICENSE: GNU General Public License, version 3 (GPL-3.0)
 **
 ** NOTE: TEsted on Arduino NANO whose I2C pins are A4==SDA, A5==SCL
 */
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x3F  // Define I2C Address where the PCF8574A is
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

int n = 1;
int threshold0=200;
int threshold1=400;
int ledPin =  13; 
int ledState= HIGH;    
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
  Serial.begin(9600);
   
  lcd.begin (20,4);
 pinMode(ledPin, OUTPUT);
  // Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(10 ); lcd.home ();                   // go home

  lcd.write(Serial.read());  
  
   
lcd.setCursor(0,0);
   lcd.println("SPHS Engineering/Hort");
    //lcd.scrollDisplayLeft();
  lcd.setCursor ( 0, 1 );        // go to the 2nd line
    lcd.print("Test BY: MATT/TYLER");
  lcd.setCursor ( 0, 2 );        // go to the third line
  lcd.print("Moisture Sensor");
  lcd.setCursor ( 0, 3 );        // go to the fourth line
  lcd.print("Soil Cond.:");
}
void loop() {

   lcd.setCursor (11,3); 
  int range = map(analogRead(0), threshold0, threshold1, 0, 2);
switch (range) {
  case 0:    // your hand is on the sensor
   lcd.print("PERM.WILT");   digitalWrite(ledPin, HIGH);

    break;
  case 1:    // your hand is close to the sensor
    lcd.print("FIELD CAP.");    digitalWrite(ledPin, LOW);

    break;
  case 2:    // your hand is a few inches from the sensor
   lcd.print("SATURATED ");    digitalWrite(ledPin, LOW);

    break;
    //digitalWrite(ledPin, HIGH);

  } //  if (ledState == LOW)
     //analogRead 
    
   // else
    //  ledState = LOW;

    // set the LED with the ledState of the variable:
    
  delay(50);        // delay in between reads for stability
}  
// constants won't change. Used here to 
// set pin numbers:
    // the number of the LED pin

// Variables will change:
         // ledState used to set the LED

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.

  // set the digital pin as output:
  
//void loop()




  

/* if (analogRead(0)>threshold0)
{lcd.print("dry");
}
  else if(threshold0<analogRead(0)<threshold1);
  {lcd.print("moist");}
  else else if(analogRead(0)>threshold1);
  {lcd.print("soaked");}
}

*/
 

 
 // Backlight on/off every 3 seconds
/* lcd.setCursor (14,3);        // go col 14 of line 3
 
  lcd.print(analogRead(0)>200);
lcd.print(analogRead(0)<400);}*/
  
 
  
 


    // when characters arrive over the serial port...
  //if (Serial.available()) 
    // wait a bit for the entire message to arrive
   // delay(100);
    // clear the screen
    //lcd.clear();
    // read all the available characters
    //while (Serial.available() > 0) 
      
 // Serial.print();
// Serial.print(analogRead(0));  
  




Monday, February 2, 2015

Monday 2/6

This week we will continue to work on our programming ability and work on a soil monitor for horticulture next door.

We will develop the soil monitor in stages first we will have the LCD screen read out the raw numerical valve from the Arduino Serial monitor
Once we accomplish that we will create value ranges and have the LCD screen display the soil condition: Dry, Moist, or Soaked
Then Once that is accomplished we will equip the Arduino with an LED and have it light the LED while it's dry.