Go Down

Topic: sketch issue? (Read 119 times) previous topic - next topic

foreverexploding

Using the yun, ive made an automated gardening system. Simple temp and water level control. My problem is, I am trying to incorporate the SendSMS and datalogging to sd card into it. Basically if something trips one of my "faults" i want it to send a text saying which fault and log the time and sensor readings. I can get the programs to function seperate no problem. But when i try to work it into the same sketch im met with compilation errors. Ill post my sketch without the sms or sd programs in a moment.

foreverexploding


#include <LiquidCrystal.h>
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
#include <Console.h>
#include <DHT.h>
#include <FileIO.h>
YunServer server;
#define DHTPIN 2     // PIN THE TEMP/HUMIDITY SENSOR SIGNAL CONNECTED TO
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);
//####################################################################################################################################################################
// LCD
//LCD RS=3, EN=4, DS4=5, DS5=6, DS6=7, DS7=8
LiquidCrystal lcd( 3, 4, 5, 6, 7, 8);
//####################################################################################################################################################################
int Temp = 2;
int hightempfault = 10;       //  temp fault
int highhumfault = 9; // humidity fault
int highTemp = 35;   // in celcius      high  temperature alarm setting
int highHUM =54 ;// percent             high  humidity alarm setting
const int sig = A0;    // pin that the sensor is attached to
int topoff = 13;
const int lowwaterfault = 12; // water level fault
const int threshold = 150;   // an arbitrary threshold level that's in the range of the analog input
//####################################################################################################################################################################
//####################################################################################################################################################################

void setup() {
  FileSystem.begin();
  Bridge.begin();
  Console.begin( );
  lcd.begin(16,2);
  dht.begin();
 
pinMode(lowwaterfault, OUTPUT);
pinMode(sig, INPUT);
pinMode(topoff, OUTPUT);
pinMode (Temp, INPUT) ; 
pinMode(hightempfault, OUTPUT);
pinMode(highhumfault, OUTPUT);
pinMode(hightempfault, OUTPUT);
pinMode(highhumfault, OUTPUT);
   
    server.listenOnLocalhost();
    server.begin();

lcd.begin(16,2);
dht.begin();
server.listenOnLocalhost();
server.begin();


//####################################################################################################################################################################
//####################################################################################################################################################################
 Console.println("Filesystem datalogger\n");
}

void loop() {
 ///////////////////////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////////////
  int sig = analogRead(A0); //READ SIGNAL OF WATER LEVEL
  float voltage = sig * (5.0 / 1023.0);
 
  delay(1000);
 
 
  if (sig > threshold) {
     Console.println("WATER LEVEL: OK");
  }
  else   {
   
    digitalWrite(lowwaterfault, HIGH);   // turn the LED on (HIGH is the voltage level)              green led
  delay(250);              // wait for a second
  digitalWrite(lowwaterfault, LOW);    // turn the LED off by making the voltage LOW
  delay(250);              // wait for a second
  Console.println("WATER LEVEL: NOT OK");
 
  //digitalWrite (topoff, HIGH);
 //#################################################################################################################################################################
  int h = dht.readHumidity();
  int Temp = dht.readTemperature();
 
 //##################################################################################################################################################################
 if (Temp > highTemp) {
    digitalWrite(hightempfault, HIGH);
 
      lcd.setCursor(9,0);
  lcd.print(" NOT OK");
   Console.println("TEMP: NOT OK");
 }
   
 //########### data logging/SendSMS ########################################################################################################################################
 //????????????????????????????????????????????????????????????????????????????????????????????????????????
 //################################################################################################################################################################
  else {
    digitalWrite(hightempfault, LOW);
    lcd.setCursor(9,0);
  lcd.print(" OK");
   Console.println("TEMP: OK");
   
 
  }
 //####################################################################################################################################################################
  if (h > highHUM) {
    digitalWrite(highhumfault, HIGH);
    lcd.setCursor(9,1);
    lcd.print(" NOT OK");
    Console.println("HUMIDITY: NOT OK");
    }
  else {
    digitalWrite(highhumfault, LOW);
    Console.println("HUMIDITY: OK");
    lcd.setCursor(9,1);
    lcd.print(" OK");
  }

 
 
 

 
 
  //################################################################################################################################################################################
  //##################################### DISPLAY READINGS #########################################################################################################################
  //################################################################################################################################################################################
 
  int tf = ((Temp * 1.8)+32); //fahrenheit = ((celsius * 1.8)+32); // convert celsius to fahrenheit
  Console.print("Temp: " );
  Console.print(tf);
  Console.print("F/");
  //Console.print(Temp);
  //Console.println("C");
 
  Console.print("Humi.:");
  Console.print(h);
  Console.println("%");
  Console.println("----------------------");
 delay(3000);

   
    // set the cursor to (0,0):
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tf);
lcd.print("F");
  // set the cursor to (16,1):
lcd.setCursor(0,1);
lcd.print("Hum.: ");
lcd.print(h);
lcd.print("%");
delay(200);
  }
   
 }


 



foreverexploding

I hope this is the correct thread. I've tried to look into the topic, even in the most obscure of places, but turned up nothing. I just want it to perform these commands once and not rely on the console being open to do so. ive tried editing the while(!console) to different things. Maybe just the wrong references. I dont know. Thanks in advance for any advice I receive.

foreverexploding

really could just use an example of a working conditional statement involving these. Preferably an if/else.

myggle

Quote
pinMode(hightempfault, OUTPUT);
pinMode(highhumfault, OUTPUT);
pinMode(hightempfault, OUTPUT);
pinMode(highhumfault, OUTPUT);
Is hitempfault and highhumfault intentionally referenced twice?  And where is lowtempfault and lowhumfault?

pert

im met with compilation errors.
It might help if you actually posted the compilation errors.
Ill post my sketch without the sms or sd programs in a moment.
You need to post your sketch in code tags, otherwise we get a bunch of smiley faces where they're not supposed to be. You can edit your post to fix this but first do Tools > Auto Format on your sketch.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy