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