blajbaca

Arduino

Jun 28th, 2022 (edited)
818
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 4.18 KB | None
  1. 1. Način (original)
  2. ////////////////////////////////////////////////////////////////
  3.  
  4. #include <LiquidCrystal.h>
  5. #include <Wire.h>
  6.  
  7. const int rs=5,en=6,d4=7,d5=8,d6=9,d7=10;
  8. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  9.  
  10. volatile int brojSlobodnihMjesta=2;
  11. String brojSlobodnihMjestaToString = String(brojSlobodnihMjesta);
  12.  
  13. void setup() {
  14.   Serial.begin(9600);
  15.  
  16.   lcd.begin(16,2); // Inicijalizacija LCD displaya
  17.   lcd.setCursor(0,0);
  18.   lcd.write("Broj mjesta:");
  19.   pinMode(13,OUTPUT); // Crvena Ledica kao indikator
  20.   pinMode(12,OUTPUT); // Zelena Ledica kao indikator
  21.   pinMode(2,INPUT_PULLUP); // tipkalo za označavanje ulaska u garažu
  22.   pinMode(3,INPUT_PULLUP); // tipkalo za označavanje izlaska iz garažu
  23.   attachInterrupt(digitalPinToInterrupt(2),povecajBrojSlobodnihMjesta,RISING);
  24.   attachInterrupt(digitalPinToInterrupt(3),smanjiBrojSlobodnihMjesta,RISING);
  25.   pinMode(4,OUTPUT); //relej
  26.  
  27.   lcd.noCursor();
  28. }
  29.  
  30. void loop() {
  31.   lcd.noCursor();
  32.   if(brojSlobodnihMjesta==0){
  33.     digitalWrite(13,HIGH); //pali crvenu ako nema slobodnog mjesta u garazi
  34.     digitalWrite(12,LOW);  //analogno gasi zelenu
  35.   }
  36.   else{              
  37.     digitalWrite(13,LOW);  //analogno gasi crvenu
  38.     digitalWrite(12,HIGH); //pali zelenu jer ima mjesta
  39.   }
  40. }
  41.  
  42. void povecajBrojSlobodnihMjesta(){
  43.   brojSlobodnihMjesta++;
  44.   if(brojSlobodnihMjesta>2){
  45.     brojSlobodnihMjesta=2;
  46.   }
  47.   ispisMjesta();
  48.   digitalWrite(4, HIGH);
  49.   delay(1000);
  50.   digitalWrite(4,LOW);
  51.   Serial.println(brojSlobodnihMjesta);
  52. }
  53.  
  54. void smanjiBrojSlobodnihMjesta(){
  55.   if(brojSlobodnihMjesta==0){
  56.     Serial.println("Greška");
  57.   }
  58.   else{
  59.     brojSlobodnihMjesta--;
  60.     ispisMjesta();
  61.     digitalWrite(4, HIGH);
  62.     delay(1000);
  63.     digitalWrite(4,LOW);
  64.     Serial.println(brojSlobodnihMjesta);
  65.   }
  66.  
  67. }
  68.  
  69. void ispisMjesta(){
  70.     lcd.setCursor(1,0);
  71.     lcd.print(brojSlobodnihMjestaToString);
  72.     lcd.noCursor();
  73. }
  74. /////////////////////////////////////////////////////////////////////////////////////////
  75.  
  76.  
  77. 2.način - ne mogu izmjeniti sve jer neki elementi rade samo na 1 način al sam strukturirao kod drukcije
  78.  
  79.  
  80. /////////////////////////////////////////////////////////////////////////////////////////
  81. #include <LiquidCrystal.h>
  82. #include <Wire.h>
  83.  
  84. const int rs=5,en=6,d4=7,d5=8,d6=9,d7=10;
  85. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  86.  
  87. volatile int brojZauzetihMjesta=0;
  88. volatile int brojSlobodnihMjesta=2-brojZauzetihMjesta;
  89.  
  90. String ispis=String(brojSlobodnihMjesta);
  91.  
  92. void setup() {
  93.   Serial.begin(9600);
  94.   lcd.begin(16,2); // Inicijalizacija LCD displaya
  95.   lcd.setCursor(0,0);
  96.   lcd.print("Slobodna mjesta:");
  97.    
  98.   pinMode(13,OUTPUT); // Crvena Ledica kao indikator
  99.   pinMode(12,OUTPUT); // Zelena Ledica kao indikator
  100.   pinMode(2,INPUT_PULLUP); // tipkalo za označavanje ulaska u garažu
  101.   pinMode(3,INPUT_PULLUP); // tipkalo za označavanje izlaska iz garažu
  102.   pinMode(4,OUTPUT); //relej
  103.  
  104. }
  105.  
  106. void loop() {
  107.   int stanjeTipkalaVan=digitalRead(3);
  108.   int stanjeTipkalaUnutra=digitalRead(2);
  109.   if(stanjeTipkalaUnutra==0){
  110.     povecajBrojZauzetihMjesta();
  111.     Serial.println(brojZauzetihMjesta);
  112.     azurirajLCD();
  113.     upaliRelej();
  114.     if(brojZauzetihMjesta<2){
  115.         postaviLEDImaMjesta();
  116.     }
  117.     else{
  118.         postaviLEDNemaMjesta();
  119.     }
  120.   }
  121.  
  122.   if(stanjeTipkalaVan==0){
  123.     smanjiBrojZauzetihMjesta();
  124.     Serial.println(brojZauzetihMjesta);
  125.     azurirajLCD();
  126.     upaliRelej();
  127.     if(brojZauzetihMjesta<2){
  128.       postaviLEDImaMjesta();
  129.     }
  130.     else{
  131.       postaviLEDNemaMjesta();
  132.     }
  133.   }  
  134. }
  135.  
  136. void smanjiBrojZauzetihMjesta(){
  137.   if(brojZauzetihMjesta==0)
  138.   {
  139.     Serial.println("Greska");
  140.   }
  141.   else{
  142.     brojZauzetihMjesta--;
  143.   }
  144. }
  145.  
  146. void povecajBrojZauzetihMjesta(){
  147.   brojZauzetihMjesta++;
  148.   if(brojZauzetihMjesta>2)
  149.   {
  150.     brojZauzetihMjesta=2;
  151.     Serial.println("Parking je pun");
  152.   }
  153.  
  154. }
  155.  
  156. void azurirajLCD(){
  157.   lcd.setCursor(1,0);
  158.   lcd.print(ispis);
  159.   lcd.noCursor();
  160. }
  161.  
  162. void upaliRelej(){
  163.   digitalWrite(4,HIGH);
  164.   delay(500);
  165.   digitalWrite(4,LOW);
  166. }
  167.  
  168. void postaviLEDNemaMjesta(){
  169.   analogWrite(13,255);    
  170.   analogWrite(12,0);
  171. }
  172.  
  173. void postaviLEDImaMjesta(){
  174.   analogWrite(13,0);
  175.   analogWrite(12,255);
  176. }
  177.  
RAW Paste Data Copied