Jump to content
ELFORUM - Forumul electronistilor

Proiect: programare placuta arduino


BANICAALEXANDRUVASILICA

Recommended Posts

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
  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

  • BANICAALEXANDRUVASILICA

    4

  • validae

    2

  • zvonacfirst

    2

Top Posters In This Topic

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

Multumesc.. nu stiam, sunt nou pe site si nu stiam cum functioneaza, ma scuzati si multumesc ca mi-ati lasat asa.

 

 

Link to comment

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, 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 by zvonacfirst
Link to comment

@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

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 by zvonacfirst
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines