/// <summary> /// Main game loop /// </summary> private static void _MainLoop() { // Draws out the display _DrawScreen(); // Joystick control changes the direction if (_btnLeft.Read() && _Direction != 1) { _Direction = -1; } if (_btnRight.Read() && _Direction != -1) { _Direction = 1; } if (_btnDown.Read() && _Direction != 0 - Width) { _Direction = Width; } if (_btnUp.Read() && _Direction != Width) { _Direction = 0 - Width; } // Increases the timer _Timer++; // Do we need to move? if (_Timer >= _Speed) { _DoMovement(); _Timer = 0; } }
public static void Main() { // The Adafruit LCD Shield uses a MCP23017 IC as multiplex chip Mcp23017 Mux = new Mcp23017(); // Pins 0 to 4 on the Mux-chip are connected to the buttons IGPIPort ButtonSelect = Mux.Pins[0]; IGPIPort ButtonRight = Mux.Pins[1]; IGPIPort ButtonDown = Mux.Pins[2]; IGPIPort ButtonUp = Mux.Pins[3]; IGPIPort ButtonLeft = Mux.Pins[4]; // Enables pull-ups for all the buttons for (int i = 0; i < 5; ++i) { Mux.EnablePullup(i, true); Mux.Pins[i].InvertReadings = true; } // Pins 6 to 8 on the Mux-chip are for the backlight Mux.Pins[6].Write(false); // Red backlight Mux.Pins[7].Write(true); // Green backlight Mux.Pins[8].Write(true); // Blue backlight // Pins 9 to 15 are connected to the HD44780 LCD Hd44780Lcd Display = new Hd44780Lcd( Data: Mux.CreateParallelOut(9, 4), ClockEnablePin: Mux.Pins[13], ReadWritePin: Mux.Pins[14], RegisterSelectPin: Mux.Pins[15] ); // Pressing the Select-button will shift through these colors bool[][] Colors = new bool[][] { new bool[3] { false, true, true }, new bool[3] { true, false, true }, new bool[3] { true, true, false }, new bool[3] { false, false, true }, new bool[3] { false, true, false }, new bool[3] { true, false, false }, }; int ColorIndex = 0; // Fills up the display Display.ClearDisplay(); Display.Write("Left: ? Down: ?"); Display.ChangePosition(1, 0); Display.Write("Right: ? Up: ?"); // Loops infinitely bool SelectPressed = false; while (true) { Display.ChangePosition(0, 7); Display.Write(ButtonLeft.Read() ? "1" : "0"); Display.ChangePosition(1, 7); Display.Write(ButtonRight.Read() ? "1" : "0"); Display.ChangePosition(0, 15); Display.Write(ButtonDown.Read() ? "1" : "0"); Display.ChangePosition(1, 15); Display.Write(ButtonUp.Read() ? "1" : "0"); // Handles the Select button if (ButtonSelect.Read()) { if (!SelectPressed) { SelectPressed = true; ++ColorIndex; if (ColorIndex == Colors.Length) { ColorIndex = 0; } Mux.Pins[6].Write(Colors[ColorIndex][0]); Mux.Pins[7].Write(Colors[ColorIndex][1]); Mux.Pins[8].Write(Colors[ColorIndex][2]); } } else { SelectPressed = false; } } }