Dagliga Standup Timer (2 / 2 steg)
Steg 2: Programmering
Teori...
Displayen är lite dum, den arbeten lik en oldscool TV: n, The 32 pixlar av en rad lagras i skift register, så U kör i seriella data för varje rad. Markera raden med ABCD anslutningarna, dessa är avkodas i 1 av 16 rader och genom att dra OE ner, raden lyser upp, sedan U stänga linjen , serialisera data för nästa rad i, slå nästa rad på och så vidare...
Cykling genom raderna behöver lite smart timing annars kommer det flimrar eller konsumerar för mycket CPU-tid. Det är därför jag ändrade koden för att använda timer mellanjobbet och SPI.
Avbrottet (Timer1 Overflow) säkerställer att den uppdateras så oavsett vad ditt program är upptagen med och SPI är bara ett bättre sätt att serialisera data ur en port, använder den, är mycket snabbare sedan växla en pin 8 gånger upp och ner eftersom den använder hårdvara (SPI - SerialPeripheralInterface) som gör det åt oss och kräver endast en skrivåtgärd per byte - Pin växla kräver cirka 24 digitalWrite samtal per byte , lite skiftande och och och...
Knappen är så enkelt som vissa Arduino exempel. Inget fancy här. Knappen används för att vakna upp timern och hoppa över människors initialer till nästa. Jag använde faktiskt en rörelsesensor, bara för att det är svalare när en knapp, kan du interagera med en blinkning. uuuhhh så coool.
Programmet visar initialerna på killen som pratar och en nedräkning timer, det börjar blinka när den är nära noll. På toppen av källan kan notering du ange antalet människor, deras initialer och tid för mötet.
Källkoden är ansluten...
- DailyStandupTimer.zip innehåller skissen, vanligen går till dokument/Arduino
- TimerAndLED_library.zip är de lappat libs används. brukar gå till dokument/Arduino/bibliotek (starta om Arduino GUI efter kopiering libs det)
Potentiella förbättringar:
- Verkliga viloläge när av - där är några doc för som på webben.
- Snyggare grafik, skulle kräva mer advance teckensnitt målning, för tillfället teckensnittet är bara kopierade byte klokt, det är därför det kan endast dras på pos 0,8,16,24. Mer flexibilitet, måste det vara skiftat till en pixel position och or'ed till visningsbufferten.