Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:iotelea:dalya.tobescu [2024/05/26 22:23]
dalya.tobescu
pm:prj2024:iotelea:dalya.tobescu [2024/05/26 23:04] (current)
dalya.tobescu
Line 319: Line 319:
 ==Descriere detaliată a codului:== ==Descriere detaliată a codului:==
 ==Biblioteci incluse:== ==Biblioteci incluse:==
-LiquidCrystal.h:​ pentru controlul afișajului LCD. +LiquidCrystal.h:​ pentru controlul afișajului LCD. 
-HX711_ADC.h:​ pentru citirea datelor de la senzorul de greutate HX711.+ 
 +HX711_ADC.h:​ pentru citirea datelor de la senzorul de greutate HX711.
  
  
Line 330: Line 331:
 ==Definirea pinilor și inițializarea componentelor:​== ==Definirea pinilor și inițializarea componentelor:​==
  
-Pinii DOUT_PIN și SCK_PIN sunt definiți pentru senzorul HX711. +Pinii DOUT_PIN și SCK_PIN sunt definiți pentru senzorul HX711. 
-Obiectul LoadCell este creat pentru a interacționa cu senzorul HX711. + 
-Pinii pentru afișajul LCD sunt definiți (rs, en, d4, d5, d6, d7), iar obiectul lcd este creat. +Obiectul LoadCell este creat pentru a interacționa cu senzorul HX711. 
-Pinii buttonPin, ledPin și plateButton sunt definiți pentru butoanele de control și LED.+ 
 +Pinii pentru afișajul LCD sunt definiți (rs, en, d4, d5, d6, d7), iar obiectul lcd este creat. 
 + 
 +Pinii buttonPin, ledPin și plateButton sunt definiți pentru butoanele de control și LED.
  
 <​code>​ <​code>​
Line 353: Line 357:
  
 ==Funcția setup:== ==Funcția setup:==
-Setează pinul ledPin ca ieșire și pinurile buttonPin și plateButton ca intrări. +Setează pinul ledPin ca ieșire și pinurile buttonPin și plateButton ca intrări. 
-Inițializează comunicarea serială la 57600 baud. +Inițializează comunicarea serială la 57600 baud. 
-Inițializează conexiunea la senzorul HX711 și setează factorul de calibrare. +Inițializează conexiunea la senzorul HX711 și setează factorul de calibrare. 
-Resetează senzorul la zero. +Resetează senzorul la zero. 
-Inițializează afișajul LCD și afișează un mesaj de bun venit timp de 3 secunde.+Inițializează afișajul LCD și afișează un mesaj de bun venit timp de 3 secunde.
  
 <​code>​ <​code>​
Line 389: Line 393:
  
 ==Funcția loop:== ==Funcția loop:==
-Citirea și afișarea greutății măsurate de senzorul HX711. +Citirea și afișarea greutății măsurate de senzorul HX711. 
-Verifică dacă greutatea este stabilă și dacă este prima rulare. +Verifică dacă greutatea este stabilă și dacă este prima rulare. 
-Afișează greutatea pe afișajul LCD, fie ca greutate simplă, fie ca greutate ajustată pentru un suport (tavă). +Afișează greutatea pe afișajul LCD, fie ca greutate simplă, fie ca greutate ajustată pentru un suport (tavă). 
-Gestionează resetarea și funcția de suport prin intermediul butoanelor:​ +Gestionează resetarea și funcția de suport prin intermediul butoanelor:​ 
-Dacă buttonPin este apăsat, resetează greutatea și afișează mesajul de resetare. +Dacă buttonPin este apăsat, resetează greutatea și afișează mesajul de resetare. 
-Dacă plateButton este apăsat, activează funcția de suport și afișează mesajul corespunzător.+Dacă plateButton este apăsat, activează funcția de suport și afișează mesajul corespunzător.
  
 <​code>​ <​code>​
Line 401: Line 405:
   static float lastWeight = 0;   static float lastWeight = 0;
   static bool isStable = false;   static bool isStable = false;
-  static bool isFirstRun = true; // Add a variable to track the first run+  static bool isFirstRun = true;
   static bool plate = false;   static bool plate = false;
   static float plateWeight = 0;   static float plateWeight = 0;
 +  static int ledBrightness = 0; // Variable to store LED brightness
 +
   LoadCell.update();​   LoadCell.update();​
   float weight = LoadCell.getData();​   float weight = LoadCell.getData();​
Line 431: Line 437:
  
   if (isStable) {   if (isStable) {
-    if (plate ​== false) {+    if (!plate) {
       lcd.clear();​       lcd.clear();​
       lcd.setCursor(0,​ 0); // Set cursor to the first row       lcd.setCursor(0,​ 0); // Set cursor to the first row
Line 460: Line 466:
   // Check if the button is pressed   // Check if the button is pressed
   if (digitalRead(buttonPin) == HIGH) {   if (digitalRead(buttonPin) == HIGH) {
-    ​digitalWrite(ledPin, ​LOW);+    ​analogWrite(ledPin, ​0); // Turn off the LED
     Serial.println("​Reset button pressed"​);​     Serial.println("​Reset button pressed"​);​
     plate = false;     plate = false;
     weight = 0;     weight = 0;
     lcd.clear();​     lcd.clear();​
-    lcd.setCursor(0,​ 1); // set cursor to second row+    lcd.setCursor(0,​ 1); // Set cursor to the second row
     lcd.print(" ​   Reset... ​   ");     lcd.print(" ​   Reset... ​   ");
     LoadCell.start(1000);​     LoadCell.start(1000);​
Line 473: Line 479:
   }   }
  
 +  // Plate button functionality with PWM
   if (digitalRead(plateButton) == HIGH) {   if (digitalRead(plateButton) == HIGH) {
-    // turn LED on: 
     Serial.println("​PLATE FUNCTION"​);​     Serial.println("​PLATE FUNCTION"​);​
-    digitalWrite(ledPin,​ HIGH); 
     plate = true;     plate = true;
     lcd.clear();​     lcd.clear();​
-    lcd.setCursor(0,​ 1); // set cursor to second row+    lcd.setCursor(0,​ 1); // Set cursor to the second row
     lcd.print("​ Plate function ");     lcd.print("​ Plate function ");
     LoadCell.start(1000);​     LoadCell.start(1000);​
Line 485: Line 490:
     delay(1000);​ // Allow some time for the reset to stabilize     delay(1000);​ // Allow some time for the reset to stabilize
     lcd.clear();​     lcd.clear();​
 +
 +    // Gradually increase LED brightness using PWM
 +    for (int brightness = 0; brightness <= 255; brightness += 5) {
 +      analogWrite(ledPin,​ brightness);​
 +      delay(10);
 +    }
 +  }
 +
 +  // Decrease LED brightness over time
 +  if (ledBrightness > 0) {
 +    ledBrightness -= 5;
 +    if (ledBrightness < 0) {
 +      ledBrightness = 0;
 +    }
 +    analogWrite(ledPin,​ ledBrightness);​
   }   }
  
Line 516: Line 536:
  
 <note warning> <note warning>
-TODO+{{:​pm:​prj2024:​iotelea:​cantar_bucatarie.ino.zip|}}
 </​note>​ </​note>​
  
pm/prj2024/iotelea/dalya.tobescu.1716751389.txt.gz · Last modified: 2024/05/26 22:23 by dalya.tobescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0