projekte:arduino_projekte:led_tannenbaum
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
projekte:arduino_projekte:led_tannenbaum [2017-01-17 14:25] – gamecompiler | projekte:arduino_projekte:led_tannenbaum [2021-03-27 09:59] (aktuell) – gelöscht gamecompiler | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== LED Tannenbaum ====== | ||
- | |||
- | ===== Übersicht ===== | ||
- | |||
- | Es ist mal wieder Weihnachten und man ist unmotiviert zu basteln? Baue einen LED Tannenbaum, das bauen geht schnell - das programmieren dauert ewig. Perfekt (Ihr müsst ja nicht programmieren, | ||
- | |||
- | {{: | ||
- | |||
- | Das Programm nutzt folgende Techniken: | ||
- | * Linked lists | ||
- | * Pointer | ||
- | |||
- | ===== Material ===== | ||
- | * 12x LEDs in Bunt | ||
- | * Arduino in irgendeiner Art | ||
- | * Widerstände ca. 470Ohm | ||
- | * Kabel | ||
- | * Karton / Plexiglas | ||
- | |||
- | |||
- | ==== CODE ==== | ||
- | <file lang=" | ||
- | struct node { | ||
- | int symbol; | ||
- | /* Tree chematic | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | */ | ||
- | struct node *left; //PTR to the left | ||
- | struct node *right; //PTR to the right | ||
- | int pin; //Pin, where is the led connected ? | ||
- | }; | ||
- | |||
- | |||
- | //The tree is programmed here. | ||
- | |||
- | struct node node4 = {4, 0, 0, 10}; | ||
- | struct node node5 = {5, 0, 0, 11}; | ||
- | struct node node6 = {6, 0, 0, 12}; | ||
- | struct node node7 = {7, 0, 0, 13}; | ||
- | |||
- | struct node node2 = {2, &node4, &node5, 9}; | ||
- | struct node node3 = {3, &node6, &node7, 8}; | ||
- | |||
- | struct node root = {1, &node2, &node3, 7}; | ||
- | |||
- | // | ||
- | |||
- | |||
- | struct node *state = &root; // The code should start at top of the tree. | ||
- | |||
- | void setup() | ||
- | Serial.begin(9600); | ||
- | |||
- | //Init all pins | ||
- | for(int i = 7; | ||
- | pinMode(i, | ||
- | } | ||
- | |||
- | //RUDOLPHS NOSE PWM PINS | ||
- | pinMode(3, | ||
- | pinMode(5, | ||
- | pinMode(6, | ||
- | } | ||
- | |||
- | long tree_oldmillis = 0; | ||
- | const int UNIT = (2+1)*1000; //delay without using delay | ||
- | |||
- | long rudolph_oldmillis = 0; | ||
- | const int RUDOLPH_DELAY = round(UNIT / 3); //delay without using delay for rudolphs nose | ||
- | void loop() | ||
- | |||
- | //Rudolphs nose | ||
- | if (millis() >= rudolph_oldmillis + RUDOLPH_DELAY) { // | ||
- | rudolph_oldmillis = millis(); | ||
- | //Write random color | ||
- | analogWrite(3, | ||
- | analogWrite(5, | ||
- | analogWrite(6, | ||
- | } | ||
- | | ||
- | //Christmas tree | ||
- | if (millis() >= tree_oldmillis + UNIT) { //UNIT Delay without delay, | ||
- | digitalWrite(state-> | ||
- | tree_oldmillis = millis(); | ||
- | Serial.println(state-> | ||
- | |||
- | if (random(1, 128) >= 64) { // | ||
- | if (state-> | ||
- | state = state-> | ||
- | } | ||
- | else { | ||
- | state = &root; //It got no childs (damn - thats terrible), jump back to root to make some | ||
- | } | ||
- | } | ||
- | else { | ||
- | if (state-> | ||
- | state = state-> | ||
- | } | ||
- | else { | ||
- | state = &root; //Nope, jump back to root | ||
- | } | ||
- | } | ||
- | digitalWrite(state-> | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | |||
projekte/arduino_projekte/led_tannenbaum.1484659534.txt.gz · Zuletzt geändert: 2022-11-17 22:34 (Externe Bearbeitung)