This shows you the differences between two versions of the page.
|
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> | ||