Mein erstes eigenes Netduino Projekt. Mit 6 LEDs bilde ich die Funktion eines Würfels nach.

Über den Onboard-Switch wird eine neue Runde eingeleitet. Es werden 2x nacheinander alle LEDs angeschalten um eine kleine Animation zu machen und danach wird das Ergebnis über die LEDs angezeigt. Zusätzlich wird im Debugger ausgegeben was der “Würfel gerade macht”.

Für Vorschläge was man besser / anders machen kann, bin ich natürlich immer offen.

Dice (29)

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;
 
namespace _Test
{
    public class Dice
    {
        public static OutputPort led1 = new OutputPort(
            Pins.GPIO_PIN_D1,
            false);
        public static OutputPort led2 = new OutputPort(
            Pins.GPIO_PIN_D2,
            false);
        public static OutputPort led3 = new OutputPort(
            Pins.GPIO_PIN_D3,
            false);
        public static OutputPort led4 = new OutputPort(
            Pins.GPIO_PIN_D4,
            false);
        public static OutputPort led5 = new OutputPort(
            Pins.GPIO_PIN_D5,
            false);
        public static OutputPort led6 = new OutputPort(
            Pins.GPIO_PIN_D6,
            false);
        public static InputPort button = new InputPort(Pins.ONBOARD_SW1, false, Port.ResistorMode.Disabled);
 
        public static int Result;
        public static int Round;
 
        public static void Main()
        {
            while (true) // do this "forever" :)
            {
                if (!button.Read())
                {
                    Round += 1;
                    Debug.Print("-----------------------");
                    Debug.Print("Round: " + Round);
                    Debug.Print("-----------------------");
 
                    Debug.Print("Clear all leds...");
                    ClearLeds();
 
                    Debug.Print("Go around: 1...");
                    LedCircle(100);
                    Debug.Print("Go around: 2...");
                    LedCircle(200);
 
                    Debug.Print("Dice!!!");
                    DisplayRandomNumber();
                    Debug.Print("Result: " + Result);
 
                }
            }
        }
 
        private static void LedCircle(int sleeptime)
        {
            led1.Write(true);
            Thread.Sleep(sleeptime);
            led1.Write(false);
            led2.Write(true);
            Thread.Sleep(sleeptime);
            led2.Write(false);
            led3.Write(true);
            Thread.Sleep(sleeptime);
            led3.Write(false);
            led4.Write(true);
            Thread.Sleep(sleeptime);
            led4.Write(false);
            led5.Write(true);
            Thread.Sleep(sleeptime);
            led5.Write(false);
            led6.Write(true);
            Thread.Sleep(sleeptime);
            led6.Write(false);
        }
 
        private static void DisplayRandomNumber()
        {
            Random rd = new Random();
            Result = 0;
 
            while (Result == 0) // 0 not allowed
            {
                Result = rd.Next(7);
            }
 
            switch (Result)
            {
                case 1:
                    led1.Write(true);
                    break;
                case 2:
                    led1.Write(true);
                    led2.Write(true);
                    break;
                case 3:
                    led1.Write(true);
                    led2.Write(true);
                    led3.Write(true);
                    break;
                case 4:
                    led1.Write(true);
                    led2.Write(true);
                    led3.Write(true);
                    led4.Write(true);
                    break;
                case 5:
                    led1.Write(true);
                    led2.Write(true);
                    led3.Write(true);
                    led4.Write(true);
                    led5.Write(true);
                    break;
                case 6:
                    led1.Write(true);
                    led2.Write(true);
                    led3.Write(true);
                    led4.Write(true);
                    led5.Write(true);
                    led6.Write(true);
                    break;
                default:
                    Debug.Print("Error: " + Result + " is bigger then 6!");
                    break;
            }
        }
 
        private static void ClearLeds()
        {
            led1.Write(false);
            led2.Write(false);
            led3.Write(false);
            led4.Write(false);
            led5.Write(false);
            led6.Write(false);
        }
    }
}