示例#1
0
        void Initialize()
        {
            Console.WriteLine("Initialize hardware...");

            onboardLed = new RgbPwmLed(device: Device,
                                       redPwmPin: Device.Pins.OnboardLedRed,
                                       greenPwmPin: Device.Pins.OnboardLedGreen,
                                       bluePwmPin: Device.Pins.OnboardLedBlue,
                                       3.3f, 3.3f, 3.3f,
                                       Meadow.Peripherals.Leds.IRgbLed.CommonType.CommonAnode);

            Console.WriteLine("Create Display with SPI...");

            var config = new Meadow.Hardware.SpiClockConfiguration(6000, Meadow.Hardware.SpiClockConfiguration.Mode.Mode0);

            var bus = Device.CreateSpiBus(Device.Pins.SCK, Device.Pins.MOSI, Device.Pins.MISO, config);

            display = new Ssd1309
                      (
                device: Device,
                spiBus: bus,
                chipSelectPin: Device.Pins.D02,
                dcPin: Device.Pins.D01,
                resetPin: Device.Pins.D00
                      );

            Console.WriteLine("Create Graphics Library...");

            graphics             = new GraphicsLibrary(display);
            graphics.Rotation    = GraphicsLibrary.RotationType._270Degrees;
            graphics.CurrentFont = new Font8x12();

            graphics.Clear();
            graphics.DrawText(0, 0, "Hello");
            graphics.Show();

            Console.WriteLine("Create buttons...");

            portLeft  = Device.CreateDigitalInputPort(Device.Pins.D12, InterruptMode.EdgeFalling, ResistorMode.PullDown);
            portUp    = Device.CreateDigitalInputPort(Device.Pins.D13, InterruptMode.EdgeFalling, ResistorMode.PullDown);
            portRight = Device.CreateDigitalInputPort(Device.Pins.D07, InterruptMode.EdgeFalling, ResistorMode.PullDown);
            portDown  = Device.CreateDigitalInputPort(Device.Pins.D11, InterruptMode.EdgeFalling, ResistorMode.PullDown);

            portRight.Changed += PortRight_Changed;
            portLeft.Changed  += PortLeft_Changed;
            portUp.Changed    += PortUp_Changed;
            portDown.Changed  += PortDown_Changed;

            /*     btnUp = new PushButton(Device, Device.Pins.D13);
             *   btnLeft = new PushButton(Device, Device.Pins.D12);
             *   btnDown = new PushButton(Device, Device.Pins.D11);
             *   btnRight = new PushButton(Device, Device.Pins.D10);
             *
             *   btnUp.Clicked += BtnUp_Clicked;
             *   btnLeft.Clicked += BtnLeft_Clicked;
             *   btnDown.Clicked += BtnDown_Clicked;
             *   btnRight.Clicked += BtnRight_Clicked;  */
        }
示例#2
0
        public MeadowApp()
        {
            try
            {
                var config = new Meadow.Hardware.SpiClockConfiguration(2000, SpiClockConfiguration.Mode.Mode0);

                ISpiBus spiBus = Device.CreateSpiBus(Device.Pins.SCK, Device.Pins.MOSI, Device.Pins.MISO, config);

                Radio.OnDataReceived    += Radio_OnDataReceived;
                Radio.OnTransmitFailed  += Radio_OnTransmitFailed;
                Radio.OnTransmitSuccess += Radio_OnTransmitSuccess;

                Radio.Initialize(Device, spiBus, Device.Pins.D09, Device.Pins.D10, Device.Pins.D11);

                Radio.Address              = Encoding.UTF8.GetBytes(DeviceAddress);
                Radio.Channel              = nRF24Channel;
                Radio.PowerLevel           = PowerLevel.High;
                Radio.DataRate             = DataRate.DR250Kbps;
                Radio.IsEnabled            = true;
                Radio.IsAutoAcknowledge    = true;
                Radio.IsDyanmicAcknowledge = false;
                Radio.IsDynamicPayload     = true;

                Console.WriteLine($"Address: {Encoding.UTF8.GetString(Radio.Address)}");
                Console.WriteLine($"Channel: {Radio.Channel}");
                Console.WriteLine($"Frequency: {Radio.Frequency}");
                Console.WriteLine($"PowerLevel: {Radio.PowerLevel}");
                Console.WriteLine($"DataRate: {Radio.DataRate}");
                Console.WriteLine($"IsEnabled: {Radio.IsEnabled}");
                Console.WriteLine($"IsAutoAcknowledge: {Radio.IsAutoAcknowledge}");
                Console.WriteLine($"IsDynamicAcknowledge: {Radio.IsDyanmicAcknowledge}");
                Console.WriteLine($"IsDynamicPayload: {Radio.IsDynamicPayload}");
                Console.WriteLine($"IsInitialized: {Radio.IsInitialized}");
                Console.WriteLine($"IsPowered: {Radio.IsPowered}");

                while (true)
                {
                    string payload = "hello " + DateTime.Now.ToShortTimeString();
                    Console.WriteLine($"{DateTime.UtcNow:HH:mm:ss}-TX {payload.Length} byte message {payload}");

                    Radio.SendTo(Encoding.UTF8.GetBytes(BaseStationAddress), Encoding.UTF8.GetBytes(payload));

                    Task.Delay(10000).Wait();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);

                return;
            }
        }
