Starting an Arduino DIY incubator project

Where i modify in code?

loop to read the sensor and display
void loop(){
float h = dht.readHumidity(); // Read the humidity
float t = dht.readTemperature(); // Read temperature in celsius
float f = dht.readTemperature(true); // get the temperature in Fahreheit
// uncomment to compute heat index in Fahrenheit (the default)
//float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
//float hic = dht.computeHeatIndex(t, h, false);
 
Where i modify in code?

loop to read the sensor and display
void loop(){
float h = dht.readHumidity(); // Read the humidity
float t = dht.readTemperature(); // Read temperature in celsius
float f = dht.readTemperature(true); // get the temperature in Fahreheit
// uncomment to compute heat index in Fahrenheit (the default)
//float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
//float hic = dht.computeHeatIndex(t, h, false);

if you have the C being displayed on a lcd then some where in your code you are using something like

lcd.print(t,1);

means you are printing t which is the name assigned by the dht library as in float t = dht.readTemperature(); as its a float by adding the ,1 it shows 99.5 (1 digit after the point).

If you can find that line change the t to a f and it will now display Fahreheit because the conversion is already done In the library float
f = dht.readTemperature(true);


I prefer never to use letters as names so I normally use

humidity = sensor1.readHumidity();
temp = sensor1.readTemperature(true); // Read temperature as Fahrenheit

hope this helps
 
float t = dht.readTemperature(); // Read temperature in C
float f = dht.readTemperature(true); // Read temperature in F

Notice all you have to do is delete "true" when you read the temperature from the sensor. Then just change the "F" to a "C" when you print it on the LCD. You can also do what goop1 suggests.
 
this is the code with the stepper:

// Incubator code
// ---------------------------------------------
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 2 // Define the temp sensor data pin
#define DHTTYPE DHT22 // define the temp/hum sensor type
#define RELAY 0 // define the relay control pin
#include <Stepper.h>
#define STEPS_PER_MOTOR_REVOLUTION 32 //define the number of steps per motor revolution
// #define STEPS_PER_OUTPUT_REVOLUTION 32 * 64
#define STEPS_PER_OUTPUT_REVOLUTION 8 * 64 //define the number of steps to take each time the code loops
// 6 should give about 1 revolution per hour with a 2 second delay at the end of the loop
DHT dht(DHTPIN, DHTTYPE); //initialize the temp sensor
// LCD 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, 1
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 1); //set up what port the LCD will use
int backLight = 13; // pin 13 will control the backlight
int is,im,ih,id,ida; // variables for time
float time,s1,m1,h1,d1; // Set up variables to calculate time
int ic,ip,ik;
int Steps2Take; // define the steper motor steps
byte thermo[8] ={B00100,B01010,B01010,B01110,B01110,B11111,B11111,B01110}; //thermometer icon
byte drop[8] ={B00100,B00100,B01010,B01010,B10001,B10001,B10001,B01110}; //drop icon
byte smile[8] = {B00000,B10001,B00000,B00000,B10001,B01110,B00000}; // smile icon
byte tim[8] = {B00000,B01110,B10101,B10101,B10011,B10001,B01110,}; // clock icon
//The pin connections need to be 4 pins connected
// to Motor Driver In1, In2, In3, In4 and then the pins entered
// here in the sequence 1-3-4-2 for proper sequencing (hook up driver bard pins to arduino 6789
Stepper small_stepper(STEPS_PER_MOTOR_REVOLUTION, 7, 9,8, 6);
void setup()
{
dht.begin(); //start the temp sensor
pinMode(RELAY, OUTPUT);
pinMode(backLight, OUTPUT);
digitalWrite(backLight, LOW); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
lcd.begin(20,4); // columns, rows. use 16,2 for a 16x2 LCD, etc.
lcd.clear(); // start with a blank screen
lcd.setCursor(0,0); // set cursor to column 0, row 0 (the first row)
lcd.print("Incubator 1.0"); // opening line
lcd.setCursor(0,1); // set cursor to column 0, row 1
lcd.print("Hatch Them!");
delay(2000);
// Uncomment if you want more text on the 4 line LCD (not used in 2 line LCDs)
// lcd.setCursor(0,2); // set cursor to column 0, row 2
// lcd.print("Row 3"); //Text for line 3
//lcd.setCursor(0,3); // set cursor to column 0, row 3
//lcd.print("Row 4"); // Text for line 4
lcd.createChar(0,thermo);
lcd.createChar(1,drop);
lcd.createChar(2,smile);
lcd.createChar(3,tim);
}
//loop to read the sensor and display
void loop(){
float h = dht.readHumidity(); // Read the humidity
float t = dht.readTemperature(); // Read temperature in celsius
float f = dht.readTemperature(true); // get the temperature in Fahreheit
// uncomment to compute heat index in Fahrenheit (the default)
//float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
//float hic = dht.computeHeatIndex(t, h, false);
time=millis(); // Get time in milliseconds since tunit turn on
s1=time/1000; // Convert time to seconds, minutes, hours, days
m1=s1/60;
h1=m1/60;
d1=h1/24;
id=int(d1); // Strip out remainder to leave Days:Hours:Minutes:Seconds
ih=int((d1-int(d1))*24);
im=int((h1-int(h1))*60);
is=int((m1-int(m1))*60);
// Calculate approximate days till hatch (assume 21 days to hatch)
ida=21-id;
if (isnan(h) || isnan(t) || isnan(f)){
// if sensor can't be read
lcd.clear();
lcd.setCursor(0,0);
lcd.print("failed to read sensor");
delay(50000);
return;
}
else {
//sensor was read succesfully so print values to LCD
lcd.clear(); // Clear the LCD
//Print temperature and humidity in first two lines
lcd.setCursor(0,0);
// lcd.print("Temperature:");
lcd.print(" ");
lcd.write(byte(0)); // Write the Thhermometer icon
lcd.print(" ");
lcd.print(f,1);
lcd.print(" F ");
//lcd.setCursor(0,1);
lcd.write(byte(1)); // Write the drop icon
// lcd.print("Humidity:");
lcd.print(" ");
lcd.print(h,0);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.write(byte(3));
lcd.print(" ");
// Print time in format Time: xxd:xxh:xxm:xxs
lcd.print(id);
lcd.print("d:");
lcd.print(ih);
lcd.print("h:");
lcd.print(im);
lcd.print("m:");
lcd.print(is);
lcd.print("s");
lcd.setCursor(0,2);
lcd.print("_-_-_-_-_-_-_-_-_-_-");
lcd.setCursor(0,3);
// Print days left till hatch
lcd.print("Days left:");
lcd.print(21-id);
lcd.print(" ");
lcd.write(byte(2));
//Temperature controller
if(f < 98.0){ // Set the temperature for the relay to come on (somewhere around 90-101F to get eggs to hatch)
digitalWrite(RELAY,LOW); // Turns ON Relay
}
else{
digitalWrite(RELAY,HIGH); // Turns Relay Off
}
ic= im % 15;
ik=im-ip;
if(ic==0 && ik != 0){
ip=im;
lcd.setCursor(0,2);
lcd.print("Turning Eggs!_-_-_-_");
Steps2Take = STEPS_PER_OUTPUT_REVOLUTION ; // define stepper CW steps
small_stepper.setSpeed(50); // set stepper max speed
small_stepper.step(Steps2Take); // take the steps
// Steps2Take = - STEPS_PER_OUTPUT_REVOLUTION; // define stepper CCW 1 steps
// small_stepper.setSpeed(700); // set stepper to max speed
// small_stepper.step(Steps2Take); // take the steps
}
// Puase for 2 seconds
delay(2000);
}
}
 
I have made the stepper motor connections (1-3-4-2 to 6-7-8-9) and uploaded the code however nothing happens.No movement on the stepper or leds on the driver.
After "Hatch Them" in LCD do you have any button or something to start the process?I think that probably this is where I am stuck
 
The code is set to turn every 15 minutes by this line: ic= im % 15;
so nothing will happen for 15 minutes. you can try to set the line to ic= im % 1; and it should turn every minute.


there is no button to get the process going.
 
thank you very much for your help.
my only issue now is that whatever commands i choose at the end of your code, i keep getting counter-clockwise movement from the stepper
 

New posts New threads Active threads

Back
Top Bottom