Toaster.ino 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include <LiquidCrystal.h>
  2. #include <PWM.h>
  3. #include <DallasTemperature.h>
  4. #include <OneWire.h>
  5. LiquidCrystal lcd(13, 12, 10, 9, 8, 7);
  6. #define PIN_OUTPUT 3
  7. #define LED 5
  8. int tempsensor = 6;
  9. int Magnet = 11;
  10. int32_t frequency = 10;
  11. int Grades;
  12. double temperature;
  13. double Tmax = 30;
  14. int S;
  15. unsigned long t = 0;
  16. unsigned long tmax = 60000;
  17. int D;
  18. void Drehschalter();
  19. void LCD();
  20. OneWire onewirepin(tempsensor);
  21. DallasTemperature sensors(&onewirepin);
  22. void setup() {
  23. lcd.begin(16, 2);
  24. InitTimersSafe();
  25. bool success = SetPinFrequencySafe(PIN_OUTPUT,frequency);
  26. sensors.begin();
  27. pinMode(Magnet, OUTPUT);
  28. }
  29. void loop() {
  30. while (t < tmax) {
  31. t=millis();
  32. digitalWrite(Magnet, HIGH);
  33. Drehschalter();
  34. sensors.requestTemperatures();
  35. temperature=sensors.getTempCByIndex(0);
  36. D =map(analogRead(1), 0, 1023, 0, 255);
  37. pwmWrite(PIN_OUTPUT, D);
  38. analogWrite(LED, D);
  39. LCD();
  40. S=digitalRead(2);
  41. if (S == HIGH) {
  42. t=tmax;
  43. }
  44. if (temperature > Tmax) {
  45. t=tmax;
  46. }
  47. }
  48. digitalWrite(Magnet, LOW);
  49. }
  50. void Drehschalter() {
  51. Grades = analogRead(0);
  52. if (Grades >= 0 && Grades <= 205) {
  53. tmax = 10000;
  54. }
  55. if (Grades > 205 && Grades <= 410) {
  56. tmax = 20000;
  57. }
  58. if (Grades > 410 && Grades <= 615) {
  59. tmax = 30000;
  60. }
  61. if (Grades > 615 && Grades <= 820) {
  62. tmax = 40000;
  63. }
  64. if (Grades > 820 && Grades <= 1024) {
  65. tmax = 50000;
  66. }
  67. }
  68. void LCD() {
  69. lcd.setCursor(0, 0);
  70. lcd.print("T=");
  71. lcd.print(temperature);
  72. lcd.print("`C ");
  73. lcd.print("t=");
  74. lcd.print(t/1000);
  75. lcd.print("s");
  76. lcd.setCursor(0, 1);
  77. lcd.print("D=");
  78. lcd.print((D*100)/255);
  79. lcd.print("% ");
  80. lcd.print("tmax=");
  81. lcd.print(tmax/1000);
  82. lcd.print("s ");
  83. }