示例#3
0
        public MeadowClient()
        {
            Led = new Led(Device, Device.Pins.OnboardLedGreen);

            try
            {
                sensor = new Sht31D(Device.CreateI2cBus());

                var config = new Meadow.Hardware.SpiClockConfiguration(
                    2000,
                    SpiClockConfiguration.Mode.Mode0);

                ISpiBus spiBus = Device.CreateSpiBus(
                    Device.Pins.SCK,
                    Device.Pins.MOSI,
                    Device.Pins.MISO, config);

                Radio.OnDataReceived    += Radio_OnDataReceived;
                Radio.OnTransmitFailed  += Radio_OnTransmitFailed;
                Radio.OnTransmitSuccess += Radio_OnTransmitSuccess;

                Radio.Initialize(Device, spiBus, Device.Pins.D09, Device.Pins.D10, Device.Pins.D11);
                Radio.Address = Encoding.UTF8.GetBytes(DeviceAddress);

                Radio.Channel    = nRF24Channel;
                Radio.PowerLevel = PowerLevel.Low;
                Radio.DataRate   = DataRate.DR250Kbps;
                Radio.IsEnabled  = true;

                Radio.IsAutoAcknowledge    = true;
                Radio.IsDyanmicAcknowledge = false;
                Radio.IsDynamicPayload     = true;

                Console.WriteLine($"Address: {Encoding.UTF8.GetString(Radio.Address)}");
                Console.WriteLine($"PowerLevel: {Radio.PowerLevel}");
                Console.WriteLine($"IsAutoAcknowledge: {Radio.IsAutoAcknowledge}");
                Console.WriteLine($"Channel: {Radio.Channel}");
                Console.WriteLine($"DataRate: {Radio.DataRate}");
                Console.WriteLine($"IsDynamicAcknowledge: {Radio.IsDyanmicAcknowledge}");
                Console.WriteLine($"IsDynamicPayload: {Radio.IsDynamicPayload}");
                Console.WriteLine($"IsEnabled: {Radio.IsEnabled}");
                Console.WriteLine($"Frequency: {Radio.Frequency}");
                Console.WriteLine($"IsInitialized: {Radio.IsInitialized}");
                Console.WriteLine($"IsPowered: {Radio.IsPowered}");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            while (true)
            {
                sensor.Update();

                Console.WriteLine($"{DateTime.UtcNow:HH:mm:ss}-TX T:{sensor.Temperature:0.0}C H:{sensor.Humidity:0}%");

                Led.IsOn = true;

                string values = "T " + sensor.Temperature.ToString("F1") + ",H " + sensor.Humidity.ToString("F0");

                // Stuff the 2 byte header ( payload type & deviceIdentifierLength ) + deviceIdentifier into payload
                byte[] payload = new byte[1 + Radio.Address.Length + values.Length];
                payload[0] = (byte)((1 << 4) | Radio.Address.Length);
                Array.Copy(Radio.Address, 0, payload, 1, Radio.Address.Length);
                Encoding.UTF8.GetBytes(values, 0, values.Length, payload, Radio.Address.Length + 1);

                Radio.SendTo(Encoding.UTF8.GetBytes(BaseStationAddress), payload);

                Thread.Sleep(periodTime);
            }
        }