#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int dataPin = 2; /* DS */
const int clockPin = 3; /* SHCP */
const int latchPin = 4; /* STCP */
const int buttonPin = 5; /* STCP */
const float BETA = 3950;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
lcd.begin(16, 2);
lcd.print("Motor speed");
}
int pattern;
void loop() {
int analogValue = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
celsius += 25;
celsius = 1.0/celsius;
celsius *= 10;
if(digitalRead(buttonPin)){
moveMinus(1.0/celsius);
}
else{
movePlus(1.0/celsius);
}
lcd.setCursor(0, 1);
lcd.print(celsius);
}
void moveMinus(int delayMS){
delay(delayMS);
pattern = 0b00001101;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(delayMS);
pattern = 0b00000101;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(delayMS);
pattern = 0b00001110;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(delayMS);
pattern = 0b00001010;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
}
void movePlus(int delayMS){
delay(delayMS);
pattern = 0b00000110;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(delayMS);
pattern = 0b00000111;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(delayMS);
pattern = 0b00001001;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
delay(delayMS);
pattern = 0b00001011;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
}