Würfel
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); } } } |


:biggrin:
Hallo Jonny
Verfolge Deine tollen Beiträge und habe heute auch mein Netduino erhalten :) Vielleicht für den Crack etwas doofe Fragen, habe aber bis jetzt noch keine Antwort gefunden: Wo ist der Befehlssatz und vor allem die “E/A Definition” für das Netduino zu finden (zB. GPIO_PIN_D1, aber wie heisst dann der analoge Eingang) oder entstammen diese dem C# ? Und ist es möglich zB einen Analogwert zu einem bestimmten Zeitpunkt Resistent auf dem Netduino abzulegen?
Ich komme eben von der SPS (Siemens) Seite und möchte mir jetzt frisch C# aneignen…
Freue mich schon auf Deinen nächsten Beitrag, mfg Martin