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> | ||