Stap 2: Code
De web serverkant van dit project is zeer vergelijkbaar met de LED Tower Instructable. Er zijn vele manieren om de aanpak van dit soort projecten, en deze werkt zonder routers en dynamische DNS configureren, maar vereist een ISP webhost met PHP en een MySQL-database, die gangbaar zijn.
De kern van dit systeem is een MySQL database, en de gekoppelde SQL-script zal de structuur gebruikt door de code maken. Het is een heel eenvoudig schema - slechts aan één tabel met een veld voor de opdrachten samen met velden index/sleutel en tijdstempel.
De bijgevoegde PHP web-pagina wordt de gebruikersinterface voor opdrachten aan de wachtrij toevoegen en beheren van hen. Het is zeer eenvoudig en kan worden verbeterd met een bos van JavaScript, maar we zijn schoppen het old-school vandaag. :-)
De pagina ziet u een formulier voor het toevoegen van opdrachten verwerkt geen opdrachten verwijderen en toont de lijst met huidige opdrachten allemaal in het ene pagina/script. Het het schermschot de intro en deze stap zijn eigenlijk op dezelfde webpagina. Elke nieuwe opdracht moet worden toegevoegd in een paar plaatsen in de PHP code/HTML, en ook in de Arduino schets, maar het gaat erom dat nieuwe opdrachten niet heel vaak zal worden toegevoegd. De pagina heeft ook enkele macro-opdrachten om het gemakkelijker maken elk jaar. Die kunnen worden toegevoegd zonder de Arduino-code te wijzigen.
Aan de Arduino-kant, de bijgevoegde schets maakt verbinding met uw Wifi-netwerk, ladingen van de opdrachten, en deze in een lus worden uitgevoerd. Een verborgen PHP-pagina wordt gebruikt voor het ophalen van de commando's - het gewoon resulteert in de lijst, en verwijdert niet hen voor dit project aangezien de hoofdwebpagina waar de opdrachtenlijst wordt beheerd. U kunt het uitvoeren van die verborgen pagina in een browser om te zien of het werkt.
De opdracht formaat is eenvoudig - gewoon een door komma's gescheiden lijst met parameters.
Het script laadt eens alleen de opdrachten omdat we over het algemeen de animatie eenmaal per vakantie stellen en ze inschakelen. Het kan niet zijn de moeite waard om het laden van de opdrachten herhaaldelijk in de lus, omdat je moeten zou beslissen wanneer u wilt de server - elke stap van elke animatie, tussen stappen, of met elke lus poll. Veranderen van de opdrachten is meestal cool wanneer u aan buren pronken :-) Als u gebruiken een lus wilt, heeft de Xively CC3000 project gekoppeld vanaf de site van Adafruit een herhalende client-voorbeeld voor het CC3000 schild.
Een andere manier om dit project te doen is met een kern van Spark. Dat apparaat is als een Arduino + Wifi schild, en u kunt het programma via een web IDE, dus dat zou maken het mogelijk om al dit project zonder een database en een aparte server te doen. U kunt ook een front-endtoepassing volledig in JavaScript te doen, en hun REST API gebruiken om te praten met de Spark kern. Een Instructable voor een andere dag!