Advertisement
Guest User

ES Lab 2

a guest
Mar 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1.  
  2. #include <LiquidCrystal.h>
  3. #include <math.h>
  4.  
  5. LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
  6.  
  7. int button = 11;
  8.  
  9. int redLed = 12;
  10. int greenLed = 8;
  11. int PWMLed = 9;
  12.  
  13. boolean canPrint = false;
  14.  
  15. void setup() {
  16. // put your setup code here, to run once:
  17. Serial.begin(9600);
  18. lcd.begin(16, 2);
  19.  
  20. pinMode(redLed, OUTPUT);
  21. pinMode(greenLed, OUTPUT);
  22. pinMode(PWMLed, OUTPUT);
  23. pinMode(button, INPUT);
  24.  
  25. digitalWrite(greenLed, LOW);
  26. digitalWrite(redLed, HIGH);
  27. lcd.clear();
  28.  
  29. }
  30.  
  31. void loop() {
  32.  
  33.  
  34. if (digitalRead(button) == HIGH){
  35. switchLeds();
  36. canPrint = !canPrint;
  37. delay(100);
  38. }
  39.  
  40. if(canPrint == true){
  41. lcdPrintTemp();
  42. }
  43. else
  44. {
  45. lcd.clear();
  46. }
  47.  
  48. }
  49.  
  50. void switchLeds() {
  51. digitalWrite(redLed, !digitalRead(redLed));
  52. digitalWrite(greenLed, !digitalRead(greenLed));
  53. }
  54.  
  55.  
  56. void lcdPrintTemp() {
  57. lcd.setCursor(0, 0);
  58. lcd.print("Temperatura: ");
  59. float temperatura = readTempInCelsius(10,0);
  60. PWM(temperatura);
  61. lcd.setCursor(0, 1);
  62. lcd.print(temperatura);
  63. lcd.print(" ");
  64. lcd.print("C");
  65. delay(200);
  66. }
  67.  
  68. void PWM(float temperature) {
  69. if (temperature >= 22.00 && temperature < 24.00) {
  70. analogWrite(PWMLed, 1);
  71. }
  72. else if (temperature >=24.00 && temperature < 26.00) {
  73. analogWrite(PWMLed, 10);
  74. }
  75. else if (temperature >=26.00 && temperature < 28.00) {
  76. analogWrite(PWMLed, 30);
  77.  
  78. } else if (temperature >=28.00 && temperature < 30.00) {
  79. analogWrite(PWMLed, 65);
  80. }
  81. else if (temperature >=30.00 && temperature < 32.00) {
  82. analogWrite(PWMLed, 125);
  83. }
  84. else if (temperature >=32.00 && temperature < 34.00) {
  85. analogWrite(PWMLed, 255);
  86. }
  87. delay(30);
  88. }
  89.  
  90. float readTempInCelsius(int count, int pin) {
  91. float temperaturaMediata = 0;
  92. float sumaTemperatura = 0;
  93. for (int i =0; i < count; i++) {
  94. int reading = analogRead(pin);
  95. float voltage = reading * 5.0;
  96. voltage /= 1024.0;
  97. float temperatureCelsius = (voltage - 0.5) * 100 ;
  98. sumaTemperatura = sumaTemperatura + temperatureCelsius;
  99. }
  100. return sumaTemperatura / (float)count;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement