Anti-vierkante-ogen-inator

by Barbsart in Circuits > Arduino

198 Views, 0 Favorites, 0 Comments

Anti-vierkante-ogen-inator

Capture.PNG

Concept

Ik kwam op het idee voor mijn project omdat ik de laatste tijd erg veel tijd achter een scherm zit, voor school, werk en vrije tijdsbesteding. Hierdoor krijg ik soms last van oog- en hoofdpijn. Als artist is het voor mij echter vaak geen optie om mijn beeldscherm felheid lager te zetten. Daarom wilde ik een apparaatje gaan maken dat ervoor zorgt dat mijn omgevingslicht altijd op een goed level zit in vergelijking met mijn laptop beeldscherm.

Er zitten lichtsensoren op het computerscherm die meten wat de felheid daarvan is, en er is een lichtsensor die het niveau aan licht in de omgeving meet. Wanneer het verschil tussen die twee te groot wordt, zet het programma een lamp aan/feller. Voor mijn project gebruik ik een LED-lampje om het concept over te brengen, maar het zou uiteindelijk bijvoorbeeld aan kamerlichten gekoppeld kunnen worden door middel van home automation.

Supplies

  • Arduino Uno
  • Experimenteerplaatje
  • Draadjes
  • 5x lichtsensoren
  • 1x LED-lampje
  • 5x weerstandjes bruin-zwart-oranje-goud
  • 1x weerstandje goud-bruin-rood-rood
  • Soldeerbout
  • Soldeertin
  • Arduino Prototyping Shield

Prototype 1

