This is an old revision of the document!


Lampă Inteligentă

Introducere

Scopul acestui proiect este realizarea unei lămpi inteligente care reflectă starea utilizatorului. Ideea a provenit de la dorința de a face un proiect interactiv care poate fi folosit zilnic de utilizator. Lampa intelgientă se poate dovedi utilă pentru a crea un ambient în concordanță cu starea utilizatorului sau pentru a-i oferi starea dorită (exemplu: albastru este o culoare ce calmează).

Descriere generală

Culoarea lămpii se va schimba în funcție de gesturile utilizatorului cu ajutorul unui senzor de gesturi astfel:

  • dreapta = entuziasmat, agitat - lumină roșie
  • stânga = calm, relaxat - lumină albastră
  • jos = creativ, fericit - lumină galbenă
  • sus = optimist - lumină mov

Lampa se va opri automat după o perioadă de 60 de secunde. Apăsând pe buton, utilizatorul va putea opri/porni lampa. De asemenea, utilizatorul va putea seta și intensitatea luminii cu ajutorul unui potențiometru.

Hardware Design

  • Senzor gesturi APDS-9960
  • Arduino Uno
  • 3 LED-uri: R,Y,B
  • Potențiometru
  • Buton
  • Rezistente

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Mediul de dezvoltare pentru acest proiect a fost Arduino IDE. Biblioteci utilizate:

  • SparkFun_APDS9960 - pentru sezorul de gesturi.

Implementare:

  • Variabila counter este folosită pentru a ști când lampa este pornită și când este oprită. Această variabilă contorizează numărul de apăsări de buton. Counter inițial este 0, deci: când counter este număr par, lampa va fi oprită (toate LED-urile sunt oprite), iar când counter este număr impar, înseamnă că lampa este pronită.
  • Pentru fecare intrerupere generată de buton, counter va crește
ISR(PCINT2_vect) {
  // Debounce code here
  // ....
    // Check if button was pressed
    if (buttonState == HIGH && digitalRead(4) == LOW) {
      // Increment counter
      counter++;
      // Reset timer
      time = 0;
    }
    // Updates
    // ......
  }
}
  • După verificarea de pornire/oprire a lămpii, se va mai verifica si variabila timer, care ține evidența secundelor trecute de la setarea luminii.
// Initializare variabile
#define BUTTON PD4
int counter = 0;
int buttonState = HIGH;
int lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 100;
int seconds = 0;
// Other initializations
// .......

void setup() {
  // Initialize Serial port
  Serial.begin(9600);
 
  // Initialize interrupts
  setup_interrupts();
 
  // Setup code here
  // .....
}

void setup_interrupts() {
  // Enable pin change interrupt (for button)
  PCMSK2 |= (1 << PCINT20);
  // Set PCIE2 to enable PCMSK2 scan
  PCICR |= (1 << PCIE2);

  TIMSK1 |= (1 << OCIE1A); // enable interrupts TIMER1_COMPA
}

void loop() {
  // Potentiometer code
  // ......
  /* If counter odd number, lamp is on
  if the seconds limit has not been reached
  execute tasks */
  if (counter % 2 == 1 && seconds < TIME_LIMIT) {
    // Handle gesture sensor
    // ......
  } else {
    // Turn off lamp
    // ......
  }
}

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/vstoica/maria_ana.draghici.1685186908.txt.gz · Last modified: 2023/05/27 14:28 by maria_ana.draghici
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