Well right now I'm simulating it on Tinkercad so I have no real hardware, but I'm using a 5v relay to control the heater and motor, with 3 buttons. Here is (so far) my code:
//This is written in C++
//
//#include <EEPROM.h>
#include <Adafruit_LiquidCrystal.h>
//#define buttonhome 11
#define buttonstart 10
#define buttonsettings 9
#define buttonminus 8
#define thermistorPin A0
#define heaterSwitch 3
#define motorSwitch 2
#define pinTemp A0
Adafruit_LiquidCrystal lcd_1(0);
int startPressed = digitalRead(buttonstart);
int setPressed = digitalRead(buttonsettings);
int minPressed = digitalRead(buttonminus);
float sensorInput;
float temp;
void setup()
{
pinMode(buttonminus, INPUT);
pinMode(buttonsettings, INPUT);
pinMode(buttonstart, INPUT);
pinMode(heaterSwitch, OUTPUT);
digitalWrite(heaterSwitch, HIGH);
pinMode(motorSwitch, OUTPUT);
digitalWrite(motorSwitch, HIGH);
lcd_1.begin(16, 2);
Serial.begin(9600);
/*
buttonStart = digitalRead(8);
buttonSettings = digitalRead(9);
buttonMinus = digitalRead(10);
/*/
int heaterThresh = 240;
/*int buttonStart = 0;
int buttonSettings = 0;
int buttonMinus = 0;
/*/
lcd_1.setCursor(0, 0);
lcd_1.print("Arduino Extruder");
lcd_1.setCursor(0, 1);
lcd_1.print(" V1.0.2");
delay(2500); // Wait for 2500 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.scrollDisplayLeft();
delay(90); // Wait for 90 millisecond(s)
lcd_1.clear();
// delay(750); // Wait for 750 millisecond(s)
}
void loop()
{
lcd_1.setCursor(3, 0);
lcd_1.print("Select Mode");
lcd_1.setCursor(0, 1);
lcd_1.print("Start");
lcd_1.setCursor(6, 1);
lcd_1.print("DEPRECATED");
int startPressed = digitalRead(buttonstart);
int setPressed = digitalRead(buttonsettings);
int minPressed = digitalRead(buttonminus);
if(startPressed == HIGH){
Serial.println("Start");
} else if (setPressed == HIGH){
Serial.println("Settings");
} else if (minPressed == HIGH){
Serial.println("-");
}
Serial.println(pinTemp);
if (startPressed == HIGH) {
startScreen();
/*
int temp = analogRead(pinTemp);
lcd_1.clear();
/*lcd_1.print("15");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("14");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("13");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("12");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("11");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("10");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.clear();
lcd_1.print("9");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("8");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("7");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("6");
delay(1000); // Wait for 1000 millisecond(s)
/*
lcd_1.setCursor(0, 0);
lcd_1.print("5");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("4");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("3");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("2");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("1");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("Starting...");
digitalWrite(2, HIGH);
delay(2750); // Wait for 2750 millisecond(s)
/*/// lcd_1.clear();
} else if (setPressed == HIGH) {
setScreen();
}
}
void startScreen() {
//int heater = digital(heaterSwitch);
//int motor = digitalRead(motorSwitch);
lcd_1.clear();
lcd_1.setCursor(0, 0);
lcd_1.print("5");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("4");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("3");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("2");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("1");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(0, 0);
lcd_1.print("Heating");
lcd_1.setCursor(0, 1);
lcd_1.print("Please Wait...");
digitalWrite(heaterSwitch, LOW);
delay(1500); // Wait for 2750 millisecond(s)
heatScreen1();
}
void setScreen() {
lcd_1.clear();
lcd_1.setCursor(0,0);
lcd_1.print("The Setting option will come soon ");
delay(500);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
delay(120);
lcd_1.scrollDisplayLeft();
// lcd_1.setCursor(0,1);
//lcd_1.print("come in future updates");
//delay(4000);
lcd_1.clear();
loop();
}
void heatScreen1() {
sensorInput = analogRead(A0);
temp = sensorInput / 1024;
temp = temp * 5;
temp = temp - 0.5;
temp = temp * 100;
lcd_1.setCursor(0, 0);
lcd_1.print("Heating");
lcd_1.setCursor(0, 1);
lcd_1.print("Please Wait...");
digitalWrite(heaterSwitch, LOW);
delay(1500); // Wait for 2750 millisecond(s)
// digitalWrite(heaterSwitch, HIGH);
// heatScreen();
if (temp >= 120){
heatScreen();
}else {
heatScreen1();
}
}
void heatScreen() {
int startPressed = digitalRead(buttonstart);
int setPressed = digitalRead(buttonsettings);
int minPressed = digitalRead(buttonminus);
sensorInput = analogRead(A0);
temp = sensorInput / 1024;
temp = temp * 5;
temp = temp - 0.5;
temp = temp * 100;
digitalWrite(heaterSwitch, HIGH);
lcd_1.clear();
lcd_1.setCursor(0,0);
lcd_1.print("Starting motor in");
lcd_1.setCursor(8, 1);
lcd_1.print("5");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(8, 1);
lcd_1.print("4");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(8, 1);
lcd_1.print("3");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(8, 1);
lcd_1.print("2");
delay(1000); // Wait for 1000 millisecond(s)
lcd_1.setCursor(8, 1);
lcd_1.print("1");
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(motorSwitch, LOW);
lcd_1.clear();
heatScreen2();
delay(200000);
}
void heatScreen2() {
sensorInput = analogRead(A0);
temp = sensorInput / 1024;
temp = temp * 5;
temp = temp - 0.5;
temp = temp * 100;
temp = temp + 0.15;
lcd_1.setCursor(0,0);
lcd_1.print("Temperature is");
lcd_1.setCursor(0,1);
lcd_1.print(temp);
lcd_1.setCursor(5,1);
lcd_1.print(" Degrees");
heatScreen2();
}
All of the disabled lines were either earlier attempts of the button modes or disabled delays to make the simulation faster.