aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: 7c4725620b88414b7d6829178cfe60a0d8483e91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# avans-ledcube

(in dutch again haha)

onze ledcube is iets anders dan de gemiddelde ledcube. onze leds zijn
aangesloten als een 8x8 matrix waarbij alle anodes in rijen, en alle cathodes
in kolommen zijn verbonden. hierdoor gebruikt onze ledcube maar acht
weerstanden inplaats van zestien, en geen transistoren of mosfets. ook worden
maar drie uitgangen van de arduino gebruikt voor de seriële ingang, seriële
klok, en de latch klok van het shiftregister.

## coole functies

- algoritme om lege scanrijen over te slaan voor een hogere felheid
- instelbare lengte en volgorde van de effecten die afspelen
- makkelijk uitbereidbaar met nieuwe effecten
- goed gedocumenteerd
- opgesplitst in losse bestanden voor overzichtelijkheid
- ingebouwde led map zodat je coordinaten kunt gebruiken in je animatiecode
- veganistisch vriendelijk

## software

de software is als gevolg van de ongewone aansluitingswijze ook anders
ingericht. de atmega328p heeft ingebouwde pwm timers, die je zou kunnen
gebruiken om snel door de vier lagen van de ledcube heen te schakelen. omdat
deze timers los van je code draaien kun je de ingebouwde `delay()` gewoon
gebruiken om de animaties makkelijker te implementeren, maar dit werkt alleen
wanneer je transistoren gebruikt en ze direct op pwm uitgangen aansluit.

daarom gebruikt onze software geen `delay()` of andere 'blokkerende' functies,
maar timers. dit zorgt ervoor dat de ingebouwde `loop()` functie van de arduino
vaak genoeg draait om het te laten lijken alsof alle led's van de ledcube
tegelijkertijd aan zijn.

de software is opgesplitst in losse bestanden om overzichtelijkheid te
behouden. alle documentatie bevindt zich in de header (.h) bestanden, is in het
engels, en is in doxygen formaat. hier is een beknopte beschrijving van de
bestanden:

```
software/
├── animation.h      --
├── animation.ino    helpfuncties voor animaties
├── consts.h         algemene constantes
├── effects.h        bevat ook opties voor de diavoorstelling van animaties
├── effects.ino      de animaties die weergeven worden
├── readme.md        dit bestand
├── scan.h           --
├── scan.ino         functies omtrent het schakelen van de rijen
├── shift.h          --
├── shift.ino        functies die het shiftregister besturen
├── software.h       --
├── software.ino     hoofdbestand/ingangspunt
├── util.h           --
└── util.ino         gereedschapsfuncties
```