Foto-1.jpg
void setup() {<br>  Serial.begin(9600);<br>  pinMode(A0, INPUT);<br>  pinMode(A1, INPUT);<br>  pinMode(11, OUTPUT);<br>}<br><br>void loop() {<br>  int valueLight = analogRead(A0);<br>  int valueScreen = analogRead(A1) - 55;<br>  Serial.println(String("Light = ")+valueLight+" and Screen = "+valueScreen);<br><br>  if(valueScreen < 200 && valueLight < 200) { //Laptop scherm is fel en omgeving heeft veel licht<br>    Serial.println("Light off!");<br>    analogWrite(11, 0);<br>  }<br>  else if (valueScreen < 200 && valueLight > 200 && valueLight < 400)  { //Laptop scherm is fel en omgeving heeft niet heel veel licht<br>    Serial.println("Light dim!");<br>    analogWrite(11, 100);<br>  }<br>  else if (valueScreen < 200 && valueLight > 400) { //Laptop scherm is fel en omgeving is donker<br>    Serial.println("Light on!");<br>    analogWrite(11, 255);<br>  }<br>  else {<br>    Serial.println("Light off!");<br>    analogWrite(11, 0);<br>  }<br><br>  <br>}<br>

Bij het eerste prototype gebruikte ik 1 lichtsensor voor het scherm en 1 lichtsensor voor de omgeving, samen met een LED-lampje. In mijn code liet ik het lampje branden als de waardes van de sensoren aan bepaalde if-statements voldeden. Dit was echter heel moeilijk in praktijk, omdat ik constant andere waardes van de omgeving-lichtsensor kreeg en ik moeilijk met alle mogelijke omstandigheden rekening kon houden. Hier moest ik dus in het tweede prototype een oplossing voor vinden.

Een tweede probleem waas ik tegenaan liep was dat mijn laptopscherm ook verschillende lichtwaardes gaf, veroorzaakt door de kleur die zich onder de lichtsensor bevond. Een wit Word-document is namelijk een stuk feller dan Discord in dark-mode.

Op deze problemen moest ik bij het tweede prototype een oplossing zoeken.

Prototype 2

Foto.jpg
void setup() {<br>  Serial.begin(9600);<br>  pinMode(A0, INPUT);<br>  pinMode(A1, INPUT);<br>  pinMode(A2, INPUT);<br>  pinMode(A3, INPUT);<br>  pinMode(A4, INPUT);<br>  pinMode(11, OUTPUT);<br>}<br><br>void loop() {<br>  int valueLight = analogRead(A0);<br>  int valueScreen = (analogRead(A1)+ analogRead(A2) + analogRead(A3) + analogRead(A4)) / 4;<br>  Serial.println(String("Light = ")+valueLight+" and Screen = "+valueScreen);<br>  Serial.println(String("Difference of ")+(valueScreen - valueLight));<br><br>  if(valueScreen - valueLight >= 0) { //Laptop scherm is fel en omgeving heeft veel licht<br>    Serial.println("Light off!");<br>    analogWrite(11, 0);<br>  }<br>  else if (valueScreen - valueLight < 0 && valueScreen - valueLight >= -100)  { //Laptop scherm is fel en omgeving heeft niet heel veel licht<br>    Serial.println("Light dim!");<br>    analogWrite(11, 100);<br>  }<br>  else if (valueScreen - valueLight < -100) { //Laptop scherm is fel en omgeving is donker<br>    Serial.println("Light on!");<br>    analogWrite(11, 255);<br>  }<br>  <br>}

De problemen waar ik bij het eerste prototype tegenaan liep heb ik bij deze iteratie opgelost. Ik laat nu de status van het LED-lampje afhangen van de grootte van het verschil tussen de felheid van het schermlicht en het omgevingslicht, in plaats van dat ik er precieze waardes aan koppel. Op deze manier werkt het ook wanneer de felheid van het scherm lager is.

Ook heb ik meer sensoren op het laptopscherm geplaatst, waar het gemiddelde van wordt genomen. Op deze manier kijkt het naar verschillende punten op het scherm en vermijdt het verschil in kleuren op het scherm, omdat het niet naar precies 1 punt kijkt.

Versie 1 (Blok 3/4)

1.jpg
2.jpg
3.jpg

Ik heb de 4 scherm-lichtsensoren, de omgeving-lichtsensor, en het ledlampje alledrie op aparte stukjes experimenteerplaat gesoldeerd. Ze komen allemaal samen op een ander stukje, die dan weer met de Arduino is verbonden. Het idee was dat ik de scherm-sensoren op het scherm vast zou maken met een wasknijper. De omgeving-sensor zou ik vastlijmen op de andere kant van de wasknijper.

Ik liep bij het solderen tegen veel problemen aan. De laatste keer dat ik ooit een soldeerbout had gebruikt was nu al weer 6 jaar geleden en dat was niet met elektronica, dus het ging erg langzaam.
Ook braken mijn draadjes steeds af. Ik dacht eerst dat dit kwam door een te klein gedraaide striptang, dus ik heb toen mijn hele project opnieuw gesoldeerd en alle draadjes opnieuw geknipt en gestript. Maar toen ik dat af had gemaakt braken er nog steeds draadjes af, en ik weet niet waar het door komt.

Wel heb ik het project even werkend kunnen krijgen (te zien in het filmpje) maar het is nu te erg kapot om het nog te laten werken.

Versie 2 (Herkansing)

Photo 08-08-2021, 19 06 22.jpg
Photo 08-08-2021, 20 13 18.jpg
Photo 08-08-2021, 19 15 23.jpg
Photo 08-08-2021, 19 56 42.jpg
Photo 08-08-2021, 19 57 09.jpg

De feedback die ik kreeg voor het herkansen van deze module was dat ik het werkend moest krijgen en een behuizing moest maken.
Omdat de draadjes van de vorige versie steeds afbraken heb ik voor deze versie betere kwaliteit draadjes gekocht. Ook heb ik een shield aangeschaft waar ik alles op heb gesoldeerd. Hierdoor ziet het er veel netter en afgewerkter uit. Ook maakte het het aparaatje veel compacter in vergelijking met de vorige versie.
Het heeft me veel geholpen dat ik nu met al iets meer ervaring begon met het solderen in plaats van de 0 ervaring die ik voor versie 1 had. Het is een stuk netter.

Ik heb een doosje als behuizing gebruikt voor de arduino en shield. Er zitten gaten in om de draadjes eruit te laten komen en om het led-lampje te kunnen zien.

Reflectie

Photo 08-08-2021, 19 58 55.jpg

Ik heb bij dit project veel geleerd over hoe ik elektronica en Arduino kan gebruiken om een creatief project te realiseren. Ik ben best trots op hoe ver ik ermee ben gekomen, omdat ik er nog helemaal geen ervaring mee had.

Bij de eerste versie van dit project was het voor mij erg frustrerend dat het bij het solderen allemaal zo fout ging. Ik had er namelijk veel tijd aan besteed om het alsnog werkend te krijgen, en het helemaal opnieuw in elkaar gesoldeerd toen ik me realiseerde dat het aan de striptang kon liggen. Maar uiteindelijk bleven de draadjes maar breken.

Bij de tweede versie heb ik de problemen waar ik tegenaan liep opgelost wat een grote opluchting was. Ik vind dat de afwerking van de behuizing nog wel iets beter had gemogen (vooral de sensoren op het laptopscherm die ik vast heb gemaakt met wasknijpers). Maar ik heb gedaan wat ik kon met wat ik thuis kon maken ervan, aangezien de werkplaatsen op school gesloten zijn.
Ondanks dat ben ik blij dat ik het werkend heb gekregen en dat ik alle feedback heb kunnen verwerken in de tweede versie.