A projectben egy közlekedési lámpát szimulálunk. A szükséges anyagok:
A lenti képen az összeállított áramkőr látható. Áramkorlátozó ellenállások értéke 220 Ohm. A LED-ek anódjai a következő GPIO portokhoz vannak kötve:

A kód első részében (#define) definiálom a LED-ekhez tartozó GPIO protokat, valamit a működéshez szükséges időket. A state változó fogja tárolni azt, hogy a lámpa melyik állapotban van, a lastChange pedig az utolsó változás idejét. A setup() metódusban az alapértékeket határozom meg. Itt a pirossal kezdünk, ezt fel is kapcsolom itt. Ahhoz hogy a LED-eket használni tudjam, be kell állítani a PIN típust OUTPUT-ra, ezzel lehetőség lesz 5V tápfeszültséget küldeni rájuk. A trafficLight() void metódus fogja a kapcsolgatást intézni. Első lépésként az aktuális időt mentjük. Ez az idő az UNO bekapcsolása óta eltelt idő ms-ben. Ez mindíg növekszik. A switch szerkezet kezeli az állapotokat. Ha 0 állapotban vangyunk, ez a kezdés, akkor itt fogjuk beállítani a következő állapotnak megfelelő ledeket, de csak akkor, ha a meghatározott idő (RED_PERIOD) letelt. Ebben az esetben bekapcsolja a sárgát is és a state is új értéket kap. Az if blokkban tehát nem az aktuális üzemmódot állítom be, hanem azt, hogy mi lesz a következő. Jogos kérdés lenne, hogy mit vacakolok az időkkel, mert van delay() is. Igen van de ezzel az a gond, hogy leállítja az egész progam futását, ami azért nem a legjobb, mert ha egy PIN-re jön egy jelváltozás amíg fel van függesztve a program akkor azt nem fogod tudni feldolgozni, tehát elveszik. Ezért nem javasolják a delay() használatát. A switch további részeit nem részletezem, a fenti logika alapján működnek.