Stap 5: De klok programmeren voor beginners: Cap sensoren
Capaciteit sensoren zijn keurig weinig apparaten; Zie je ze hele tijd omdat ze worden gebruikt voor dingen zoals lampen die helderheid veranderen door geraakt. De breakout board die ik, van Adafruit gebruikte, uitgangen of de draden zijn geraakt met I2C en stuurt van nummers als machten van 2 (ik ben gewoon leren dit, misschien u ook). Voor de meesten van u zullen dit te simplistisch, maar het nog steeds verwart me, dus ik een tabel maakte van hoe het GLB reageert op geraakt.
De oproep om te zien als iets heeft geraakt is "aangeraakt" en kan worden gecodeerd als volgt:
Als (aangeraakt == 1) {iets doen bij de eerste draad- en alleen de eerste één - aanraking is}
Bijvoorbeeld, als de 5e draad is aangeraakt, ziet de Arduino' ' het getal 16. Veronderstel verder, dat de 3e draad en 6e draden zijn aangeraakt op hetzelfde moment, zou de Arduino zien welk nummer 36. Waarom? omdat de draden aangesloten op de sensor van de capaciteit zijn genummerd van 0-7 en de 3de draad de nummer 2 heeft ^ 2 = 4 en de 6e wire heeft de nummer 2 ^ 5 = 32 en de som van de twee getallen is 4 + 32 = 36.
Nog verward? Probeer deze video als een plaats om te beginnen... (het hielp me).
Dus, met 8 draden aangesloten op de sensor van de capaciteit, kunnen wij veel verschillende combinaties [(2^8)-1 = 255 combinaties] om verschillende dingen te doen. Ik alleen gecodeerd de klok voor 13 verschillende dingen. Ze zijn: iets over de persoon 1, iets over de persoon 2, iets over hen samen, plus uren, min uren en minuten, minus minuten, plus minus dagen, plus maanden, verminderd met maanden, dagen plus jaren, en minus jaar.
Als je kijkt naar de Arduino-code ziet u waar ik heb de controle van de Arduino voor de verschillende combinaties die betekenis hebben. Elke kleine fragment zoals deze:
anders als (aangeraakt == 36)
{k = plusmin();}
verlangt dat een kleine subroutine om specifiek iets te doen. Het bovenstaande voorbeeld roept op tot de subroutine om de minuten in te stellen vooruit door één minuut.