Autor: Vasilache Andra
Grupa: 336CA
Pentru a realiza acest proiect vom avea nevoie de:
Componente | Numar | Descriere generală |
---|---|---|
Placa de dezvoltare Arduino Uno | 1 | Placa de dezvoltare folosita si in cadrul laboratoarelor. |
Senzor lumina ambientala TEMT6000 | 1 | Folosit pentru ajustarea automata a luminii lampii (Sensibilitate maxima: 570nm). |
Modul Bluetooth 4.0BLE (TI CC2251) | 1 | Permite controlul bluetooth al lampii. |
Senzor de temperatură (KY-028) | 1 | Permite schimbarea culorii lampii in functie de temperatura ambientala. |
Butoane | 3 | Pentru controlul manual al modulelor (unu de pornire, unul pentru luminozitate si unul pentru temperatura). |
Led RGB | 4 | Pentru lampa propriu-zisa. |
Pe langa aceste componente am mai fost utilizate 3 butoane, doua breadborduri, rezistoare si diverse tipuri de fire (tata-tata si mama-tata)
Schema electrica:
Functiile principale ale codului de implementare sunt:
void setBrightnessByLight() { int Lvalue = analogRead(lightSensor); // read the light value if (Lvalue < LIGHT_LOW_MED) { brightness = 2; } else if (Lvalue > LIGHT_MED_HIGH) { brightness = 0; } else { brightness = 1; } }
int getBrightnessValue() { switch (brightness) { case 0: return LED_LOW; case 1: return LED_MED; case 2: return LED_HIGH; default: return LED_OFF; } }
void setTemperature() { int Tvalue = analogRead(tempSensor);// read the temperature value if (Tvalue < TEMP_LOW_MED) { temperature = HOT; } else if (Tvalue > TEMP_MED_HIGH) { temperature = COLD; } else { temperature = TEMPERATE; } }
void handleBluetoothCommand(char command) { switch (command) { case 'm': operationMode = AUTOMATIC; break; case 'M': operationMode = MANUAL; break; case 'b': operationMode = MANUAL; brightness = (brightness + 1) % 3; break; case 'B': operationMode = MANUAL; brightness = brightness == 0 ? 2 : (brightness - 1); break; case 't': operationMode = MANUAL; temperature = (temperature + 1) % 3; break; case 'T': operationMode = MANUAL; temperature = temperature == 0 ? 2 : (temperature - 1); break; case 'p': case 'P': poweredOn = !poweredOn; if (!poweredOn) { analogWrite(RED_PIN, 255); analogWrite(GREEN_PIN, 255); analogWrite(BLUE_PIN, 255); } else { operationMode = AUTOMATIC; } break; default:; } }
A iesit dragut si am facut tot ce mi-am propus.
Link pagina: https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/ambientlamp
Link documentatie: https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/ambientlamp?do=export_pdf
Cod: Cod software proiect
Demo: Playlist demos