Advertisement
mesmariusz

AVT 1615

Jun 10th, 2016
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. /*
  2. Przykład programu do obsługi modułu AVT1615 z:
  3. - wyświetlaczem LCD 2x16 znaków
  4. - 4 diodami LED
  5. - 4 przyciskami
  6. - brzęczykiem piezzo
  7. - czujnikiem temperatury LM35
  8. */
  9. #include <LiquidCrystal.h> //biblioteka obsługi LCD
  10. const int Led1 = 13; //przypisanie aliasów do pinów portów
  11. const int Led2 = 12;
  12. const int Led3 = 11;
  13. const int Led4 = 10;
  14. const int SW1 = 3;
  15. const int SW2 = 2;
  16. const int SW3 = 1;
  17. const int SW4 = 0;
  18. const int Buzzer = A5;
  19. LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //konfigurowanie linii do których został dołączony LCD
  20. int wart_pot; //zmienna na wartość zmierzona z potencjometru
  21. int wart_czuj; //zmienna na wartość zmierzonej z czujnika temperatury
  22. float wart_nap; //zmienna na wartość zmierzonego napięcia
  23. float temperatura; //zmienna na wartość zmierzonej temperatury
  24. byte st[8] = { //tablica znaku stopnia dla wyświetlacza LCD
  25. B00100,
  26. B01010,
  27. B00100,
  28. B00000,
  29. B00000,
  30. B00000,
  31. B00000,
  32. };
  33. void setup() { //funkcja inicjalizacji
  34. lcd.begin(16, 2); //konfigurowanie rozdzielczości LCD
  35. lcd.createChar(0, st); //funkcja utworzenia własnego znaku z tablicy sto kodzie 0
  36. analogReference(DEFAULT); //konfigurowanie napięcia odniesienia
  37. //dla przetwornika A/C - domyślnie 5V
  38. pinMode(Led1, OUTPUT); //konfigurowanie I/O, do których są
  39. //dołączone diody LED
  40. pinMode(Led2, OUTPUT);
  41. pinMode(Led3, OUTPUT);
  42. pinMode(Led4, OUTPUT);
  43. pinMode(Buzzer, OUTPUT); //konfigurowanie I/O, do której jest
  44. //dołączony brzęczyk piezzo
  45. pinMode(SW1, INPUT); //konfigurowanie I/O, do których są
  46. //dołączone przyciski
  47. pinMode(SW2, INPUT);
  48. pinMode(SW3, INPUT);
  49. pinMode(SW4, INPUT);
  50. digitalWrite(SW1, HIGH); //dołączenie wewnętrznych rezystorów
  51. //zasilających
  52. digitalWrite(SW2, HIGH);
  53. digitalWrite(SW3, HIGH);
  54. digitalWrite(SW4, HIGH);
  55. digitalWrite(Led1, HIGH); //wyłączenie diod LED
  56. digitalWrite(Led2, HIGH);
  57. digitalWrite(Led3, HIGH);
  58. digitalWrite(Led4, HIGH);
  59. digitalWrite(Buzzer, HIGH); //wyłączenie brzęczyka piezzo
  60. }
  61. void loop() { //pętla główna programu
  62. lcd.clear(); //czyszczenie LCD
  63. lcd.setCursor(4, 0); //ustawienie kursora w 5 kolumnie
  64. //pierwszego wiersza
  65. lcd.print("Arduino"); //wyświetlenie na LCD napisu Arduino
  66. //pomiar napięcia z potencjometru i dodanie wyniku do wart_pot
  67. for (int i = 0; i < 20; i++) { //pętla wykonywana 20 razy
  68. wart_pot = wart_pot + analogRead(A0);
  69. }
  70. //obliczenie średniej arytmetycznej z 20 pomiarów
  71. wart_pot = wart_pot / 20;
  72. //przeliczenie odczytanej wartości na napięcie
  73. wart_nap=(5.0*wart_pot)/1024.0;
  74. //ustawienie kursora w pierwszej pozycji drugiego wiersza LCD
  75. lcd.setCursor(0, 1);
  76. lcd.print("U="); //wyświetlenie napisu U=
  77. lcd.print(wart_nap); //wyświetlenie napięcia
  78. lcd.print("V"); //wyświetlenie znaku V
  79. for (int i = 0; i < 20; i++) { //pętla wykonywana 20
  80. //pomiar napięcia z czujnika temperatury i dodawanie wart_czuj
  81. wart_czuj = wart_czuj + analogRead(A1);
  82. }
  83. //obliczenie średniej arytmetycznej z 20 pomiarów
  84. wart_czuj = wart_czuj / 20;
  85. //przeliczenie wartości na stopnie Celsjusza
  86. temperatura=(5.0*wart_czuj*100)/1024.0;
  87. //ustawienie kursora na pozycji 9 drugiego wiersza LCD lcd.setCursor(9, 1);
  88. lcd.print(" T="); //wyświetlenie napisu T=
  89. lcd.print((long)temperatura);
  90. //wyświetlenie wartości temperatury zaokrąglonej do pełnych stopni
  91.  
  92. //lcd.write(0); //wyświetlenie znaku stopnia
  93. lcd.write(static_cast<byte>(0x00));
  94. lcd.print("C"); //wyświetlenie znaku C
  95. //sprawdzenie czy naciśnięto przycisk S1
  96. if (digitalRead(SW1) == LOW) {
  97. digitalWrite(Led1, LOW); //zaświecenie LED1
  98. digitalWrite(Buzzer, LOW); //włączenie brzęczyka
  99. lcd.clear(); //czyszczenie LCD
  100. //ustawienie kursora w pierwszym rzędzie i drugiej kolumnie lcd.
  101. lcd.setCursor(2, 0);
  102. lcd.print("Przycisk S1"); //wyświetlenie nazwy przycisku
  103. //oczekiwanie na zwolnienie przycisku S1
  104. while(digitalRead(SW1) == LOW);
  105. } else { //w przeciwnym razie
  106. digitalWrite(Led1, HIGH); //wyłączenie diody LED1
  107. digitalWrite(Buzzer, HIGH); //wyłączenie brzęczyka
  108. }
  109. if (digitalRead(SW2) == LOW) { //sprawdzenie czy naciśnięto S2
  110. digitalWrite(Led2, LOW);
  111. digitalWrite(Buzzer, LOW);
  112. lcd.clear();
  113. lcd.setCursor(2, 0);
  114. lcd.print("Przycisk S2");
  115. while(digitalRead(SW2) == LOW);
  116. } else {
  117. digitalWrite(Led2, HIGH);
  118. digitalWrite(Buzzer, HIGH);
  119. }
  120. if (digitalRead(SW3) == LOW) { //sprawdzenie czy naciśnięto S3
  121. digitalWrite(Led3, LOW);
  122. digitalWrite(Buzzer, LOW);
  123. lcd.clear();
  124. lcd.setCursor(2, 0);
  125. lcd.print("Przycisk S3");
  126. while(digitalRead(SW3) == LOW);
  127. } else {
  128. digitalWrite(Led3, HIGH);
  129. digitalWrite(Buzzer, HIGH);
  130. }
  131. if (digitalRead(SW4) == LOW) { //sprawdzenie czy naciśnięto S4
  132. digitalWrite(Led4, LOW);
  133. digitalWrite(Buzzer, LOW);
  134. lcd.clear();
  135. lcd.setCursor(2, 0);
  136. lcd.print("Przycisk S4");
  137. while(digitalRead(SW4) == LOW);
  138. } else {
  139. digitalWrite(Led4, HIGH);
  140. digitalWrite(Buzzer, HIGH);
  141. }
  142. delay(300); //opóźnienie o 300ms
  143. } //koniec pętli głównej
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement