Pages: [1]   Go Down
Author Topic: Combining two sketch together .....  (Read 724 times)
0 Members and 1 Guest are viewing this topic.
Dhaka
Offline Offline
Newbie
*
Karma: 0
Posts: 44
I love to learn and engineering is my passion
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello.. My project has two parts:

Part 1: A pin gets high or low depending on certain conditions
Part 2: LCD display and DS18B20 as a digital thermometer

I have successfully run theses two codes separately; but how to combine them together so that i can ran them together in my Arduino Mega 2560

The codes are attached below:


Sketch for Part 1:
Code:
// These constants won't change:
const int analogPin = A0; // pin that the sensor is attached to
const int transistorPin = 40; // pin that the LED is attached to
const int dtmfPin1 = A1;// pin that the Q4 of MT8870 is attached to
const int dtmfPin2 = A2;
const int dtmfPin3 = A3;
const int dtmfPin4 = A4;
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
void setup() {
// initialize the LED pin as an output:
pinMode(transistorPin, OUTPUT);
//initialize the DTMF output pin as input
pinMode(dtmfPin1, INPUT);
pinMode(dtmfPin2, INPUT);
pinMode(dtmfPin3, INPUT);
pinMode(dtmfPin4, INPUT);
// initialize serial communications:
Serial.begin(9600);
}

void loop() {
// read the value of the potentiometer:
int analogValue = analogRead(analogPin);
value1 = digitalRead(dtmfPin1);
value2 = digitalRead(dtmfPin2);
value3 = digitalRead(dtmfPin3);
value4 = digitalRead(dtmfPin4);

if (value1==HIGH&&value2==HIGH&&value3==HIGH&&value4==LOW)// 7
{


// if the analog value is high enough, turn on the LED:
if (analogValue < 150 ) {
digitalWrite(transistorPin, HIGH);
}


else if (analogValue > 450 ){
digitalWrite(transistorPin,LOW);
}
}
else {

if (value1==LOW&&value2==LOW&&value3==LOW&&value4==HIGH)//8
{
digitalWrite(transistorPin, HIGH);
}


else if (value1==HIGH&&value2==LOW&&value3==LOW&&value4==HIGH)//9
{
digitalWrite(transistorPin,LOW);
}
}
// print the analog value:
Serial.println(analogValue, DEC);

}

Code for part 2:
Code:
// LCD Thermostat
// www.hacktronics.com

#include <OneWire.h>
#include <LiquidCrystal.h>

// Connections:
// rs (LCD pin 4) to Arduino pin 12
// rw (LCD pin 5) to Arduino pin 11
// enable (LCD pin 6) to Arduino pin 10
// LCD pin 15 to Arduino pin 13
// LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
int backLight = 13;    // pin 13 will control the backlight

OneWire  ds(8);        // ds18b20 pin #2 (middle pin) to Arduino pin 8

byte i;
byte present = 0;
byte data[12];
byte addr[8];
 
int HighByte, LowByte, SignBit, Whole, Fract, TReading, Tc_100, FWhole;

void setup(void) {
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
  lcd.begin(2,16);              // rows, columns.  use 2,16 for a 2x16 LCD, etc.
  lcd.clear();                  // start with a blank screen
  lcd.setCursor(0,0);           // set cursor to column 0, row 0
 
    if ( !ds.search(addr)) {
      lcd.clear(); lcd.print("No more addrs");
      delay(1000);
      ds.reset_search();
      return;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      lcd.clear(); lcd.print("CRC not valid!");
      delay(1000);
      return;
  }
}

void getTemp() {
  int foo, bar;
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);
 
  present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE);

  for ( i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
 
  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
 
  if (SignBit) {
    TReading = -TReading;
  }
  Tc_100 = (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25
  Whole = Tc_100 / 100;          // separate off the whole and fractional portions
  Fract = Tc_100 % 100;
  if (Fract > 49) {
    if (SignBit) {
      --Whole;
    } else {
      ++Whole;
    }
  }

  if (SignBit) {
    bar = -1;
  } else {
    bar = 1;
  }
  foo = ((Whole * bar) * 18);      // celsius to fahrenheit conversion section
  FWhole = (((Whole * bar) * 18) / 10) + 32;
  if ((foo % 10) > 4) {            // round up if needed
       ++FWhole;
  }
}

void printTemp(void) {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Temp is: ");
  lcd.setCursor(0,1);   
 
  if (SignBit) { 
     lcd.print("-");
  }
  lcd.print(Whole);
  lcd.print(" C / ");
  lcd.print(FWhole);
  lcd.print(" F");
}

void loop(void) {
  getTemp();
  printTemp();
  delay(1000);
}
Logged

S.Ashraf

Dhaka
Offline Offline
Newbie
*
Karma: 0
Posts: 44
I love to learn and engineering is my passion
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The onewire libraray and LCDdisplay library has been included in the actual code.
Logged

S.Ashraf

Dhaka
Offline Offline
Newbie
*
Karma: 0
Posts: 44
I love to learn and engineering is my passion
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
void loop(void) {
  getTemp();
  printTemp();
  delay(1000);
}

Could you please tell me how to avoid using delay in the above portion of sketch 2?
Logged

S.Ashraf

Dhaka
Offline Offline
Newbie
*
Karma: 0
Posts: 44
I love to learn and engineering is my passion
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The delay function is there in a few place of sketch 2...if i merge the two sketches; i cant have the delay fuction..how can i avoid using that?
Logged

S.Ashraf

Global Moderator
UK
Offline Offline
Brattain Member
*****
Karma: 308
Posts: 26469
I don't think you connected the grounds, Dave.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
i cant have the delay fuction..how can i avoid using that?
Let us all intone the mantra..Read and understand the Blink Without Delay example, without delay.  Ooooommm.
Logged

"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Pages: [1]   Go Up
Jump to: