Stap 4: Programmeren van de Arduino
Fotocellen
Zoals eerder is beschreven, waren zowel de fotocellen en de servo's verbonden aan de dezelfde Arduino. De Arduino is dan geprogrammeerd om te lezen input van de fotocellen. De Arduino uitgangen geheeltallige waarden tussen 0 en 1023 voor verschillende helderheden. De code heeft een variabele voor de drempel. Dit moet worden ingesteld door het meten van de output van de fotocel voor achtergrond licht en met de laser wijzen. Wij trachten opwaarts using waarden tussen de 200 en 900, afhankelijk van hoe snel de laser verplaatst en hoeveel licht er in de kamer was die we gebruikten.
Servo 's
De servo's kunnen worden verplaatst door het wegschrijven van een waarde tussen 0 en 180, die gelijk is aan hun volledige bereik van 180 graden. Afhankelijk van welke fotocellen de drempel overtroffen, past de servo's de laser positionering te blijven puntige naar het doel.
Zorg ervoor om te controleren in welke richting de servo's draaien. In ons geval was de horizontale servo op positie 0 in het linkeruiteinde en bij 180 in uiterst rechts. De verticale servo was op positie 0 bovenaan en bij 180 onderaan. Dit is anders, moet de code worden aangepast voor de servo's nog steeds verplaatsen van de laser, zoals verwacht.
Twee van de belangrijkste mechanismen zijn geïmplementeerd:
1 / kleine aanpassingen
In de eerste plaats de fotocellen die het werkelijke doel omringen veroorzaken de servo's aan het verplaatsen van de laser in de richting van het doel, bijvoorbeeld als het juiste fotocel wordt geraakt door de laser, zal het naar links verplaatsen.
2 / zoeken patronen
Het tweede mechanisme zijn verschillende zoekpatronen. Als geen fotocel detecteert de laser, maar er is ook geen informatie over eerdere contacten met fotocellen opgeslagen, zal de laser beginnen uit te voeren een zoekpatroon. De eerste zoekpatroon die werd geïmplementeerd gescand gewoon een vierkant waarin men het doel moest worden door vegen op en neer, langzaam verhuizen sideways terwijl doen.
De tweede zoekpatroon is geavanceerder: het begint met het scannen in het centrum van de vierkante ruimte, dan spiralen naar buiten totdat het de volledige gebied is bedekt. Het belangrijkste voordeel hiervan is dat het zoeken op de locatie met de hoogste kans begint op het vinden van het doel. Een ander verschil met de eerste zoekalgoritme is dat dit zoekpatroon past het gebied gescand telkens wanneer de laser met het doel verbindt: deze coördinaten zijn dan reeks als het nieuwe centrum van het zoekgebied het signaal moet worden verloren. Beide zoekpatronen start opnieuw als het doel niet verworven is nadat het gebied is bedekt.
Hieronder vindt u voorbeelden van zowel zoekpatronen en twee Arduino codebestanden die het systeem uitgevoerd met elk van de zoekpatronen.