Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <math.h>
- LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
- int button = 11;
- int redLed = 12;
- int greenLed = 8;
- int PWMLed = 9;
- boolean canPrint = false;
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- lcd.begin(16, 2);
- pinMode(redLed, OUTPUT);
- pinMode(greenLed, OUTPUT);
- pinMode(PWMLed, OUTPUT);
- pinMode(button, INPUT);
- digitalWrite(greenLed, LOW);
- digitalWrite(redLed, HIGH);
- lcd.clear();
- }
- void loop() {
- if (digitalRead(button) == HIGH){
- switchLeds();
- canPrint = !canPrint;
- delay(100);
- }
- if(canPrint == true){
- lcdPrintTemp();
- }
- else
- {
- lcd.clear();
- }
- }
- void switchLeds() {
- digitalWrite(redLed, !digitalRead(redLed));
- digitalWrite(greenLed, !digitalRead(greenLed));
- }
- void lcdPrintTemp() {
- lcd.setCursor(0, 0);
- lcd.print("Temperatura: ");
- float temperatura = readTempInCelsius(10,0);
- PWM(temperatura);
- lcd.setCursor(0, 1);
- lcd.print(temperatura);
- lcd.print(" ");
- lcd.print("C");
- delay(200);
- }
- void PWM(float temperature) {
- if (temperature >= 22.00 && temperature < 24.00) {
- analogWrite(PWMLed, 1);
- }
- else if (temperature >=24.00 && temperature < 26.00) {
- analogWrite(PWMLed, 10);
- }
- else if (temperature >=26.00 && temperature < 28.00) {
- analogWrite(PWMLed, 30);
- } else if (temperature >=28.00 && temperature < 30.00) {
- analogWrite(PWMLed, 65);
- }
- else if (temperature >=30.00 && temperature < 32.00) {
- analogWrite(PWMLed, 125);
- }
- else if (temperature >=32.00 && temperature < 34.00) {
- analogWrite(PWMLed, 255);
- }
- delay(30);
- }
- float readTempInCelsius(int count, int pin) {
- float temperaturaMediata = 0;
- float sumaTemperatura = 0;
- for (int i =0; i < count; i++) {
- int reading = analogRead(pin);
- float voltage = reading * 5.0;
- voltage /= 1024.0;
- float temperatureCelsius = (voltage - 0.5) * 100 ;
- sumaTemperatura = sumaTemperatura + temperatureCelsius;
- }
- return sumaTemperatura / (float)count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement