BANICAALEXANDRUVASILICA Posted May 18, 2024 Share Posted May 18, 2024 Salutare, as dori sa fiu ajutat cu un cod pentru programarea placutei de arduino la un proiect, cerinta este: creati un cod astfel incat pe ecran sa se afiseze in partea superioara (sus) cuvantul "cronometru", in partea inferioara (jos) sa afiseze secundele ( de la 0 pana la 60, specific cronometrului start:00:00; sfarsit: 00:60), iar la secunda 15 sa se aprinda ledul constant pana la secunda 25; de la secunda 26 pana la secunda 40, ledul sa fie intermitent, iar de la secunda 50 sa se opreasca ledul complet si sa se auda un sunet (la alegere, de preferat un sunet de tip "beep-beep", specific unui senzor) pana la secunda 60, dupa 60 sa se opreasca complet sunetul. Am incercat sa iau codurile pentru fiecare separat: cronometru, led, difuzor,... as prefera daca ma poate ajuta cineva va rog cu acest cod ! Am nevoie zilele acestea ca proiectul este saptamana care vine din 20 mai. (sunt nou pe aceasta platforma). Le afisez aici courile ce am gasit: COD PENTRU CRONOMETRU void setup() { pinMode(LED_BUILTIN, OUTPUT); // Inițializăm pinul LED_BUILTIN ca pin de ieșire } void loop() { digitalWrite(LED_BUILTIN, HIGH); // Aprinde LED-ul (HIGH = voltaj maxim) delay(1000); // Așteptăm o secundă digitalWrite(LED_BUILTIN, LOW); // Stingem LED-ul (LOW = voltaj 0) delay(1000); // Așteptăm încă o secundă } COD PENTRU LED constant // Declaram pinul unde vom conecta LED-ul int LED = 13; int buttonPin = 12; void setup() { // Definim pinul 12 ca input și activăm rezistența internă a placii pinMode(buttonPin, INPUT_PULLUP); // Definim pinul 13 ca și pin pentru ieșire (pentru LED) pinMode(LED, OUTPUT); } void loop() { // Citim valoarea input-ului. Valoarea poate fi 1 sau 0 int buttonValue = digitalRead(buttonPin); if (buttonValue == LOW) { // Dacă apăsăm butonul, LED-ul se va aprinde digitalWrite(LED, HIGH); } else { // Altfel, stingem LED-ul digitalWrite(LED, LOW); } } COD PENTRU LED INTERMITENT void setup() { pinMode(8, OUTPUT); // Setăm pinul 8 ca ieșire } void loop() { digitalWrite(8, HIGH); // Aprindem LED-ul delay(1000); // Așteptăm o secundă digitalWrite(8, LOW); // Stingem LED-ul delay(1000); // Așteptăm încă o secundă } COD PENTRU SUNET int ledPin = 13; int soundSensorPin = 7; void setup() { pinMode(ledPin, OUTPUT); pinMode(soundSensorPin, INPUT); Serial.begin(9600); } void loop() { int soundValue = digitalRead(soundSensorPin); if (soundValue == LOW) { digitalWrite(ledPin, HIGH); // Activează LED-ul când detectează sunet Serial.println("Sunet detectat!"); } else { digitalWrite(ledPin, LOW); Serial.println("Liniște."); } } Link to comment
validae Posted May 18, 2024 Share Posted May 18, 2024 Ai umplut forumul cu mai multe topicuri (vreo 6) pe același subiect, am șters restul și l-am lăsat pe acesta.Dacă mai deschizi un topic cu același subiect, îți voi bloca accesul pe forum. Link to comment
BANICAALEXANDRUVASILICA Posted May 18, 2024 Author Share Posted May 18, 2024 Multumesc.. nu stiam, sunt nou pe site si nu stiam cum functioneaza, ma scuzati si multumesc ca mi-ati lasat asa. Link to comment
validae Posted May 18, 2024 Share Posted May 18, 2024 Dacă nu ți se răspunde repede aici, poate ai avea succes la Servicii Electro-Job, acolo se postează cereri de servicii contracost...iar dacă cineva e dispus să te ajute astfel, te înțelegi apoi prin mesageria MP cu el. Link to comment
BANICAALEXANDRUVASILICA Posted May 18, 2024 Author Share Posted May 18, 2024 Am inteles, multumesc de sfat ! Link to comment
zvonacfirst Posted May 18, 2024 Share Posted May 18, 2024 (edited) @BANICAALEXANDRUVASILICA, incearca codul urmator si vezi daca te satisface. Ca sa il testezi l-am simulat aici. In cerinta ta nu a fost clar ce se intampla intre secunda 41 si secunda 50, asa ca am stins ledul. #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); const int buttonPin = 7; const int ledPin = 9; const int buzzerPin = 8; unsigned long startTime = 0; bool running = false; void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(3, 0); lcd.print("CRONOMETRU"); pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); pinMode(buzzerPin, OUTPUT); digitalWrite(ledPin, LOW); digitalWrite(buzzerPin, LOW); updateLCD(0); } void loop() { if (digitalRead(buttonPin) == HIGH && !running) { running = true; startTime = millis(); } if (running) { unsigned long currentTime = millis(); unsigned long elapsedTime = (currentTime - startTime) / 1000; if (elapsedTime <= 60) { updateLCD(elapsedTime); controlLED(elapsedTime); controlBuzzer(elapsedTime); } else { running = false; digitalWrite(ledPin, LOW); digitalWrite(buzzerPin, LOW); } } } void updateLCD(unsigned long seconds) { int minutes = seconds / 60; int secs = seconds % 60; char buffer[6]; sprintf(buffer, "%02d:%02d", minutes, secs); lcd.setCursor(5, 1); lcd.print(buffer); } void controlLED(unsigned long seconds) { if (seconds >= 15 && seconds <= 25) { digitalWrite(ledPin, HIGH); } else if (seconds >= 26 && seconds <= 40) { if ((seconds % 2) == 0) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } } else if (seconds >= 41) { digitalWrite(ledPin, LOW); } } void controlBuzzer(unsigned long seconds) { if (seconds >= 50 && seconds <= 60) { if ((seconds % 2) == 0) { digitalWrite(buzzerPin, HIGH); } else { digitalWrite(buzzerPin, LOW); } } else { digitalWrite(buzzerPin, LOW); } } Edited May 18, 2024 by zvonacfirst Link to comment
BANICAALEXANDRUVASILICA Posted May 19, 2024 Author Share Posted May 19, 2024 @zvonacfirst, MULTUMESC FOARTE MULT ! Am crezut ca nu voi reusi, am mai incercat sa fac ceva, nu reuseam cum sa il fac complet. E perfect ! multumesc mult ! Ma refeream ca pana la secunda 50 sa fie ledul intermitent (sa palpaie) pana la secunda 50 si de acolo se stinge si incepe sa se activeze difuzorul. Oricum sunt foarte multumit ! MULTUMESC FRUMOS ! M-am grabit la cerinta si am pus secunda 40* ... am gresit eu la cerinta! Link to comment
zvonacfirst Posted May 19, 2024 Share Posted May 19, 2024 (edited) Trebuie să modifici funcția void controlLED(unsigned long) Încearcă direct în simularea pe care ti-am trimis-o. Nu este complicat, încearcă să înțelegi logica funcției respective. Edited May 19, 2024 by zvonacfirst Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now