/*
* LM35
* 3 pins Vs, Vout and GND
*/
#define SensorPin A0
int SensorVal;
float temperature;
void readTeamperatue(void);
/*============================================================
* L298n motor driver
* Motor A control pins EnA, In1, In2
IN1 IN2 Spinning Direction
Low(0) Low(0) Motor OFF
High(1) Low(0) Forward/clockwise
Low(0) High(1) Backward/anti-clockwise
High(1) High(1) Motor OFF
*/
#define ENA 3
#define IN1 4
#define IN2 5
void motor_directionspeed(bool in1_val, bool in2_val, int Ena_val);
void setup() {
Serial.begin(9600);
Serial.println("Start...");
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
}
void loop() {
//LM35 read temp from sensor value
readTeamperatue();
//motor control
int speed;//speed can have a value between 0-256
if(temperature < 30){
speed = 0;
}else if(temperature >150){
speed = 255;
}else{
speed = 200;
}
motor_directionspeed(1,0,speed);
// wait
delay(1000);
}
void readTeamperatue(void){
SensorVal = analogRead(SensorPin);
float Vout = (float)SensorVal * (5.0/1024.0);
temperature = Vout * 100;
//Print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.print("C \n");
}
void motor_directionspeed(bool in1_val, bool in2_val, int Ena_val){
analogWrite(ENA, Ena_val);
digitalWrite(IN1, in1_val);
digitalWrite(IN2, in2_val);
if( (in1_val == 0 && in2_val ==0) || Ena_val == 0){
Serial.print("Motor off");
}else if( (in1_val == 1 && in2_val ==1) || Ena_val == 0){
Serial.print("Motor off");
}else if( in1_val == 1 && in2_val ==0 && Ena_val> 0){
Serial.print("Motor on / clockwise direction | ");
int a = (int)(Ena_val*100)/255;
Serial.print("Speed: ");
Serial.print(a);
Serial.print("%\n");
}else if( in1_val == 0 && in2_val ==1 && Ena_val> 0){
Serial.print("Motor on / Anti-clockwise direction | ");
int a = (int)(Ena_val*100)/255;
Serial.print("Speed: ");
Serial.print(a);
Serial.print("%\n");
}else{
Serial.print("Processing");
}
}