This shows you the differences between two versions of the page.
pm:prj2023:alucaci:dna_lamp [2023/05/28 20:41] adina.grecu [19.05.2023] |
pm:prj2023:alucaci:dna_lamp [2023/05/28 21:30] (current) adina.grecu [19.05.2023] |
||
---|---|---|---|
Line 124: | Line 124: | ||
{{:pm:prj2023:alucaci:adina-driver.jpeg?130 |}} | {{:pm:prj2023:alucaci:adina-driver.jpeg?130 |}} | ||
{{:pm:prj2023:alucaci:adina-analog.jpeg?130 |}} | {{:pm:prj2023:alucaci:adina-analog.jpeg?130 |}} | ||
+ | |||
+ | ==== 18.05.2023 ==== | ||
+ | Am facut modelul de print 3D pentru lampa efectiva si le-am pus la printat. Am uitat sa adaug gauri pentru senzori, asa ca ele trebuie facute de mana. | ||
+ | |||
+ | {{ :pm:prj2023:alucaci:capac-lampa.jpeg?300 |}} | ||
+ | {{ :pm:prj2023:alucaci:lampa1.jpeg?300 |}} | ||
+ | {{ :pm:prj2023:alucaci:lampa2.jpeg?300 |}} | ||
+ | |||
==== 19.05.2023 ==== | ==== 19.05.2023 ==== | ||
Am realizat codul pentru 4 moduri de iluminare si modul automat dupa senzori. | Am realizat codul pentru 4 moduri de iluminare si modul automat dupa senzori. | ||
- | La apasarea butonului automat, lampa isi va modifica luminozitatea ledurilor si culoarea lor in functie de lumina respectiv temperatura. De asemenea, motorul se invarte: | + | La apasarea butonului automat, lampa isi va modifica luminozitatea ledurilor si culoarea lor in functie de lumina respectiv temperatura. De asemenea, motorul se invarte. In cod, acest lucru se realizeaza prin functia handleAutoMode. |
+ | |||
+ | Cand se da toggle la manual mode, se itereaza prin 4 moduri. Se comuta fizic la fiecare apasare de buton. Cele 4 moduri definite sunt de rotire cu lumini roz, rotire si cercuri cu culori multiple, fara rotire si culoare galbena, rotire si culori alternante. | ||
+ | |||
+ | Codul pentru lampa: | ||
+ | {{:pm:prj2023:alucaci:adn_lamp.txt|}} | ||
+ | |||
+ | Am intampinat probleme la rotirea motorului, care nu are suficienta putere sa se roteasca folosind o baterie. | ||
- | // Check if Auto mode button is pressed | + | Demo: |
- | if (buttonAutoState == HIGH || RemoteXY.auto_mode) { | + | Mod 1 |
- | isAutoMode = true; | + | {{ :pm:prj2023:alucaci:manual1.jpeg?300 |}} |
- | isManualMode = false; | + | |
- | } | + | |
- | void handleAutoMode(int brightness, float temperature) { | + | Mod 2 |
- | // Adjust brightness based on luminosity threshold | + | {{ :pm:prj2023:alucaci:manual2.jpeg?300 |}} |
- | int adjustedBrightness = map(brightness, 0, 255, 255, 0); | + | |
- | FastLED.setBrightness(adjustedBrightness); | + | |
- | // Map temperature to a color in the gradient | + | |
- | CRGB color = ColorFromPalette(temperatureGradientPalette, map(temperature, 15, 50, 0, 255)); | + | |
- | fill_solid(leds, NUM_LEDS, color); | + | |
- | FastLED.show(); | + | |
- | // Activate motor rotation based on brightness | + | |
- | if (brightness < luminosityThreshold) { | + | |
- | isMotorRunning = true; | + | |
- | } else { | + | |
- | isMotorRunning = false; | + | |
- | } | + | |
- | RemoteXY.light_sensor = map(photoresistorValue, 0, 1023, 0, 100); | + | |
- | RemoteXY.temp_sensor = map(temperature, 0, 100, 0, 100); | + | |
- | snprintf(RemoteXY.light_text, sizeof(RemoteXY.light_text), "%.2f", photoresistorValue); | + | |
- | snprintf(RemoteXY.temp_text, sizeof(RemoteXY.temp_text), "%.2f", temperature); | + | |
- | } | + | |
+ | Mod 3 | ||
+ | {{ :pm:prj2023:alucaci:manual3.jpeg?300 |}} | ||
+ | Mod 4 | ||
+ | {{ :pm:prj2023:alucaci:manual4.jpeg?300 |}} | ||
+ | ===Link demo video=== | ||
+ | https://youtube.com/shorts/DDmrvWfFnrI?feature=share | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |