Stap 3: De Code
Sommige van de code komt rechtstreeks vanuit het voorbeeld schetsen die kwam met het schild en RTC-module. De rest was echt gekookt door jou en zwaar commentaar voor uw gebruiksgemak. Het één ding dat u moeten zult om op te letten is de verschillende manieren waarop die u voor het TFT-scherm instellen kunt. Het is ook beschikbaar als een eenvoudige breakout board (zonder de joystick of SD-kaartlezer) en de pinout is anders daarvoor. Er zijn ook meerdere versies van het schild, die worden aangegeven door de kleur van het tabblad op de screen protector. Mine kwam met een groen lipje maar alleen gewerkt met de zwarte tabblad coderegel ingeschakeld. Hebt u enkel een paar dingen om uit te proberen om jou werken. Verwijzen naar de voorbeeld-schetsen voor hulp.
U zult moeten omvatten de volgende bibliotheken:
- Wire.h
- SPI.h
- RTClib.h
- Adafruit_GFX.h
- Adafruit_ST7735.h
Zorg ervoor dat u die hebt gedownload en geïnstalleerd in de IDE voordat u gaan. De eerste drie moeten in die exacte volgorde of krijg je compile errors. Ik was stumped voor vrij een tijdje voordat ik dat kleine lekkernij in een forum ergens gevonden.
Ik zal de code een beetje uitleggen. Om te kiezen van een kleur op het scherm te gebruiken hebt u een 16-bit hex waarde te gebruiken, maar het is in een rare configuratie die is een beetje moeilijk te begrijpen aanvankelijk. Het heet 565 kleur en dat is omdat de groene waarde wordt anders behandeld. Er is vijf bits voor rood en blauw, maar omdat je ogen gevoeliger voor groen is het 6 bits gebruikt voor die. Dus hebt je 16 waarden voor rood en blauw, en 32 waarden voor groen. Maar dat is niet alles. De laagste waarde is eigenlijk nul, zodat de hoogste waarde eigenlijk 15 of 31 is.
Terwijl u kunt uitstappen van een hex grafiek en sommige converteren het is soort van lastig doen te worden voortdurend te typen in de kleurwaarden in hex als 0xFFFF voor white (u kunt verklaren sommige kleurwaarden, de top van de schets zien) de GFX bibliotheek biedt een leuke kleine functie om te zorgen voor de dingen voor u met behulp van waarden van 0 tot 255.
Wat het tijdgedeelte van de schets doet is neem de uurwaarde en de kaart-functie gebruiken om de 24 uur, 60 minuten, en 60 seconden converteren naar waarden tussen 0 en 255. Vervolgens stekkers het die variabelen in het tft. Color565 functie en het zorgt voor het bedenken van de hexadecimale waarde. Uren geven de waarde voor rood, minuten het groen en seconden van de blauwe.
redValue = map(hour(t), 23, 0, 0, 255);
grnValue = map(minute(t), 59, 0, 0, 255);
bluValue = map(second(t), 59, 0, 0, 255);
tft.fillRect (0, 0, 50, 160 (tft. Color565(redValue, grnValue, bluValue)));
Dat is wat de schets gebruikt om de kleuren van de tekst en het veld instellen. Ik gesold met de afschaffing van de zwarte balk en in plaats daarvan de tijd weergegeven in zwart met een duidelijke tekst op de achtergrond, maar het was een beetje flickery. Dat is waarom de bar bestaat en het trekt twee rechthoeken van kleur in plaats van gewoon het scherm vullen met kleur.
Wat betreft de kleuren die u kunt krijgen om te weten waar je in de dag of uur met enkel een snelle blik bent.
Net na middernacht het erg donker is omdat de rode (uren) waarde nul en zo is zijn de blauw en groen (minuten en seconden). Zoals de seconden aan te kruisen dingen krijgen blauwer en blauwer tot de minuut teken over en een klein beetje groen is toegevoegd en de blauwe waarde gaat terug naar nul. Wanneer het is bijna een uur dingen is met de seconden dingen rekening teal als zeer groene zullen kruipen ze.
Door lunchtijd is er een behoorlijke hoeveelheid rood in het spel dus dingen beginnen te krijgen een beetje meer paarse.
En tegen het einde van de dag, vooral net voor middernacht dingen zijn zeer helder omdat alle waarden zeer hoog op dit punt zijn.
Hebt u ook het schild met de joystick is het zeer gemakkelijk om toe te voegen wat code als u wilt instellen van de helderheid. Als u de eenvoudige route bent gegaan kunt u gewoon twee knoppen toevoegen op elke twee pinnen dat een digitalRead doen kunnen. Gebruik een bel de functie helderheid en dan de andere twee voor op en neer. Sloeg Selecteer opnieuw om af te sluiten.
Als u wilt volledig weg met knoppen doen kan je ofwel program van de helderheid afhankelijk van tijd van dag, of gebruik een foto-sensor en controle met ambient lichtniveaus.
Hier is de code: