I am have some trouble with the code I am currently working on. The project is reading different DS18B20 temperature sensors then have a stepper motor move a fan to which ever temperature sensor is the highest. My current void loop() code successfully calls the startup() and then the start01() functions but after that it does nothing. If anyone could take a look at my code and see what might be the problem, or know of better, and more efficient ways to go about doing this, it would be useful. I am using the Arduino Uno, R3 Motor Shield, 5x DS18B20 temperature sensors, and an Adafruit 200 stepper motor.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Stepper.h>
// Map our pins to constants to make things easier to keep track of
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;
int temp01 = 0;
int temp02 = 0;
int temp03 = 0;
int temp04 = 0;
int temp05 = 0;
//steps by 28, 56, 84, 112
const int STEPS = 200; //steps in a 360 degree revoltion
Stepper myStepper(STEPS, dirA, dirB); //initalize stepper class
#define ONE_WIRE_BUS 2 /*-(Connect to Pin 2 )-*/
OneWire ourWire(ONE_WIRE_BUS);
DallasTemperature sensors(&ourWire);
/*-----( Declare Variables )-----*/
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
DeviceAddress Probe01 = { 0x28, 0x86, 0x66, 0x67, 0x04, 0x00, 0x00, 0x43 };
DeviceAddress Probe02 = { 0x28, 0x49, 0x36, 0x67, 0x04, 0x00, 0x00, 0x6D };
DeviceAddress Probe03 = { 0x28, 0xC7, 0x6B, 0x67, 0x04, 0x00, 0x00, 0xED };
DeviceAddress Probe04 = { 0x28, 0x56, 0x40, 0x67, 0x04, 0x00, 0x00, 0xE3 };
DeviceAddress Probe05 = { 0x28, 0xCB, 0x3D, 0x68, 0x04, 0x00, 0x00, 0x03 };
void setup() /****** SETUP: RUNS ONCE ******/
{
// start serial port to show results
Serial.begin(9600);
Serial.print("Initializing Temperature Control Library Version ");
Serial.println(DALLASTEMPLIBVERSION);
// Initialize the Temperature measurement library
sensors.begin();
// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
sensors.setResolution(Probe01, 12);
sensors.setResolution(Probe02, 12);
sensors.setResolution(Probe03, 12);
sensors.setResolution(Probe04, 12);
sensors.setResolution(Probe05, 12);
// Set the RPM of the motor
myStepper.setSpeed(30);
// Turn on pulse width modulation
pinMode(pwmA, OUTPUT);
digitalWrite(pwmA, HIGH);
pinMode(pwmB, OUTPUT);
digitalWrite(pwmB, HIGH);
// Turn off the brakes
pinMode(brakeA, OUTPUT);
digitalWrite(brakeA, LOW);
pinMode(brakeB, OUTPUT);
digitalWrite(brakeB, LOW);
// Log some shit
Serial.begin(9600);
}//--(end setup )---
void loop(){
startup();
start01();
}
void start01()
{
sensors.requestTemperatures();
temp01 == (sensors.getTempC(Probe01));
temp02 == (sensors.getTempC(Probe02));
temp03 == (sensors.getTempC(Probe03));
temp04 == (sensors.getTempC(Probe04));
temp05 == (sensors.getTempC(Probe05));
if (temp01 > (temp02 || temp03 || temp04 || temp05))
{
myStepper.step(STEPS*0);
delay(1000);
start01();
}
else if (temp02 > (temp01 || temp03 || temp04 || temp05))
{
myStepper.step(STEPS*1);
delay(2000);
start02();
}
else if (temp03 > (temp01 || temp02 || temp04 || temp05))
{
myStepper.step(STEPS*2);
delay(3000);
start03();
}
else if (temp04 > (temp01 || temp02 || temp03 || temp05))
{
myStepper.step(STEPS*3);
delay(4000);
start04();
}
else
{
myStepper.step(STEPS*4);
delay(5000);
start05();
}
}
void start02()
{
sensors.requestTemperatures();
temp01 == (sensors.getTempC(Probe01));
temp02 == (sensors.getTempC(Probe02));
temp03 == (sensors.getTempC(Probe03));
temp04 == (sensors.getTempC(Probe04));
temp05 == (sensors.getTempC(Probe05));
if (temp01 > (temp02 ||temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*1);
delay(1000);
start01();
}
else if (temp02 > (temp01 || temp03 || temp04 || temp05))
{
myStepper.step(STEPS*0);
delay(2000);
start02();
}
else if (temp03 > (temp01 || temp02 || temp04 || temp05))
{
myStepper.step(STEPS*1);
delay(3000);
start03();
}
else if (temp04 > (temp01 || temp02 || temp03 || temp05))
{
myStepper.step(STEPS*2);
delay(4000);
start04();
}
else
{
myStepper.step(STEPS*3);
delay(5000);
start05();
}
}
void start03(){
sensors.requestTemperatures();
temp01 == (sensors.getTempC(Probe01));
temp02 == (sensors.getTempC(Probe02));
temp03 == (sensors.getTempC(Probe03));
temp04 == (sensors.getTempC(Probe04));
temp05 == (sensors.getTempC(Probe05));
if (temp01 > (temp02 || temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*2);
delay(1000);
start01();
}
else if (temp02 > (temp01 || temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*1);
delay(2000);
start02();
}
else if (temp03 > (temp01 || temp02 || temp04 || temp05))
{
myStepper.step(STEPS*0);
delay(3000);
start03();
}
else if (temp04 > (temp01 || temp02 || temp03 || temp05))
{
myStepper.step(STEPS*1);
delay(4000);
start04();
}
else
{
myStepper.step(STEPS*2);
delay(5000);
start05();
}
}
void start04(){
sensors.requestTemperatures();
temp01 == (sensors.getTempC(Probe01));
temp02 == (sensors.getTempC(Probe02));
temp03 == (sensors.getTempC(Probe03));
temp04 == (sensors.getTempC(Probe04));
temp05 == (sensors.getTempC(Probe05));
if (temp01 > (temp02 || temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*3);
delay(1000);
start01();
}
else if (temp02 > (temp01 || temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*2);
delay(2000);
start02();
}
else if (temp03 > (temp01 || temp02 || temp04 || temp05))
{
myStepper.step(-STEPS*1);
delay(3000);
start03();
}
else if (temp04 > (temp01 || temp02 || temp03 || temp05))
{
myStepper.step(STEPS*0);
delay(4000);
start04();
}
else
{
myStepper.step(STEPS*1);
delay(5000);
start05();
}
}
void start05()
{
sensors.requestTemperatures();
temp01 == (sensors.getTempC(Probe01));
temp02 == (sensors.getTempC(Probe02));
temp03 == (sensors.getTempC(Probe03));
temp04 == (sensors.getTempC(Probe04));
temp05 == (sensors.getTempC(Probe05));
if (temp01 > (temp02 || temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*4);
delay(1000);
start01();
}
else if (temp02 > (temp01 || temp03 || temp04 || temp05))
{
myStepper.step(-STEPS*3);
delay(2000);
start02();
}
else if (temp03 > (temp01 || temp02 || temp04 || temp05))
{
myStepper.step(-STEPS*2);
delay(3000);
start03();
}
else if (temp04 > (temp01 || temp02 || temp03 || temp05))
{
myStepper.step(-STEPS*1);
delay(4000);
start04();
}
else
{
myStepper.step(STEPS*0);
delay(5000);
start05();
}
}
void startup()
{
myStepper.step(-STEPS*2);
delay(8000);
}